Skip to main content

More Info:

Encrypt GKE Persistent Disks with Customer-Managed Encryption Keys so you control the key lifecycle for data at rest. CMEK provides stronger control than default Google-managed encryption.

Risk Level

Medium

Address

Security

Compliance Standards

  • CIS GKE

Triage and Remediation

Remediation

Manual Steps

  1. Inventory and review existing Persistent Disks and their encryption
    • On any machine with gcloud access, list all PDs used by the cluster’s PVs:
      For each PD name returned (replace DISK_NAME, LOCATION, PROJECT_ID):
    • Record whether kmsKeyName is present and which key is used. Disks without kmsKeyName use Google-managed keys.
  2. Review or create a suitable CMEK key in Cloud KMS
    • On any machine with gcloud access, list existing keys that could be used for PD encryption:
    • If no appropriate key exists, create one per your org’s policy (algorithm, rotation, IAM). Ensure key location matches or is compatible with your cluster’s region/zone.
  3. Verify IAM and key policy allow GKE to use the CMEK key
    • On any machine with gcloud access, get the GKE node service account (or default compute service account):
    • Grant it the necessary roles on the KMS key (e.g. roles/cloudkms.cryptoKeyEncrypterDecrypter), adjusting for your security policy:
  4. Decide per-PV remediation: recreate disks with CMEK or accept current state
    • For each disk without CMEK, decide:
      • If data is non-critical or can be migrated: plan to create a new PD with CMEK and migrate workload data (e.g., via backup/restore, filesystem copy, or application-level migration).
      • If data is critical and difficult to migrate: document the business justification for continuing with Google-managed keys until a migration window is available.
    • Note that existing PDs cannot be “converted” in-place from Google-managed to CMEK; they must be recreated and data migrated.
  5. Implement CMEK for new PD-backed PVs and workloads
    • For disks created via gcloud, specify the key:
    • For dynamically provisioned PVs, update your StorageClass (via IaC or console) to use the CMEK key per the GKE CMEK documentation, so future PVs are backed by CMEK-encrypted PDs.
  6. Verify remediation
    • After recreating/migrating PVs and/or updating StorageClasses, re-run the disk inspection for relevant PDs:
    • Confirm kmsKeyName is set to the expected KMS key for all disks that must comply with this control.
kubectl cannot enable or change Customer-Managed Encryption Keys (CMEK) for GKE Persistent Disks, because CMEK is configured at the GCP/GKE and disk/IaC level, not via Kubernetes API objects. Use the Google Cloud Console, gcloud CLI, or your IaC to configure CMEK as described in the Manual Steps section.