More Info:
Kubernetes secrets at rest in etcd are not encrypted by default in OKE clusters. Use an external secrets manager such as OCI Vault or encrypt secrets at rest when creating the cluster.Risk Level
MediumAddress
SecurityCompliance Standards
- CIS OKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Determine how the cluster was created and whether Vault-based secret encryption was enabled
- On any machine with access to your IaC or console configuration, review the cluster definition:
- If using OCI CLI/SDK/Terraform, inspect the cluster resource for fields related to Vault / KMS key / secret encryption for etcd.
- In the OCI Console: go to Developer Services → Kubernetes Clusters (OKE) → [your cluster] → Details and look for any section indicating Secrets encryption / OCI Vault integration at cluster creation.
- If you find a setting that explicitly enables “Kubernetes secret encryption with OCI Vault” (or similar wording), document the Vault OCID/key used and proceed to step 6 (no further remediation needed, only periodic review).
- On any machine with access to your IaC or console configuration, review the cluster definition:
-
Inventory Kubernetes Secrets currently in use
- On any machine with kubectl access:
- Identify namespaces containing highly sensitive material (credentials, tokens, keys) and note which applications depend on them. This inventory is needed if you plan to migrate to external secret storage or recreate the cluster with encryption enabled.
- On any machine with kubectl access:
-
Decide on your target posture: external secrets vs. encrypted secrets at rest in etcd
- Based on your organization’s security requirements and current cluster lifecycle practices, choose one (or both):
- External secrets manager pattern: Store secrets in OCI Vault or another enterprise secrets manager; expose them to workloads using a secrets operator or sidecar (e.g., external-secrets controller, Vault agent, custom controller).
- Encrypted secrets at rest in etcd: Plan to recreate the OKE cluster with the “secrets at rest encrypted by OCI Vault” option enabled at creation time, then migrate workloads and secrets.
- Involve application owners, security, and platform teams since this affects deployment pipelines and runtime configuration.
- Based on your organization’s security requirements and current cluster lifecycle practices, choose one (or both):
-
Gather evidence and plan for external secrets integration (if chosen)
- On any machine with kubectl access, check if a secrets operator is already present:
- If you do not see a known operator (e.g., external-secrets, vault-agent-injector), assume you do not have external secrets in place.
- Review how workloads currently consume secrets:
- Use this to estimate effort: which deployments will need to change to consume secrets from OCI Vault (or another manager) via an operator or sidecar.
- On any machine with kubectl access, check if a secrets operator is already present:
-
Gather evidence and plan for cluster recreation with secrets encryption (if chosen)
- In the OCI Console or your IaC, confirm whether your current cluster allows toggling secrets encryption (in most OKE flows this is a cluster-creation-time choice and cannot be changed in place).
- If it cannot be changed in-place, document a migration plan:
- Create a new OKE cluster with “Encrypt Kubernetes secrets at rest in etcd using OCI Vault” enabled, referencing an existing or new Vault key.
- Export and review manifests from the old cluster:
- Exclude or sanitize secrets from this export if your process requires that they be re-injected from OCI Vault or a separate secret pipeline rather than copied as plain Kubernetes Secrets.
-
Implement and validate the chosen approach
- After deploying an external-secrets solution or recreating the cluster with Vault-backed secret encryption:
- On any machine with kubectl access, verify that workloads are running and retrieving their secrets successfully:
- For external secrets, confirm that the controller is reconciling without errors:
- For a newly created, Vault-encrypted cluster, capture evidence from the OCI Console / IaC definition showing that Kubernetes secrets at rest in etcd are encrypted with OCI Vault, and retain it with your security documentation.
- On any machine with kubectl access, verify that workloads are running and retrieving their secrets successfully:
- After deploying an external-secrets solution or recreating the cluster with Vault-backed secret encryption:
Using kubectl
Using kubectl
- Many
Opaqueor other non-service-account secrets containing credentials, API keys, database passwords, or private keys when decoded in steps 3–4. - High-sensitivity data (e.g., root DB passwords, cloud provider credentials, long-lived tokens, signing keys) revealed in decoded values.
- Workloads in steps 6a–6c relying heavily on such secrets directly, with no evidence in your IaC/docs that they are sourced from an external secrets manager (e.g., OCI Vault, external secrets operator).
- If any of the above are true and your cluster was created without enabling etcd secret encryption using OCI Vault, that combination indicates you should consider moving to an external secrets solution and (for new clusters) enabling etcd secret encryption at creation time.
Automation
Automation
-
Section 2:
- Large numbers of
Opaquesecrets across many namespaces indicate widespread use of native Kubernetes secrets, which rely on etcd at-rest protection. - This is not inherently wrong, but all such secrets are in scope for at-rest encryption decisions.
- Large numbers of
-
Section 3:
- Lines showing secrets whose names imply passwords, tokens, keys, certificates, or credentials (and non-
Opaquetypes likekubernetes.io/tls,kubernetes.io/dockerconfigjson) highlight high‑value secrets stored in etcd. - If many critical credentials appear here, but the cluster was not created with OCI Vault-based etcd encryption and you are not using an external secrets manager, this is a concern for CIS 4.4.2.
- Lines showing secrets whose names imply passwords, tokens, keys, certificates, or credentials (and non-
-
Section 4:
- Large
LENGTH_BYTESvalues (big keys, blobs, cert bundles) for secrets related to production systems increase the impact if etcd is not encrypted with OCI Vault.
- Large
-
Section 5:
- If you do not see controllers that can integrate with external secret stores (e.g., external-secrets, Vault, sealed-secrets) and you also know the cluster’s etcd is not Vault-encrypted, that suggests you are fully dependent on unencrypted-at-rest Kubernetes secrets in etcd.
- Recreate the cluster with “Kubernetes secrets in etcd encrypted using OCI Vault”, and/or
- Introduce an external secrets manager pattern (e.g., syncing from OCI Vault into Kubernetes).

