将 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. 复制资源名称。

    <ph type="x-smartling-placeholder">
    </ph>
    资源名称的结构如下:
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

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

    1. 请参阅使用 Cloud KMS 密钥保护资源 &gt; 所需角色Cloud KMS CryptoKey Encrypter/Decrypter 角色分配给 Compute Engine Service Agent 服务账号。 如果此服务账号未列出 在 Google Cloud 控制台的 IAM 页面上,点击包括 Google 提供的角色授权 列出它
    2. 分配 Cloud KMS CryptoKey Encrypter/Decrypter Dataproc Service Agent 服务账号授予此角色。 您可以使用 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:您执行创建工作的 Google Cloud 项目的 ID 运行 Cloud KMS此项目也可以是运行 Dataproc 资源的项目。

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

    3. 对运行 Dataproc Serverless 资源的项目启用 Cloud KMS API。

    4. 如果 Dataproc Service Agent 角色未关联到 Dataproc Service Agent 服务账号, 然后将 serviceusage.services.use 权限添加到自定义 连接到 Dataproc 服务代理。如果 Dataproc 服务代理角色为 连接到 Dataproc 服务代理,则可以跳过此步骤。

    5. 按照相关步骤操作 在存储桶中添加密钥

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

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