客户管理的加密密钥 (CMEK)

使用 Cloud Dataproc 时,集群和作业数据存储在与集群中的 Compute Engine 虚拟机相关联的永久性磁盘 (PD) 上以及 Cloud Storage 暂存存储分区中。此永久性磁盘和存储分区数据均采用 Google 生成的数据加密密钥 (DEK) 和密钥加密密钥 (KEK) 进行了加密。借助 CMEK 功能,您可以创建、使用和撤消密钥加密密钥 (KEK)。Google 仍然负责控制数据加密密钥 (DEK)。如需详细了解 Google 数据加密密钥,请参阅静态加密

使用 CMEK

您可以使用 CMEK 加密与 Cloud Dataproc 集群中的虚拟机相关联的永久性磁盘上的数据,和/或写入 Cloud Dataproc 暂存存储分区的集群元数据和作业驱动程序输出。要将 CMEK 分别用于集群的永久性磁盘、Cloud Storage 存储分区或两者,请先执行下文中的第 1 步和第 2 步,然后执行第 3 步、第 4 步或第 5 步。

  1. 使用 Cloud Key Management Service (Cloud KMS) 创建密钥。复制资源名称,您可以在后续步骤使用该名称。资源名称的结构如下:
    projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    
  2. 要让 Compute Engine 和 Cloud Storage 服务帐号能够使用您的密钥,请执行以下操作:
    1. 按照 Compute Engine→使用 Cloud KMS 密钥保护资源→准备工作中的第 5 项,将 Cloud KMS CryptoKey Encrypter/Decrypter 角色分配给 Compute Engine 服务帐号。
    2. 将 Cloud KMS CryptoKey Encrypter/Decrypter 角色分配给 Cloud Storage 服务帐号
  3. 您可以使用 gcloud 命令行工具或 Cloud Dataproc API,在与 Cloud Dataproc 集群中的虚拟机关联的永久性磁盘上设置您在第 1 步中创建的密钥。

    gcloud 命令

    使用 gcloud dataproc clusters create 命令创建集群时,将在第 1 步中获取的 Cloud KMS 资源 ID 传递给 --gce-pd-kms-key 标志。

    示例:

    gcloud dataproc clusters create my-cluster-name \
        --gce-pd-kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \
        other args ...
    

    您可以使用 gcloud 命令行工具验证密钥设置。

    gcloud dataproc clusters describe cluster-name
    
    ...
    configBucket: dataproc- ...
    encryptionConfig:
    gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    ...
    

    REST API

    使用 ClusterConfig.EncryptionConfig.gcePdKmsKeyName 作为 cluster.create 请求的一部分。

    您可以通过发出 clusters.get 请求来验证密钥设置。返回的 JSON 包含以下 gcePdKmsKeyName 列表:

    ...
    {
    "projectId": "project-id",
    "clusterName": "cluster-name",
    "config": {
       "encryptionConfig": {
      "gcePdKmsKeyName": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name"
    }
    },
    
  4. 要在 Cloud Dataproc 使用的 Cloud Storage 存储分区中使用 CMEK 来读取/写入集群和作业数据,请创建支持 CMEK 的存储分区。注意:在存储分区中添加密钥时,请使用第 1 步中创建的密钥。然后,在创建集群时,请将存储分区名称传递至 gcloud dataproc clusters create 命令。

    示例

    gcloud dataproc clusters create my-cluster \
        --bucket name-of-CMEK-bucket \
        other args ...
    

    如果您的作业采用存储分区参数,您还可以将支持 CMEK 的存储分区传递至 gcloud dataproc jobs submit 命令(请参阅下述 PySpark 作业提交示例中的 ...cmek-bucket...存储分区参数)。

    示例
    gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \
        --cluster clustername \
        -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
    
  5. 要对集群中的永久性磁盘和 Cloud Dataproc 使用的 Cloud Storage 存储分区使用 CMEK,请将 --gce-pd-kms-key--bucket 标志传递给 gcloud dataproc clusters create 命令,如第 3 步和第 4 步所述。您可以为永久性磁盘数据和存储分区数据创建并使用单独的密钥。
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Dataproc 文档
需要帮助?请访问我们的支持页面