Profile applicability: Level 2
Use Customer-Managed Encryption Keys (CMEK) to encrypt node boot disks using keys
managed within Cloud Key Management Service (Cloud KMS).
GCE persistent disks are encrypted at rest by default using envelope encryption with
keys managed by Google. For additional protection, users can manage the Key Encryption
Keys using Cloud KMS.
![]() |
NotePersistent disks are encrypted at rest by default, but are not encrypted using Customer-Managed
Encryption Keys by default. By default, the Compute Engine Persistent Disk CSI Driver
is not provisioned within the cluster.
|
Impact
Encryption of dynamically-provisioned attached disks requires the use of the self-provisioned
Compute Engine Persistent Disk CSI Driver v0.5.1 or higher.
If CMEK is being configured with a regional cluster, the cluster must run GKE 1.14
or higher.
Audit
Using Google Cloud Console:
- Go to Kubernetes Engine website.
- Click on each cluster, and click on any Node pools.
- On the Node pool Details page, under the Security heading, check that Boot disk encryption type is set to Customer managed with the desired key.
Using Command Line:
Run this command:
gcloud container node-pools describe $NODE_POOL --cluster $CLUSTER_NAME --zone $COMPUTE_ZONE
Verify that the output of the above command includes a
diskType
of either pd-standard
, pd-balanced
, or pd-ssd
, and the bootDiskKmsKey
is specified as the desired key.Remediation
This cannot be remediated by updating an existing cluster. The node pool must either
be recreated or a new cluster created.
Using Google Cloud Console:
To create a new node pool:
- Go to Kubernetes Engine website.
- Select Kubernetes clusters for which node boot disk CMEK is disabled.
- Click ADD NODE POOL.
- In the Nodes section, under machine configuration, ensure Boot disk type is Standard persistent disk or SSD persistent disk.
- Select Enable customer-managed encryption for Boot Disk and select the Cloud KMS encryption key to be used.
- Click CREATE.
To create a new cluster:
- Go to Kubernetes Engine website.
- Click CREATE and click CONFIGURE for the required cluster mode.
- Under NODE POOLS, expand the default-pool list and click Nodes.
- In the Configure node settings pane, select Standard persistent disk or SSD Persistent Disk as the Boot disk type.
- Select Enable customer-managed encryption for Boot Disk check box and choose the Cloud KMS encryption key to be used.
- Configure the rest of the cluster settings as required.
- Click CREATE.
Using Command Line:
Create a new node pool using customer-managed encryption keys for the node boot disk,
of
<disk_type>
either pd-standard
or pd-ssd
: gcloud container node-pools create <cluster_name> --disk-type <disk_type> --boot-disk-kms-key projects/<key_project_id>/locations/<location>/keyRings/<ring_name> /cryptoKeys/<key_name>
Create a cluster using customer-managed encryption keys for the node boot disk, of
<disk_type>
either pd-standard
or pd-ssd
:gcloud container clusters create <cluster_name> --disk-type <disk_type> --boot-disk-kms-key projects/<key_project_id>/locations/<location>/keyRings/<ring_name> /cryptoKeys/<key_name>