使用客户管理的加密密钥

本页面介绍了如何使用客户管理的加密密钥 (CMEK) 保护 Dataproc Metastore 服务。CMEK 使用可通过 Cloud Key Management Service 控制的密钥对静态数据进行加密。您可以将密钥以软件密钥形式存储在 HSM 集群中,或在外部存储。

准备工作

如果您希望 Dataproc Metastore 服务在 VPC Service Controls 边界内运行,则必须将 Cloud Key Management Service (Cloud KMS) API 添加到该边界中。

为 Dataproc Metastore 配置 CMEK 支持

如需为 Dataproc Metastore 配置 CMEK 支持,您必须先向 Dataproc Metastore 和 Cloud Storage 服务账号授予 Cloud KMS 密钥权限。然后,您可以创建使用 CMEK 密钥的 Dataproc Metastore 服务。

授予 Cloud KMS 密钥权限

使用以下命令为 Dataproc Metastore 授予 Cloud KMS 密钥权限:

gcloud

  1. 在 Cloud KMS 中创建 CMEK 密钥(如果尚未创建)。 以下命令示例展示了如何创建软件密钥:

    gcloud config set project PROJECT_ID
    gcloud kms keyrings create KEY_RING \
      --project KEY_PROJECT \
      --location=LOCATION
    gcloud kms keys create KEY_NAME \
      --project KEY_PROJECT \
      --location=LOCATION \
      --keyring=KEY_RING \
      --purpose=encryption
    

    同样,您也可以创建 HSM 密钥创建 EKM 密钥

  2. 向 Dataproc Metastore Service Agent 服务账号授予权限:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
      --location LOCATION \
      --keyring KEY_RING \
      --member=serviceAccount:$(gcloud beta services identity create \
      --service=metastore.googleapis.com 2>&1 | awk '{print $4}') \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  3. 向 Cloud Storage 服务账号授予权限:

    gsutil kms authorize -k projects/KEY_PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

使用 CMEK 密钥创建 Dataproc Metastore 服务

在创建服务期间,您可以按照以下步骤配置 CMEK 加密:

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:

    转到 Dataproc Metastore

  2. Dataproc Metastore 页面顶部,点击创建

    此时会打开创建服务页面。

  3. 根据需要配置您的服务。

  4. 加密下,点击使用客户管理的加密密钥 (CMEK)

  5. 选择客户管理的密钥。

  6. 点击提交

验证服务的加密配置:

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:

    转到 Google Cloud 控制台

  2. Dataproc Metastore 页面上,点击要查看的服务的名称。

    该服务的服务详细信息页面会打开。

  3. 配置标签页下,验证详细信息显示 CMEK 已启用。

gcloud

  1. 运行 gcloud metastore services create 命令以创建使用 CMEK 加密的服务:

    gcloud metastore services create SERVICE \
       --encryption-kms-key=KMS_KEY
    

    替换以下内容:

    • SERVICE:新服务的名称。
    • KMS_KEY:引用密钥资源 ID。
  2. 验证创建操作是否成功。

受 Google 提供的加密密钥保护的 Dataproc Metastore 数据

Cloud Monitoring 数据库不支持 CMEK 加密。Google Cloud 会改用 Google 加密密钥来保护 Dataproc Metastore 服务的名称和服务配置。

从启用了 CMEK 的服务导入数据以及将数据导出到启用了 CMEK 的服务

如果您希望在导入期间仍使用客户管理的密钥加密数据,则必须先在 Cloud Storage 存储桶上设置 CMEK,然后再从中导入数据。

您可以从不受 CMEK 保护的 Cloud Storage 存储桶导入。导入后,Dataproc Metastore 中存储的数据会根据目标服务的 CMEK 设置进行保护。

导出时,系统会根据目标存储桶的 CMEK 设置保护导出的数据库转储。

Dataproc Metastore 的 CMEK 注意事项

  • 为启用了 CMEK 的服务停用或删除 CMEK 会导致服务无法使用且无法恢复。

    • 数据会永久丢失。
  • 您无法在现有服务上启用 CMEK。

  • 您无法轮替启用了 CMEK 的服务使用的密钥。

  • 启用了 CMEK 的服务不支持 Data Catalog 同步。更新启用了 CMEK 的服务以启用 Data Catalog 同步失败。您无法创建同时启用这两项功能的新服务。

  • 您无法使用 CMEK 来加密传输中的用户数据,例如用户查询和响应。

  • 使用 Cloud EKM 密钥时,Google 无法控制外部管理的密钥的可用性。如果密钥在 Dataproc Metastore 服务创建期间变为不可用,则服务创建将失败。创建 Dataproc Metastore 服务后,如果密钥不再可用,服务也会变为不可用,直到密钥可用为止。如需了解使用外部密钥时的更多注意事项,请参阅 Cloud EKM 注意事项

后续步骤