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

默认情况下,Agent Assist 会对以静态方式存储的客户内容进行加密。Agent Assist 会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密

如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Agent Assist)结合使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。

使用 CMEK 设置资源后,访问 Agent Assist 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)

受保护数据

只有位于受支持位置的存储中的数据(数据静态)才能使用 CMEK 进行保护。

支持的位置和功能

CMEK 在所有 Agent Assist 位置均可用,并且在受支持的位置适用于所有 Agent Assist 功能,包括生成式 AI 功能。

限制

CMEK 不适用于在客服助理位置和智能回复中停用的功能。

创建密钥

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

  • 请务必选择要用于 Agent Assist 数据的位置,否则请求将失败。

在 Agent Assist 中启用 CMEK

在特定位置创建任何 Google 客服助手数据之前,您可以指定此位置中的数据是否将由客户管理的密钥保护。此时配置您的密钥。

前提条件

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

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

    系统将创建服务账号。系统不会在创建响应中返回此 ID,但其格式如下:

    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

为客服助理位置配置密钥

  1. 使用 InitializeEncryptionSpec API 配置密钥。

    您需要提供以下变量:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • LOCATION_ID:您在 Agent Assist 中选择启用 CMEK 的位置。
    • KMS_KEY_RING:您在其中创建 KMS 密钥的密钥环。(密钥环中的位置(例如 projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING)必须与您要启用 CMEK 的位置一致。)
    • KMS_KEY_ID:您的 KMS 密钥的名称,用于对所选位置中的 Agent Assist 数据进行加密和解密。

    例如:

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -d "{ encryption_spec: { kms_key: 'projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_ID' } }" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec:initialize"

    您应该收到类似以下内容的 JSON 响应:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
    }
  2. 使用 GetOperation API 检查长时间运行的操作结果。

    例如:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"

检查 CMEK 设置

使用 GetEncryptionSpec API 检查为某个位置配置的加密密钥。

例如:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec"
  

撤消密钥

如需撤消 Agent Assist 对密钥的访问权限,您可以停用 KMS 密钥版本,或从 KMS 密钥中移除服务账号的 Cloud KMS CryptoKey Encrypter/Decrypter 角色。

撤消密钥后,Agent Assist 将无法访问加密数据,并且在密钥权限恢复之前,该服务将不再处于正常运行状态。