More Info:
Advisory: EncryptionConfiguration with a KMS provider should be enabled for Secret resources so etcd does not store secrets in plaintext.Risk Level
HighAddress
SecurityCompliance Standards
- Cloudanix Best Practice
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Identify the cluster(s) to review
- On any machine with
gcloudinstalled, set the project and list clusters: - Note each cluster’s
NAME,LOCATION, and whether it is Autopilot or Standard.
- On any machine with
-
Check if secrets encryption is already enabled for each cluster
- For each cluster, run:
- Review the output:
state: ENABLEDand a non-emptykeyNamemeans KMS envelope encryption is enabled.state: DECRYPTEDor missingdatabaseEncryptionmeans this control is not satisfied.
- For each cluster, run:
-
Review the KMS key configuration and status (if enabled)
- From the
databaseEncryption.keyNameoutput, identify the KMS key:
projects/PROJECT_ID/locations/LOCATION/keyRings/RING/cryptoKeys/KEY - Verify the key exists and is enabled:
- Confirm an appropriate rotation policy and IAM permissions for GKE’s service account.
- From the
-
Decide on enabling encryption for clusters where it is not enabled
- Understand impact: this is a control-plane configuration change; enabling database encryption on an existing GKE cluster is supported but may be irreversible and can have performance implications.
- Decide per cluster whether to:
- Leave it as-is (with documented risk acceptance), or
- Enable KMS database encryption using either a new or existing CMEK key that meets your org’s key-management and IAM policies.
-
Enable database (secrets) encryption for a cluster (if required)
- Ensure you have or create a CMEK key:
- Enable encryption on the target cluster (Standard or Autopilot):
- Follow any prompts; note this may take several minutes and affects how data (including Secrets) is stored in etcd.
- Ensure you have or create a CMEK key:
-
Verify and document the final state
- Re-run the describe command to confirm encryption is now enabled and points to the intended key:
- Record for each cluster:
state,keyName, KMS key rotation policy, and the date of the change or the explicit decision to accept the risk if encryption remains disabled.
- Re-run the describe command to confirm encryption is now enabled and points to the intended key:
Using kubectl
Using kubectl
kubectl cannot enable or configure envelope/KMS encryption for Secrets in GKE; this setting is part of the GKE cluster’s control-plane configuration managed via the Google Cloud Console, gcloud CLI, or IaC. To address this finding, make the change at the cloud provider level as described in the Manual Steps section.
Automation
Automation
-
For any cluster where the script prints:
STATUS: FINDING (Secrets NOT using KMS envelope encryption)
ordatabaseEncryption.state: DECRYPTED,UNSPECIFIED, or missing,

