More Info:
Encrypt GKE node boot disks with Customer-Managed Encryption Keys so the key lifecycle for node disks is under your control. CMEK provides stronger governance than default encryption.Risk Level
MediumAddress
SecurityCompliance Standards
- CIS GKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Identify node pools and check current boot disk CMEK use
- On any machine with
gcloudconfigured for the project:For each node pool name returned:- If
config.bootDiskKmsKeyis empty, that node pool’s boot disks are not using CMEK.
- If
- On any machine with
-
Review CMEK policy/requirements with security/compliance
- Confirm which clusters/node pools must use CMEK, what key project/location/ring/key must be used, and whether any node pools are exempt (e.g. non‑prod, short‑lived test).
- Decide whether to migrate all non‑CMEK node pools now or in phases, based on risk and change windows.
-
Verify Cloud KMS key readiness and permissions
- On any machine with
gcloudaccess: - Ensure the key is
ENABLED, in the correct location/region for your cluster, and that the GKE node service accounts (or the project’s Compute Engine default service account) haveroles/cloudkms.cryptoKeyEncrypterDecrypteron this key.
- On any machine with
-
Plan node pool replacement/migration strategy
- Determine disk type (
pd-standardorpd-ssd) and size currently in use for each non‑CMEK node pool: - Decide per node pool whether you will:
- Create a new CMEK‑enabled node pool and cordon/drain/migrate workloads, then delete the old pool (recommended), or
- Recreate the entire cluster with CMEK from the start if many pools/configs must change.
- Determine disk type (
-
Create replacement CMEK‑enabled node pools and migrate workloads
- For each node pool that must be CMEK‑encrypted, on any machine with
gcloudaccess: - Cordon and drain old nodes, then delete the old node pool when workloads are stable on the new one:
- For each node pool that must be CMEK‑encrypted, on any machine with
-
Verify remediation and document exceptions
- Re-run the audit for the cluster:
- Confirm all required node pools now show the correct non‑empty
config.bootDiskKmsKey. - For any node pool intentionally left without CMEK, record the justification and approval per your governance process.
- Re-run the audit for the cluster:
Using kubectl
Using kubectl
kubectl cannot configure Customer-Managed Encryption Keys (CMEK) for GKE node boot disks, because this is a Google Cloud / cluster provisioning setting, not a Kubernetes API object. To remediate, use the Google Cloud Console,
gcloud CLI, or your IaC as described in the Manual Steps section.Automation
Automation
- Each row shows:
CLUSTER,NODE_POOL,LOCATION,DISK_TYPE,USES_CMEK,BOOT_DISK_KMS_KEY. - A problem for this control is any node pool where:
USES_CMEKisfalse, andDISK_TYPEispd-standardorpd-ssd(i.e., the node boot disks are not using a customer-managed key).
- For compliant node pools:
USES_CMEKistrue, andBOOT_DISK_KMS_KEYcontains a full KMS key resource:projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/cryptoKeys/<key_name>.

