默认情况下,Google Cloud 会使用 Google 管理的加密密钥自动加密静态数据。如果您对保护数据的密钥有特定的合规性或监管要求,则可以将客户管理的加密密钥 (CMEK) 用于资源。
您可以在本指南的以下部分中详细了解将 CMEK 用于 Vertex AI 资源的具体好处。如需大致了解 CMEK(包括其启用时间和原因),请参阅 Cloud Key Management Service 文档。
本指南介绍了将 CMEK 用于 Vertex AI 资源的一些好处,并逐步介绍了如何将训练作业配置为使用 CMEK。
如需详细了解如何将 CMEK 用于 Colab Enterprise,请参阅 Colab Enterprise CMEK 页面。
适用于 Vertex AI 资源的 CMEK
以下部分介绍了在为作业配置 CMEK 之前必须了解的适用于 Vertex AI 资源的 CMEK 的基本信息。
CMEK 的优势
一般来说,如果您需要完全控制用于加密数据的密钥,则 CMEK 最有用。借助 CMEK,您可以在 Cloud KMS 中管理密钥。例如,您可以轮替或停用密钥,也可以使用 Cloud KMS API 设置轮替时间表。如需大致了解 CMEK(包括其启用时间和原因),请参阅 Cloud KMS 文档。
当您运行 AutoML 或自定义 训练作业时,您的代码会在由 Vertex AI 管理的一个或多个虚拟机 (VM) 实例上运行。为 Vertex AI 启用 CMEK 后,您指定的密钥(而不是由 Google 管理的密钥)将用于加密这些虚拟机的启动磁盘上的数据。CMEK 密钥会加密以下类型的数据:
- 虚拟机上代码的副本。
- 由代码加载的所有数据。
- 由代码保存到本地磁盘的所有临时数据。
- AutoML 训练的模型。
- 上传到媒体数据集中的媒体文件(数据)。
一般来说,CMEK 密钥不会加密与您的操作关联的元数据,例如作业的名称和区域,或数据集的显示名。与操作关联的元数据始终使用 Google 的默认加密机制进行加密。
对于数据集,当用户将数据导入到数据集中时,数据项和注释均采用 CMEK 加密。数据集显示名不采用 CMEK 加密。
对于模型,存储系统中存储的模型(例如磁盘)均经过 CMEK 加密。所有模型评估结果都采用 CMEK 加密。
对于端点,端点下的模型部署使用的所有模型文件都经过 CMEK 加密。这不包括任何内存数据。
对于批量预测,用于执行批量预测作业的任何临时文件(例如,模型文件、日志、虚拟机磁盘)均采用 CMEK 加密。批量预测结果存储在用户提供的目标位置中。因此,Vertex AI 会遵循目标加密配置的默认值。否则,结果也将使用 CMEK 加密。
对于数据标签,任何输入文件(图片、文本、视频、表格)、临时讨论(例如问题、反馈)和输出(标签结果)都经过 CMEK 加密。注释规范显示名不经过 CMEK 加密。
外部密钥
您可以使用 Cloud External Key Manager (Cloud EKM) 创建您管理的外部密钥来加密 Google Cloud 中的数据。
当您使用 Cloud EKM 密钥时,Google 无法控制外部管理的密钥的可用性。如果您请求访问使用外部管理的密钥加密的资源,但该密钥不可用,则 Vertex AI 将拒绝该请求。密钥可用后,最多可能有 10 分钟的延迟您才能访问该资源。
如需了解使用外部密钥的更多注意事项,请参阅 Cloud External Key Manager。
将 CMEK 用于其他 Google Cloud 产品
为 Vertex AI 资源配置 CMEK 时,不会自动为与 Vertex AI 一起使用的其他 Google Cloud 产品配置 CMEK。如需使用 CMEK 加密其他 Google Cloud 产品中的数据,需要进行额外配置。例如:
Cloud Storage:执行自定义训练时,Vertex AI 通常会从 Cloud Storage 加载数据。当您使用 Python 训练应用和用于训练的预构建容器时,Vertex AI 还会从 Cloud Storage 存储桶加载您的代码。此外,一些训练作业会将经过训练的模型工件(例如 TensorFlow SaveModel 目录)导出到输出内容中的 Cloud Storage 存储桶。
为确保 Cloud Storage 中的数据使用 CMEK 进行加密,请参阅有关使用客户管理的加密密钥的 Cloud Storage 指南。您可以将加密密钥设置为用于 Vertex AI 的 Cloud Storage 存储桶的默认密钥,也可以使用它来加密特定对象。
Artifact Registry:使用自定义容器进行训练时,您可以将 Vertex AI 配置为从 Artifact Registry 加载容器映像。
如需确保容器映像使用 CMEK 进行加密,请参阅 CMEK 的 Artifact Registry 指南。
Cloud Logging:运行训练作业时,Vertex AI 训练会将日志保存到 Logging。如需使用 CMEK 加密这些日志,请参阅为 Cloud Logging 配置 CMEK。
当前 CMEK 支持的资源
CMEK 涵盖的当前 Vertex AI 资源如下。CMEK 对预览版功能的支持也处于预览版状态。
资源 | 已加密材料 | 文档链接 |
---|---|---|
数据集 |
|
|
模型 |
|
|
端点 |
|
|
CustomJob |
|
|
HyperparameterTuningJob |
|
|
TrainingPipeline |
|
|
BatchPredictionJob(不包括 AutoML image batchPrediction) |
|
|
ModelDeploymentMonitoringJob |
|
|
PipelineJob |
|
|
MetadataStore |
|
|
TensorBoard |
|
|
特征存储区 |
|
|
索引 |
|
|
索引端点 |
|
|
Colab Enterprise 运行时 |
|
CMEK 对生成式 AI 调整流水线的支持
以下模型的调优流水线中提供 CMEK 支持:
text-bison for PaLM 2
(GPU)BERT
T5
image-generation (GPU)
限制
以下各项不提供 CMEK 支持:
- AutoML 图片模型批量预测 (
BatchPredictionJob
) - TPU 调整
为您的资源配置 CMEK
以下部分介绍了如何在 Cloud Key Management Service 中创建密钥环和密钥、为 Vertex AI 加密者和解密者授予对密钥的权限,以及创建使用 CMEK 的资源。
准备工作
本指南假设您使用两个单独的 Google Cloud 项目为 Vertex AI 数据配置 CMEK:
- 一个项目用于管理加密密钥(称为“Cloud KMS 项目”)。
- 一个项目用于访问 Vertex AI 数据或 Cloud Storage 中的输出,以及与您的用例所需的任何其他 Google Cloud 产品(称为“AI Platform 项目”)进行交互。
此推荐设置支持职责分离。
或者,您也可以在整个指南中使用单个 Google Cloud 项目。为此,请对引用 Cloud KMS 项目的以下所有任务和引用 AI Platform 项目的任务使用同一项目。
设置 Cloud KMS 项目
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud KMS API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud KMS API.
设置 AI Platform 项目
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
设置 Google Cloud CLI
gcloud CLI 对于本指南中的某些步骤是必需的,对于其他步骤则是可选的。Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
创建密钥环和密钥
按照有关创建对称密钥的 Cloud KMS 指南,创建密钥环和密钥。创建密钥环时,请指定支持 Vertex AI 操作的区域作为密钥环的位置。只有在资源和密钥使用同一区域时,Vertex AI 才会支持 CMEK。您不得为密钥环指定双区域位置、多区域位置或全球位置。
请务必在 Cloud KMS 项目中创建密钥环和密钥。
授予 Vertex AI 权限
如需将 CMEK 用于您的资源,您必须向 Vertex AI 授予使用您的密钥加密和解密数据的权限。Vertex AI 使用 Google 管理的服务代理来运行使用您的资源的操作。此服务账号由具有以下格式的电子邮件地址标识:
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
要查找 AI Platform 项目的适当服务账号,请转到 Google Cloud 控制台中的 IAM 页面,找到与此电子邮件地址格式匹配的成员,并使用 AI Platform 项目的项目编号替换 AI_PLATFORM_PROJECT_NUMBER 变量。该服务账号的名称也将为 Vertex AI Service Agent
。
记下此服务账号的电子邮件地址并在以下步骤中使用该地址,以授予该服务账号使用您的密钥加密和解密数据的权限。您可以使用 Google Cloud 控制台或使用 Google Cloud CLI 授予权限:
Google Cloud 控制台
在 Google Cloud 控制台中,点击“安全”,然后选择密钥管理。您将会进入加密密钥页面,然后选择您的 Cloud KMS 项目。
点击您在本指南的上一部分中创建的密钥环的名称,以转到密钥环详细信息页面。
选中您在本指南的上一部分中创建的密钥所对应的复选框。如果标有密钥名称的信息面板尚未打开,请点击显示信息面板。
在信息面板中,点击
添加成员以打开将成员添加到“KEY_NAME”对话框。在此对话框中,执行以下操作:- 在新成员框中,输入您在上一部分中记下的服务账号电子邮件地址:
service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
在选择角色下拉列表中,点击 Cloud KMS,然后选择 Cloud KMS CryptoKey Encrypter/Decrypter 角色。
点击保存。
- 在新成员框中,输入您在上一部分中记下的服务账号电子邮件地址:
gcloud
运行以下命令:
gcloud kms keys add-iam-policy-binding KEY_NAME \
--keyring=KEY_RING_NAME \
--location=REGION \
--project=KMS_PROJECT_ID \
--member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
在此命令中,替换以下占位符:
使用 KMS 密钥创建资源
在创建新的 CMEK 支持的资源时,您可以将密钥指定为创建参数之一。
控制台
在 Google Cloud 控制台的 Vertex AI 部分中创建新的支持 CMEK 的资源时,您可以在常规或高级选项部分中选择您的密钥:
REST 和命令行
创建支持的资源时,请在请求中添加 encryptionSpec
对象,并将 encryptionSpec.kmsKeyName
字段设置为指向您的密钥资源。
例如,创建 dataset
资源时,您需要在请求正文中指定密钥:
{
"displayName": DATASET_NAME,
"metadataSchemaUri": METADATA_URI,
"encryptionSpec": {
"kmsKeyName": "projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME"
}
}
Java
创建受支持的资源时,请将 EncryptionSpec
设置为指向密钥资源。如需了解详情,请参阅 Java 版 Vertex AI 客户端库文档。
Node.js
创建受支持的资源时,请将 encryptionSpec
参数设置为指向密钥资源。如需了解详情,请参阅 Node.js 版 Vertex AI 客户端库文档。
Python
创建受支持的资源时,请将 encryption_spec
参数设置为指向密钥资源。如需了解详情,请参阅适用于 Cloud AI Platform 的 Python 客户端文档。