Skip to main content

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

Medium

Address

Security

Compliance Standards

  • CIS GKE

Triage and Remediation

Remediation

Manual Steps

  1. Identify node pools and check current boot disk CMEK use
    • On any machine with gcloud configured for the project:
      For each node pool name returned:
      • If config.bootDiskKmsKey is empty, that node pool’s boot disks are not using CMEK.
  2. 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.
  3. Verify Cloud KMS key readiness and permissions
    • On any machine with gcloud access:
    • 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) have roles/cloudkms.cryptoKeyEncrypterDecrypter on this key.
  4. Plan node pool replacement/migration strategy
    • Determine disk type (pd-standard or pd-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.
  5. Create replacement CMEK‑enabled node pools and migrate workloads
    • For each node pool that must be CMEK‑encrypted, on any machine with gcloud access:
    • Cordon and drain old nodes, then delete the old node pool when workloads are stable on the new one:
  6. 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.
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.
How to interpret the output
  • 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_CMEK is false, and
    • DISK_TYPE is pd-standard or pd-ssd (i.e., the node boot disks are not using a customer-managed key).
  • For compliant node pools:
    • USES_CMEK is true, and
    • BOOT_DISK_KMS_KEY contains a full KMS key resource: projects/<key_project_id>/locations/<location>/keyRings/<ring_name>/cryptoKeys/<key_name>.