More Info:
Enable envelope encryption of Kubernetes secrets using a customer master key (CMK) in AWS KMS so that secrets are encrypted at rest with a customer-managed key.Risk Level
HighAddress
SecurityCompliance Standards
- CIS EKS
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Identify the cluster and its region
- From any machine with AWS CLI configured, list clusters and their regions:
- Note the exact
clusterNameandregionyou need to assess.
- From any machine with AWS CLI configured, list clusters and their regions:
-
Check if envelope encryption with a CMK is enabled for the cluster
- On any machine with AWS CLI access, run:
- If the result is
nullor an empty list[], Kubernetes secrets are not encrypted with a CMK. - If it returns an array, confirm there is an entry with
resourcescontaining"secrets"and a non-emptyprovider.keyArn.
- On any machine with AWS CLI access, run:
-
Verify the KMS key configuration and ownership
- Still on any machine with AWS CLI access, for each
keyArnreported above, get details: - Confirm:
KeyStateisEnabled.KeyManagerisCUSTOMER(indicates a customer-managed CMK, not AWS-managed).- The key policy allows the EKS cluster IAM role or node IAM role to use the key.
- Still on any machine with AWS CLI access, for each
-
Decide compliance status
- Cluster is compliant with this control if:
encryptionConfigincludesresources: ["secrets"](or includessecrets), andprovider.keyArnrefers to anEnabledCMK withKeyManager: CUSTOMER.
- Cluster is non-compliant if:
encryptionConfigis missing, orsecretsis not listed as a resource, or- The key is AWS-managed (not customer-managed), or
- The key is disabled.
- Cluster is compliant with this control if:
-
Plan remediation for a non-compliant cluster (high-level)
- Because EKS only allows enabling secrets encryption with a CMK at cluster creation time, you cannot turn this on for an existing cluster in-place.
- For non-compliant clusters, plan to:
- Create a new CMK in AWS KMS with appropriate key policy.
- Recreate the EKS cluster with secrets encryption configured to use that CMK.
- Migrate workloads, data, and secrets from the old cluster to the new, then decommission the old cluster.
-
Document evidence and remediation decision
- Save the output of the
describe-clusteranddescribe-keycommands as audit evidence. - Record for each cluster:
- Whether secrets encryption with a customer-managed CMK is enabled.
- Which CMK is used and its status.
- Your remediation plan and target timeline if the cluster is non-compliant.
- Save the output of the
Using kubectl
Using kubectl
kubectl cannot configure EKS secrets envelope encryption with AWS KMS CMKs because this setting is part of the managed control-plane configuration at cluster creation time. To remediate this finding, use the AWS console/CLI/IaC as described in the Manual Steps section to create a new cluster with secrets encryption enabled.
Automation
Automation
-
status: COMPLIANT- Secrets encryption is enabled for the cluster, and the KMS key used is customer-managed (
KeyManagerisCUSTOMER), enabled, and usable forENCRYPT_DECRYPT.
- Secrets encryption is enabled for the cluster, and the KMS key used is customer-managed (
-
status: NON-COMPLIANT - no encryptionConfig for secrets- The cluster has no envelope encryption configured for Kubernetes Secrets. This violates the control.
-
status: NON-COMPLIANT - secrets encryptionConfig present but no KMS keyArn found- Misconfigured cluster; manually inspect in the AWS console or via
aws eks describe-cluster.
- Misconfigured cluster; manually inspect in the AWS console or via
-
status: NON-COMPLIANT - secrets encryption uses non-CUSTOMER CMK or unusable key- Secrets encryption exists, but:
- Uses an AWS-managed key (
KeyManager: AWS), or - Uses a disabled key (
KeyStatenotEnabled), or - Uses a key not configured for
ENCRYPT_DECRYPT.
- Uses an AWS-managed key (
- This does not satisfy the requirement for a customer-managed CMK.
- Secrets encryption exists, but:
-
status: REVIEW - KMS key ... not describable- The script cannot determine the key details. Check IAM permissions and the key’s region/account, then review manually.

