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

默认情况下,Google Cloud 会使用 Google 管理的加密密钥自动加密数据。如果您有与保护数据的密钥相关的合规性或监管要求,则可以使用客户管理的加密密钥 (CMEK)。

如需详细了解 CMEK,请参阅 Cloud Key Management Service (KMS) 文档中的 CMEK 指南

受保护数据

所有 Dialogflow CX 代理静态数据都可以使用 CMEK 进行保护。

限制

  • 目前,启用了 CMEK 的代理已停用 Analytics
  • 目前,数据存储区代理不支持密钥轮替。没有数据存储区的 Dialogflow CX 代理支持密钥轮替。在任何一种情况下,都不支持使用新密钥版本重新加密之前加密的数据。
  • 不支持 global 位置。
  • 每个项目位置应使用一个密钥。
  • 如需在启用了 CMEK 的情况下恢复代理,您必须选择 Cloud Storage 选项。
  • 非 CMEK 集成项目中的现有资源无法追溯集成 CMEK。而是建议将资源导出并恢复为使用 CMEK 的新项目中。

创建密钥

如需创建密钥,请使用 KMS 服务。如需相关说明,请参阅创建对称密钥。创建或选择密钥时,您必须配置以下内容:

  • 确保选择要用于代理的位置,否则请求将失败。
  • Dialogflow 不支持密钥轮替。创建密钥时,必须将轮替周期设置为永不

配置代理以使用密钥

创建代理时,您可以指定代理位置,以及代理是使用 Google 管理的密钥还是客户管理的密钥。此时请选择您的密钥。

配置您的服务帐号或用户账号

  1. 使用 Google Cloud CLI 为您的项目创建 CCAI CMEK 服务账号。如需了解详情,请参阅 gcloud 服务身份文档

    gcloud beta services identity create --service=dialogflow.googleapis.com --project=PROJECT_ID
    

    系统将创建服务帐号。它不会在 create 响应中返回,但会采用以下格式:

    service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com
    
  2. 向 CCAI CMEK 服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色,确保该服务有权使用您的密钥进行加密和解密。

    gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
    --project=PROJECT_ID \
    --location=LOCATION_ID \
    --keyring=KMS_KEY_RING \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter