默认情况下,AI 应用会对静态客户内容进行加密。AI 应用会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 AI 应用)搭配使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 跟踪密钥使用情况、查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护您数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问 AI 应用资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)。
Cloud KMS 在 AI 应用中的限制
AI 应用中的 CMEK (Cloud KMS) 密钥存在以下限制:
- 已应用于数据存储区的密钥无法更改。
- 密钥一经注册便无法取消注册或从数据存储区中移除。
- 您必须使用美国或欧盟的多区域数据存储空间和应用(而非全球性数据存储空间和应用)。 如需详细了解多区域和数据驻留,包括与使用非全局位置相关的限制,请参阅位置。
如果您需要为项目注册多个密钥,请与您的 Google 客户支持团队联系,请求增加 CMEK 配置的配额,并说明您需要多个密钥的原因。
将外部密钥管理器 (EKM) 与 CMEK 搭配使用已进入 GA 阶段,并已列入许可名单。如需将 EKM 与 CMEK 搭配使用,请与您的 Google 客户支持团队联系。
使用 CMEK 的 EKM 或 HSM 存在以下限制:
用于加密和解密调用的 EKM 和 HSM 配额应至少有 1,000 QPM 的余量。如需了解如何查看配额,请参阅查看 Cloud KMS 配额。
如果使用 EKM,则在任何超过 30 秒的时间范围内,密钥必须在 90% 的时间内可访问。如果在此时间段内无法访问该键,则可能会对索引编制和搜索新鲜度产生负面影响。
如果存在结算问题、配额超出问题或持续超过 12 小时的不可访问问题,该服务会自动降低与 EKM 或 HSM 密钥关联的 CmekConfig。
在将密钥注册到项目之前创建的数据存储区无法受该密钥保护。
您无法为受密钥保护的数据存储区调整搜索模型。
对于具有多个数据存储区的应用,如果一个数据存储区使用 CMEK 配置,则所有其他数据存储区也必须使用相同的 CMEK 配置。
第三方连接器的单区域密钥不支持密钥轮替。如果您停用或销毁用于保护与第三方连接器关联的数据存储区的密钥版本,该连接器将停止工作。
密钥轮替与分析不兼容。如果您轮替数据存储区的密钥,则使用该数据存储区的应用将不再显示分析数据。
推荐应用不支持密钥轮替。 如果您停用或销毁用于保护与推荐应用关联的数据存储区的密钥版本,则推荐应用将停止运行。
对于 Vertex AI Search,必须使用企业版。如需了解企业版,请参阅高级功能简介。
第一方连接器不符合 CMEK 要求,但 BigQuery 和 Cloud Storage 的“一次性导入”和“定期”数据存储区除外。
医疗保健搜索数据存储区和第三方连接器符合 CMEK 要求。 不过,第一方连接器(例如 BigQuery 定期连接器)与 CMEK 不兼容。如需了解有关医疗保健数据存储区的一般信息,请参阅创建医疗保健搜索数据存储区。如需了解如何使第三方连接器符合 CMEK 要求,请参阅关于第三方连接器的单区域密钥。
- 您无法使用 Terraform 为 AI 应用配置 CMEK。
关于第三方连接器的单区域密钥
如果您使用第三方连接器,并且希望使用自己的密钥来保护关联的数据,则除了多区域密钥之外,您还需要创建三个补充的单区域密钥。如需了解用于创建密钥的命令,请参阅以下过程:注册 Cloud KMS 密钥。
需要为以下区域创建单个密钥:
多区域 | 单区域 | ||
---|---|---|---|
eu |
europe-west1 |
europe-west4 |
europe-north1 |
us |
us-east1 |
us-central1 |
us-west1 |
准备工作
请确保您满足以下前提条件:
创建多区域对称 Cloud KMS 密钥。请参阅 Cloud KMS 文档中的创建密钥环和创建密钥。
将轮替周期设置为永不(手动轮替)。
对于位置,选择多区域,然后从下拉菜单中选择 europe 或 us。
已向 Discovery Engine 服务代理授予密钥的 CryptoKey Encrypter/Decrypter IAM 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)。服务代理账号的电子邮件地址采用以下格式:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
。如需了解如何向服务代理添加角色的一般说明,请参阅授予或撤消单个角色。已向 Cloud Storage 服务代理授予密钥的 CryptoKey Encrypter/Decrypter IAM 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)。如果未授予此角色,则受 CMEK 保护的数据存储区的数据导入将会失败,因为 Discovery Engine 无法创建导入所需的受 CMEK 保护的临时存储桶和目录。请先完成本页中的密钥注册说明,然后再创建要由密钥管理的任何数据存储空间或应用。
- 应用已启用企业版功能。请参阅启用或停用企业版。
注册 Cloud KMS 密钥
如需使用 CMEK 加密数据,您必须注册多区域密钥。您可以选择是否注册单区域密钥。如果您的数据需要单区域密钥(例如,使用第三方连接器时),则需要注册单区域密钥。
REST
如需为 AI 应用注册您自己的密钥,请按以下步骤操作:
使用要注册的键调用
UpdateCmekConfig
方法。curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"kmsKey":"projects/KMS_PROJECT_ID/locations/KMS_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"}' \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID?set_default=SET_DEFAULT"
替换以下内容:
KMS_PROJECT_ID
:包含密钥的项目的 ID。项目编号无效。KMS_LOCATION
:密钥的多区域:us
或europe
。KEY_RING
:存储密钥的密钥环的名称。KEY_NAME
:密钥的名称。PROJECT_ID
:包含数据存储区的项目的 ID。LOCATION
:数据存储区的多区域:us
或eu
。CMEK_CONFIG_ID
:为 CmekConfig 资源设置唯一 ID,例如default_cmek_config
。SET_DEFAULT
:设置为true
以将该键用作在多区域中创建的后续数据存储区的默认键。
可选:记录该方法返回的
name
值,然后按照获取有关长时间运行的操作的详细信息中的说明查看操作何时完成。注册密钥通常需要几分钟的时间。
操作完成后,该多区域中新的数据存储将受该密钥保护。如需了解有关创建数据存储区的一般信息,请参阅应用和数据存储区简介。
控制台
准备工作
确保该区域尚未受密钥保护。如果已通过 REST 命令为该区域注册密钥,则以下过程会失败。
如需确定 AI 应用中是否有某个位置的有效密钥,请参阅查看 Cloud KMS 密钥。
过程
如需为 AI 应用注册您自己的密钥,请按以下步骤操作:
在 Google Cloud 控制台中,前往 AI Applications 页面。
点击设置,然后选择 CMEK 标签页。
针对 us 或 eu 位置点击添加密钥。
点击“添加密钥”。 点击 Select a Cloud KMS key(选择 Cloud KMS 密钥)下拉菜单,然后选择密钥。
如果密钥位于其他项目中,请点击切换项目,点击您的项目名称,输入您创建的密钥的名称,然后选择该密钥。
如果您知道密钥的资源名称,请点击手动输入,粘贴密钥资源名称,然后点击保存。
依次点击 OK > Save。
这会注册您的密钥,并创建一个名为 default_cmek_config
的 CmekResource。
提取的数据可能需要几个小时才能显示在搜索结果中。
查看 Cloud KMS 密钥
如需查看 AI 应用的已注册密钥,请执行以下操作之一:
如果您有 CmekConfig 资源名称,请调用
GetCmekConfig
方法:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"
替换以下内容:
LOCATION
:数据存储区的多区域:us
或eu
。PROJECT_ID
:包含数据的项目的 ID。CMEK_CONFIG_ID
:CmekConfig 资源的 ID。如果您使用控制台注册了密钥,则 ID 为default_cmek_config
。
curl 调用和响应示例如下所示:
$ curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config"
{ "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true }如果您没有 CmekConfig 资源名称,请调用
ListCmekConfigs
方法:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs"
替换以下内容:
LOCATION
:数据存储区的多区域:us
或eu
。PROJECT_ID
:包含数据的项目的 ID。
curl 调用和响应示例如下所示:
$ curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs"
{ "cmek_configs": [ { "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true } ] }
取消注册 Cloud KMS 密钥
如需从 AI 应用中取消注册您的密钥,请按以下步骤操作:
使用您要取消注册的 CmekConfig 资源名称调用
DeleteCmekConfig
方法。curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"
替换以下内容:
LOCATION
:数据存储区的多区域:us
或eu
。PROJECT_ID
:包含数据存储区的项目的 ID。CMEK_CONFIG_ID
:CmekConfig 资源的 ID。如果您使用控制台注册了密钥,则 ID 为default_cmek_config
。
curl 调用和响应示例如下所示:
$ curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config" { "name": "projects/my-ai-app-project-123/locations/us/operations/delete-cmek-config-56789", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.DeleteCmekConfigMetadata" } }
可选:记录该方法返回的
name
值,然后按照获取长时间运行的操作的详细信息中的说明查看操作何时完成。删除密钥通常需要几分钟的时间。
验证数据存储区是否受密钥保护
在注册密钥之前创建的数据存储区不会受到该密钥的保护。如果您想确认特定数据存储区是否由您的密钥保护,请按以下步骤操作:
对数据存储区运行以下 curl 命令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "x-goog-user-project: PROJECT_ID" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID"
替换以下内容:
LOCATION
:数据存储区的多区域:us
或eu
。PROJECT_ID
:包含数据存储空间的项目的 ID。DATA_STORE_ID
:数据存储区的 ID。
curl 调用示例如下所示:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H "x-goog-user-project: my-ai-app-project-123" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/collections/default_collection/dataStores/my-data-store-1"
查看该命令的输出:如果输出中包含
cmekConfig
字段,并且kmsKey
字段显示您注册的密钥,则表示数据存储区受该密钥保护。示例响应如下所示:
{ "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1", "displayName": "my-data-store-1", "industryVertical": "GENERIC", "createTime": "2023-09-05T21:20:21.520552Z", "solutionTypes": [ "SOLUTION_TYPE_SEARCH" ], "defaultSchemaId": "default_schema", "cmekConfig": { "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1/cmekConfigs/default_cmek_config", "kmsKey": "projects/my-ai-app-project-123/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" } }
受 Cloud KMS 密钥保护的其他数据
除了数据存储区中的数据之外,您的密钥还可以保护 AI 应用持有的其他类型的应用自有核心信息,例如在搜索并跟进期间生成的会话数据。如果与应用关联的数据存储区受 CMEK 保护,则此类核心信息也受 CMEK 保护。
虽然您无法运行特定命令来验证会话是否受保护,但如果您运行验证数据存储区是否受密钥保护命令并在 cmekConfig 资源中看到密钥,则表示会话数据受保护。
轮替 Cloud KMS 密钥
轮替密钥时,您需要创建密钥的新版本,并将新版本设置为主版本。请先让原始版本的密钥保持启用状态一段时间,然后再停用该密钥。这样,可能正在使用旧密钥的所有长时间运行的操作都有时间完成。
以下过程概述了轮替 AI 应用数据存储区密钥的步骤。如需了解有关轮替密钥的一般信息,请参阅 Cloud KMS 指南中的密钥轮替部分。
重要提示:请勿轮替与推荐应用或任何需要分析的应用关联的数据存储区中的密钥,也不得轮替用于第三方连接器的单区域密钥。请参阅 AI 应用中 Cloud KMS 的限制。
重新注册您的密钥。为此,请重复注册 Cloud KMS 密钥的第 1 步。
请参阅 Cloud KMS 指南的管理密钥部分中的说明,执行以下操作:
创建新的密钥版本,将其启用并设为主密钥版本。
让旧版密钥版本保持启用状态。
大约一周后,停用旧密钥版本,并确保一切照常运行。
在以后的某个时间,如果您确定停用旧密钥版本不会造成任何问题,则可以销毁旧密钥版本。
如果 Cloud KMS 密钥已停用或被撤消
如果密钥被停用或密钥的权限被撤消,数据存储区会在 15 分钟内停止提取数据并停止传送数据。不过,重新启用密钥或恢复权限需要很长时间。数据存储区最长可能需要 24 小时才能恢复提供数据。
因此,除非必要,否则请勿停用密钥。在数据存储区中停用和启用密钥是一项耗时操作。例如,如果反复将密钥在停用和启用状态之间切换,则数据存储区将需要很长时间才能达到受保护状态。停用密钥并在停用后立即重新启用密钥可能会导致数天的数据库停机,因为系统会先从数据存储区停用密钥,然后再重新启用密钥。