# 8.1 Ensure Dataproc Clusters Are Encrypted Using Customer-Managed Encryption Keys (CMEK) (Automated)

- Source: https://support.icompaas.com/support/solutions/articles/62000233055-8-1-ensure-dataproc-clusters-are-encrypted-using-customer-managed-encryption-keys-cmek-automated-
- Section: [Solutions](https://support.icompaas.com/support/solutions) › [GCP Benchmarks](https://support.icompaas.com/support/solutions/62000112667) › [GCP Knowledge Bases](https://support.icompaas.com/support/solutions/folders/62000169178)
- Last updated: 2026-05-29
- Publisher: iCompaas, Inc. (https://www.icompaas.com)

#### Profile Applicability

-   Level 2

#### Description:

Dataproc clusters store data on Persistent Disks (PDs) associated with Compute Engine VMs and in a Cloud Storage staging bucket. By default, this data is encrypted using Google-generated data encryption keys (DEK) and key encryption keys (KEK). However, enabling Customer-Managed Encryption Keys (CMEK) allows users to create, use, and revoke their own encryption keys for additional security and control. While Google still manages the DEK, CMEK gives users full control over the KEK.

#### Rationale:

CMEK provides an additional layer of security and control over the encryption process. By using customer-managed encryption keys, organizations can:

-   Protect sensitive data with encryption keys managed entirely by them.
    
-   Meet compliance and regulatory requirements by demonstrating control over data encryption.
    
-   Mitigate the risk of unauthorized access by maintaining strict control over the encryption keys.
    

#### Impact:

Implementing CMEK introduces administrative overhead as users are responsible for creating, protecting, and managing the lifecycle of encryption keys.

Default Value

Dataproc clusters use Google-managed keys for encryption by default.

#### Audit Steps:

##### Using Google Cloud Console

1.  Navigate to the [Dataproc Clusters page](https://console.cloud.google.com/dataproc/clusters).
    
2.  Select the desired project from the dropdown list.
    
3.  For each cluster:
    
    -   Click the cluster name to open the details page.
        
    -   Go to the Configurations tab.
        
    -   Check the Encryption type attribute under the Configurations section. If it is set to Google-managed key, the cluster is not encrypted using CMEK.
        
4.  Repeat this process for all Dataproc clusters in the project.
    
5.  Switch projects using the dropdown list and repeat the procedure.
    

##### Using Google Cloud CLI

List all Dataproc clusters in a specific region:

gcloud dataproc clusters list --region='us-central1'

Get encryption details for a specific cluster:

gcloud dataproc clusters describe <CLUSTER\_NAME> --region=us-central1 --flatten=config.encryptionConfig.gcePdKmsKeyName

1.  If the command output shows null, the cluster is not encrypted using CMEK.
    

Repeat these steps for all clusters in other regions and project

gcloud config set project <PROJECT\_ID>

Remediation Steps:

##### Using Google Cloud Console

1.  Navigate to the [Dataproc Clusters page](https://console.cloud.google.com/dataproc/clusters).
    

                  ![](https://support.icompaas.com/assets/kb/d0e8d1849b012e83.png)

2.  Select the appropriate project.
    

           ![](https://support.icompaas.com/assets/kb/e00e0c52fd070cb2.png)

3.  Create a new cluster:
    
    -   Click Create Cluster.
        

                  ![](https://support.icompaas.com/assets/kb/bd4da8d532e4a5b4.png)

-   Under Set up cluster, specify:
    
    -   A unique cluster name.
        

                                       ![](https://support.icompaas.com/assets/kb/a0e6acff1d59bc5f.png)

-   The desired location for deployment.
    

                                        ![](https://support.icompaas.com/assets/kb/251ec1dfa5ef5744.png)

-   Under Manage security, select Customer-managed key and choose the desired CMEK from the dropdown list.
    
-   Ensure the KMS key has the CryptoKey Encrypter/Decrypter role assigned to the Dataproc service account (serviceAccount:service-<project\_number>@computesystem.iam.gserviceaccount.com).
    

4.  Create the cluster and migrate workloads from the old cluster to the new one.
    
5.  Delete the old cluster:
    
    -   Select the old cluster and click Delete cluster.
        
    -   Confirm the deletion.
        

##### Using Google Cloud CLI

Ensure the KMS key has the CryptoKey Encrypter/Decrypter role assigned to the Dataproc service account:

gcloud kms keys add-iam-policy-binding <KEY\_NAME> --keyring=<KEYRING\_NAME> --location=<LOCATION> --member="serviceAccount:service-<PROJECT\_NUMBER>@computesystem.iam.gserviceaccount.com" --role="roles/cloudkms.cryptoKeyEncrypterDecrypter

Create a new CMEK-enabled cluster:

gcloud dataproc clusters create <CLUSTER\_NAME> --region=us-central1 --gce-pd-kms-key=<KMS\_KEY\_RESOURCE>

Migrate workloads to the new cluster and delete the old cluster:

gcloud dataproc clusters delete <OLD\_CLUSTER\_NAME> --region=us-central1

Switch projects and repeat the procedure:

gcloud config set project <PROJECT\_ID>

Backout Plan:

Step 1: Revert Encryption to Google-Managed Keys

If CMEK causes service disruptions, create a new cluster without CMEK:

gcloud dataproc clusters create <NEW\_CLUSTER\_NAME> --region=us-central1

-     Migrate workloads to the new cluster and delete the CMEK-encrypted cluster.
    

Step 2: Notify Stakeholders

-   Inform security and DevOps teams before making encryption changes.
    

References:

1\. [Dataproc Encryption with CMEK](https://cloud.google.com/docs/security/encryption/default-encryption)

CIS Controls:

<table style="border:none;border-collapse:collapse"><colgroup style="font-family:&quot;Helvetica Neue&quot;"><col style="font-family:&quot;Helvetica Neue&quot;"><col style="font-family:&quot;Helvetica Neue&quot;"><col style="font-family:&quot;Helvetica Neue&quot;"><col style="font-family:&quot;Helvetica Neue&quot;"><col style="font-family:&quot;Helvetica Neue&quot;"></colgroup><tbody><tr style="height:38.5pt;font-family:&quot;Helvetica Neue&quot;"><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;text-align:justify;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;"><span style="font-size:14px"><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:700;font-family:&quot;Helvetica Neue&quot;">Control</span></span></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;text-align:justify;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;"><span style="font-size:14px"><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:700;font-family:&quot;Helvetica Neue&quot;">Description</span></span></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;text-align:justify;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;"><span style="font-size:14px"><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:700;font-family:&quot;Helvetica Neue&quot;">IG 1</span></span></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;text-align:justify;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;"><span style="font-size:14px"><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:700;font-family:&quot;Helvetica Neue&quot;">IG 2</span></span></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;text-align:justify;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;"><span style="font-size:14px"><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:700;font-family:&quot;Helvetica Neue&quot;">IG 3</span></span></span></p></td></tr><tr style="height:52pt;font-family:&quot;Helvetica Neue&quot;"><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:left"><span style="font-size:14px"><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-family:&quot;Helvetica Neue&quot;">3.11 Encrypt Sensitive Data at Rest</span></span></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:left"><span style="font-size:14px"><strong><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:400;font-family:&quot;Helvetica Neue&quot;">Encrypt sensitive data stored in servers, applications, and databases. CMEK provides greater control over encryption compared to default Google-managed keys.</span></span></strong></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:justify"><span style="font-size:14px"><strong><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:400;font-family:&quot;Helvetica Neue&quot;">✅</span></span></strong></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:justify"><span style="font-size:14px"><strong><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:400;font-family:&quot;Helvetica Neue&quot;">✅</span></span></strong></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><div style="text-align:justify"><span style="font-size:14px"><strong><span style="font-family:Helvetica Neue"><br style="font-family:&quot;Helvetica Neue&quot;"></span></strong></span></div></td></tr><tr style="height:52pt"><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:left"><span style="font-size:14px"><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-family:&quot;Helvetica Neue&quot;">14.8 Encrypt Sensitive Information at Rest</span></span></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:left"><span style="font-size:14px"><strong><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:400;font-family:&quot;Helvetica Neue&quot;">Encrypt sensitive data at rest using encryption tools that require secondary authentication, enhancing data protection against unauthorized access.</span></span></strong></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:justify"><span style="font-size:14px"><strong><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:400;font-family:&quot;Helvetica Neue&quot;">✅</span></span></strong></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word;font-family:&quot;Helvetica Neue&quot;"><p dir="ltr" style="line-height:1.38;margin-bottom:0pt;font-family:&quot;Helvetica Neue&quot;;text-align:justify"><span style="font-size:14px"><strong><span style="font-family:Helvetica Neue"><span style="color:rgb(0, 0, 0);font-weight:400;font-family:&quot;Helvetica Neue&quot;">✅</span></span></strong></span></p></td><td style="padding:5pt;overflow:hidden;overflow-wrap:break-word"><div style="text-align:justify"><span style="font-size:14px"><strong><span style="font-family:&quot;Helvetica Neue&quot;"><br></span></strong></span></div></td></tr></tbody></table>

## Related compliance guidance

- [SOC 2 compliance: a practical implementation guide for cloud-native SaaS teams](https://support.icompaas.com/compliance/soc-2-trust-services-criteria): Configuration checks like this one are the technical half of a SOC 2 / ISO 27001 programme — the guide shows where they fit, what else an auditor expects, and how to evidence them.
- [ISO/IEC 27001:2022 compliance: a practical implementation guide](https://support.icompaas.com/compliance/iso-27001-2022): ISO 27001 Annex A.8 (technological controls) is where cloud hardening evidence lands; the guide shows how to run the ISMS around it.
