默认情况下,Dataproc Metastore 会对静态客户内容进行加密。Dataproc Metastore 会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Dataproc Metastore)搭配使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问 Dataproc Metastore 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)。
准备工作
注意事项
将 Dataproc Metastore 与 CMEK 搭配使用时,请考虑以下几点。
单区域和多区域 Dataproc Metastore 服务(预览版)均支持 CMEK。
Cloud Monitoring 数据库不支持 CMEK 加密。Google Cloud 会改用 Google 加密密钥来保护 Dataproc Metastore 服务的名称和服务配置。
如果您希望 Dataproc Metastore 服务在 VPC Service Controls 边界内运行,则必须将 Cloud Key Management Service (Cloud KMS) API 添加到边界。
当您使用 Cloud 外部密钥管理器密钥时,Google 无法控制外部管理的密钥的可用性。如果密钥在 Dataproc Metastore 服务创建期间不可用,则服务创建会失败。创建 Dataproc Metastore 服务后,如果密钥不可用,该服务将不可用,直到密钥重新可用为止。如需了解使用外部密钥的更多注意事项,请参阅 Cloud EKM 注意事项。
限制
将 Dataproc Metastore 与 CMEK 搭配使用时,请考虑以下限制。
您无法在现有服务上启用 CMEK。
您无法轮替启用了 CMEK 的服务使用的 CMEK。
您无法使用 CMEK 来加密传输中的用户数据,例如用户查询和响应。
为 Dataproc Metastore 配置 CMEK
如果您还没有 Cloud KMS 密钥,可以为您的 Dataproc Metastore 服务创建一个。否则,您可以跳过此步骤,使用现有密钥。
可选:创建新的 Cloud KMS 密钥
如需创建 Cloud KMS 密钥,您需要先创建密钥环,然后再创建存储在密钥环中的密钥。
如需创建密钥环,请执行以下操作:
如需创建密钥环,请运行以下 gcloud kms keyrings create
命令。
gcloud kms keyrings create KEY_RING \ --project=PROJECT_ID \ --location=LOCATION
替换以下内容:
KEY_RING
:密钥环的名称。PROJECT_ID
:您要在其中创建密钥环的 Google Cloud 项目的 ID。LOCATION
:您要在其中创建密钥环的区域。
如需创建密钥,请执行以下操作:
如需创建存储在密钥环中的密钥,请运行以下 gcloud kms keys create
命令。
gcloud kms keys create KEY_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --keyring=KEY_RING \ --purpose=encryption
替换以下内容:
KEY_NAME
:密钥的名称。KEY_RING
:您在上一步中创建的密钥环的名称。
授予 Cloud KMS 密钥权限
使用以下命令为 Dataproc Metastore 授予 Cloud KMS 密钥权限:
向 Dataproc Metastore Service Agent 服务账号授予权限:
如果您要为多区域 Dataproc Metastore 服务配置 CMEK,则必须为 每个密钥授予 Dataproc Metastore 和 Cloud Storage 服务账号所需的 Cloud KMS 权限。
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
如需创建采用 CMEK 加密的单区域服务,请运行Google Cloud
gcloud metastore services create
命令:gcloud metastore services create SERVICE \ --encryption-kms-key=KMS_KEY
替换以下内容:
SERVICE
:新服务的名称。KMS_KEY
:密钥资源 ID。
使用 CMEK 密钥创建多区域服务
对于多区域 Dataproc Metastore CMEK 服务,需要提供多个加密密钥。其中包括为多区域 Dataproc Metastore 服务的每个组成区域分配一个密钥,即为 Spanner 见证者区域分配一个密钥,为所在大陆分配一个密钥。
如需获取多区域服务及其配置的区域的相关信息,您可以运行以下命令。
gcloud metastore locations describe LOCATION
- 将 LOCATION 替换为您在其中创建了 Dataproc Metastore 服务的多区域。
如需使用 CMEK 密钥创建多区域服务,请执行以下操作:
请按照以下步骤为多区域 Dataproc Metastore 服务配置 CMEK 加密。
控制台
在 Google Cloud 控制台中,前往 Dataproc Metastore 页面:
在 Dataproc Metastore 页面顶部,点击创建。
此时会打开创建服务页面。
选择 Dataproc Metastore 2。
在“价格和容量”部分,选择企业 Plus 版 - 双区域。
在端点协议部分,选择相应的端点。
在加密下,选择 Cloud KMS 密钥。
选择要为每个区域使用的键,例如 Spanner 见证区域和大洲。
根据需要配置其余服务选项。
点击提交。
验证服务的加密配置:
在 Google Cloud 控制台中,前往 Dataproc Metastore 页面:
在 Dataproc Metastore 页面上,点击您要查看的服务的名称。
服务详情随即会打开。
在配置标签页下,验证是否已启用 CMEK。
gcloud
- 如需创建启用了 CMEK 加密的多区域服务,请运行
gcloud beta metastore services create
命令:
gcloud beta metastore services create SERVICE \ --location=LOCATION \ --instance-size=INSTANCE_SIZE \ --encryption-kms-keys=KMS_KEY1,KMS_KEY2,KMS_KEY_WITNESS,KMS_KEY_CONTINENT
替换以下内容:
SERVICE
:新 Dataproc Metastore 服务的名称。LOCATION
:您要创建 Dataproc Metastore 服务的 Google Cloud 多区域。您还可以设置默认位置。INSTANCE_SIZE
:您的多区域 Dataproc Metastore 服务的实例大小。例如,小、中或大。KMS_KEY1, KMS_KEY2, KMS_KEY_WITNESS, KMS_KEY_CONTINENT
:每个必需密钥的密钥资源 ID,包括一个位于该大陆的密钥和一个位于 Spanner 见证区域的密钥。密钥名称在项目中以以下格式列出:projects/KEY_PROJECT/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
。
从启用了 CMEK 的服务导入数据以及将数据导出到启用了 CMEK 的服务
如果您希望在导入期间仍使用客户管理的密钥加密数据,则必须先在 Cloud Storage 存储桶上设置 CMEK,然后再从中导入数据。
您可以从不受 CMEK 保护的 Cloud Storage 存储桶导入。导入后,Dataproc Metastore 中存储的数据会根据目标服务的 CMEK 设置进行保护。
导出时,系统会根据目标存储桶的 CMEK 设置保护导出的数据库转储。