默认情况下,Dataproc Metastore 会对静态客户内容进行加密。Dataproc Metastore 会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Dataproc Metastore)结合使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问 Dataproc Metastore 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)。
注意事项
您无法在现有服务上启用 CMEK。
您无法轮替启用了 CMEK 的服务使用的密钥。
您无法使用 CMEK 来加密传输中的用户数据,例如用户查询和响应。
启用了 CMEK 的服务不支持 Data Catalog 同步。更新启用了 CMEK 的服务以启用 Data Catalog 同步失败。您无法创建同时启用这两项功能的新服务。
当您使用 Cloud EKM 密钥时,Google 无法控制外部管理的密钥的可用性。如果密钥在 Dataproc Metastore 服务创建期间不可用,则服务创建将失败。创建 Dataproc Metastore 服务后,如果密钥不可用,则该服务也不可用,直到密钥可用为止。如需了解使用外部密钥的更多注意事项,请参阅 Cloud EKM 注意事项。
Cloud Monitoring 数据库不支持 CMEK 加密。 Google Cloud会改用 Google 加密密钥来保护 Dataproc Metastore 服务的名称和服务配置。
如果您希望 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
在 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
向 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
向 Cloud Storage 服务账号授予权限:
gcloud storage service-agent --authorize-cmek projects/KEY_PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
使用 CMEK 密钥创建 Dataproc Metastore 服务
在创建服务期间,您可以按照以下步骤配置 CMEK 加密:
控制台
在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:
在 Dataproc Metastore 页面顶部,点击创建。
此时会打开创建服务页面。
根据需要配置服务。
在加密下,点击使用客户管理的加密密钥 (CMEK)。
选择客户管理的密钥。
点击提交。
验证服务的加密配置:
在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:
在 Dataproc Metastore 页面上,点击您要查看的服务的名称。
该服务的服务详细信息页面会打开。
在配置标签页下,验证详细信息是否将 CMEK 显示为已启用。
gcloud
运行
gcloud metastore services create
命令创建具有 CMEK 加密的服务:gcloud metastore services create SERVICE \ --encryption-kms-key=KMS_KEY
替换以下内容:
SERVICE
:新服务的名称。KMS_KEY
:引用密钥资源 ID。
验证创建操作是否成功。
从启用了 CMEK 的服务导入数据以及将数据导出到启用了 CMEK 的服务
如果您希望在导入期间仍使用客户管理的密钥加密数据,则必须先在 Cloud Storage 存储桶上设置 CMEK,然后再从中导入数据。
您可以从不受 CMEK 保护的 Cloud Storage 存储桶导入。导入后,Dataproc Metastore 中存储的数据会根据目标服务的 CMEK 设置进行保护。
导出时,系统会根据目标存储桶的 CMEK 设置保护导出的数据库转储。