借助 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 的新集合。
为此,请执行以下操作:
密钥轮替
在 KMS 中轮替密钥时,新数据会使用主密钥版本进行加密,而现有数据仍使用之前的版本进行加密。如需了解 详情,请参阅密钥轮替。
密钥撤消
撤消或停用密钥会立即停用集合。关联的 ANN 索引会自动取消部署,内存中的数据会被清除。 对集合执行读取、写入和搜索操作将会失败。
如果密钥恢复,集合不会自动重新启用。
CMEK 支持的资源
CMEK 涵盖的当前 Vertex AI 资源如下。 CMEK 对预览版功能的支持也处于预览版状态。
| 资源 | 已加密材料 | 文档链接 |
|---|---|---|
| 数据集 | DataItems 和 Annotations 的所有用户导入的数据(例如文本内容)。 用户创建的内容,例如 AnnotationSpecs, ColumnSpecs。 |
创建用于训练分类和回归模型的数据集
创建用于训练预测模型的数据集 |
| 索引 | 用于 Vector Search 索引的所有数据文件,存储在 Cloud Storage、Pub/Sub 和内部存储空间中。必须使用相同的密钥创建索引和 IndexEndpoint。
必须使用相同的密钥创建集合中的所有索引。 |
在 Vector Search 中管理索引:
在 Vector Search 2 中管理索引 |
| 集合 | 集合用于存储相关数据对象。 | 在 Vector Search 2 中管理集合 |
| DataObjects | 集合将数据存储为名为“数据对象”的单个 JSON 对象。 | 在 Vector Search 2 中管理数据对象 |