客户管理的加密密钥 (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 不适用于在 Agent Assist 位置和智能回复中停用的功能。

创建密钥

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

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

在 Agent Assist 中启用 CMEK

在特定位置创建任何 Agent Assist 数据之前,您可以指定此位置的数据是否受客户管理的密钥保护。此时配置密钥。

前提条件

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

    gcloud beta services identity create --service=dialogflow.googleapis.com --project=PROJECT_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

为 Agent Assist 位置配置密钥

  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 将无法访问加密数据,并且在密钥权限恢复之前,该服务将不再处于运行状态。