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

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

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

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

前提条件和限制条件

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

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

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

创建受 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 对预览版功能的支持也处于预览版状态。

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

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

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

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

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