代理检索中的客户管理的加密密钥 (CMEK)

借助 Agent Retrieval(以前称为 Vector Search 2.0),您可以使用通过 Google Cloud Key Management Service (KMS) 管理的加密密钥来保护静态数据。通过此集成,您可以控制用于加密核心客户内容的密钥,包括轮替和撤消这些密钥。

默认情况下,系统使用由 Google 管理的平台默认设置对数据进行加密。 借助 CMEK,您可以直接控制加密密钥。

如需了解详情,请参阅 客户管理的加密密钥 (CMEK) 文档。

前提条件和限制条件

如需将 CMEK 与 集合搭配使用,必须满足以下前提条件和限制条件:

  • Cloud KMS 密钥必须与它保护的 集合位于同一 Google Cloud 区域。例如,us-central1 区域中的集合必须使用位于 us-central1 中的 KMS 密钥。

  • 您必须向每个产品/每个项目的 (P4) 服务账号授予 KMS 密钥的 cryptoKeyEncrypterDecrypter 角色。P4 服务账号采用以下格式: service-${CONSUMER_PROJECT_NUMBER}@gcp-sa-vectorsearch.

创建受 CMEK 保护的集合

满足所有前提条件后,您可以使用 gcloud CLI、REST API 或 Python SDK 创建启用 CMEK 的新集合。

使用 gcloud CLI

使用 --kms-key 实参指定 KMS 密钥的完全限定资源 ID:

gcloud vector-search collections create [COLLECTION_ID] \
    --kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]

使用 REST API

POST 请求的正文中添加 encryption_spec

{
  "encryption_spec": {
    "crypto_key_name": "projects/[PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]"
  }
}

使用 Python SDK

使用 Python SDK:

   
request = vectorsearch_v1beta.CreateCollectionRequest(
    parent=f"projects/{PROJECT_ID}/locations/{LOCATION}",
    collection_id=collection_id,
    collection={
        "data_schema": {...},
        "vector_schema": {...},
        # Specifies the customer-managed encryption key spec for a Collection
        "encryption_spec": {
            "crypto_key_name": f"projects/{PROJECT_ID}/locations/{LOCATION}/keyRings/{KEY_RING}/cryptoKeys/{KEY}"
        }
    },
)

operation = vector_search_service_client.create_collection(request=request)
operation.result()

将数据对象从非 CMEK 集合迁移到启用 CMEK 的集合

无法为现有集合启用 CMEK。您必须改为将数据对象迁移到启用 CMEK 的新集合。

为此,请执行以下操作:

  1. 将数据对象从现有集合导出到 Cloud Storage 存储桶。

  2. 创建启用 CMEK 的新集合。

  3. 将数据对象导入 集合。

密钥轮替

在 KMS 中轮替密钥时,新数据会使用主密钥版本进行加密,而现有数据仍使用之前的版本进行加密。如需了解 详情,请参阅密钥轮替

密钥撤消

撤消或停用密钥会立即停用集合。关联的 ANN 索引会自动取消部署,内存中的数据会被清除。 对集合执行读取、写入和搜索操作将会失败。

如果密钥恢复,集合不会自动重新启用。

CMEK 支持的资源

CMEK 涵盖的当前 Vertex AI 资源如下。 CMEK 对预览版功能的支持也处于预览版状态。

资源 已加密材料 文档链接
数据集 DataItemsAnnotations 的所有用户导入的数据(例如文本内容)。

用户创建的内容,例如 AnnotationSpecs, ColumnSpecs
创建用于训练分类和回归模型的数据集

创建用于训练预测模型的数据集
索引 用于 Vector Search 索引的所有数据文件,存储在 Cloud Storage、Pub/Sub 和内部存储空间中。必须使用相同的密钥创建索引和 IndexEndpoint。

必须使用相同的密钥创建集合中的所有索引。
在 Vector Search 中管理索引

在 Vector Search 2 中管理索引
集合 集合用于存储相关数据对象。 在 Vector Search 2 中管理集合
DataObjects 集合将数据存储为名为“数据对象”的单个 JSON 对象。 在 Vector Search 2 中管理数据对象