将 CMEK 与 Dataproc Serverless 结合使用

如果您使用 Dataproc Serverless,则数据存储在底层无服务器基础架构的磁盘上以及 Cloud Storage 暂存存储桶中。此数据使用 Google 生成的数据加密密钥 (DEK) 和密钥加密密钥 (KEK) 进行加密。您可以使用客户管理的加密密钥 (CMEK) 来创建、使用和撤消密钥加密密钥 (KEK)。Google 保留对数据加密密钥 (DEK) 的控制权。如需详细了解 Google 数据加密密钥,请参阅默认静态加密

使用 CMEK

请按照本部分中的步骤,使用 CMEK 加密 Dataproc Serverless 写入永久性磁盘和 Dataproc 暂存存储桶的数据。

  1. 使用 Cloud Key Management Service (Cloud KMS) 创建密钥。

  2. 复制资源名称。

    资源名称的结构如下:
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

  3. 允许 Compute Engine、Dataproc 和 Cloud Storage Service Agent 服务帐号使用您的密钥:

    1. 请参阅使用 Cloud KMS 密钥保护资源 > 所需角色,以将 Cloud KMS CryptoKey Encrypter/Decrypter 角色分配给 Compute Engine Service Agent 服务帐号。如果此服务帐号未列在 Google Cloud 控制台的 IAM 页面上,请点击包括 Google 提供的角色授权以将其列出。
    2. Cloud KMS CryptoKey Encrypter/Decrypter 角色分配给 Dataproc 服务代理服务帐号。您可以使用 Google Cloud CLI 分配角色:

       gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      替换以下内容:

      KMS_PROJECT_ID:运行 Cloud KMS 的 Google Cloud 项目的 ID。此项目也可以是运行 Dataproc 资源的项目。

      PROJECT_NUMBER:运行 Dataproc 资源的 Google Cloud 项目的项目编号(而不是项目 ID)。

    3. 如果 Dataproc Service Agent 角色未附加到 Dataproc Service Agent 服务帐号,则向附加到 Dataproc Service Agent 服务帐号的自定义角色添加 serviceusage.services.use 权限。如果 Dataproc 服务代理角色关联到了 Dataproc 服务代理服务帐号,您可以跳过此步骤。

    4. 按照相应步骤在存储桶上添加密钥

  4. 当您提交批量工作负载时:

    1. Batch kmsKey 参数中指定密钥。
    2. Batch stagingBucket 参数中指定 Cloud Storage 存储桶的名称。