客户管理的加密密钥 (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