客户管理的加密密钥

默认情况下,Vertex AI Workbench 会对静态客户内容进行加密。Vertex AI Workbench 会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密

如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Vertex AI Workbench)结合使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护您数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。

使用 CMEK 设置资源后,访问 Vertex AI Workbench 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)

本页面介绍了将 CMEK 用于用户管理的笔记本的一些具体优势和限制,并说明了如何将新的用户管理的笔记本实例配置为使用 CMEK。

CMEK 的优势

一般来说,如果您需要完全控制用于加密数据的密钥,则 CMEK 最有用。借助 CMEK,您可以在 Cloud Key Management Service 中管理密钥。例如,您可以轮替或停用密钥,也可以使用 Cloud KMS API 设置轮替时间表。

当您运行用户管理的笔记本实例时,您的实例在由 Vertex AI Workbench 管理的虚拟机 (VM) 上运行。当您为用户管理的笔记本实例启用 CMEK 时,Vertex AI Workbench 将使用您指定的密钥(而不是由 Google 管理的密钥)来加密虚拟机的启动磁盘中的数据。

CMEK 密钥不会加密与用户管理的笔记本实例关联的元数据,例如实例的名称和区域。与用户管理的笔记本实例关联的元数据始终使用 Google 的默认加密机制进行加密。

CMEK 的限制

为了减少延迟时间并防止资源依赖于跨多个故障域的服务,Google 建议您使用同一位置的密钥保护区域用户管理的笔记本实例。

  • 您可以使用位于同一位置或全球位置的密钥来加密区域用户管理的笔记本实例。例如,您可以使用 us-west1global 中的密钥加密 us-west1-a 可用区内的磁盘中的数据。
  • 您可以在任何位置使用密钥来加密全局实例。
  • 为用户管理的笔记本配置 CMEK 不会自动为您使用的其他 Google Cloud 产品配置 CMEK。如需使用 CMEK 加密其他 Google Cloud 产品中的数据,您必须完成其他配置。

为用户管理的笔记本实例配置 CMEK

以下部分介绍了如何在 Cloud Key Management Service 中创建密钥环和密钥,向服务账号加密者和解密者授予针对密钥的权限,以及创建使用 CMEK 的用户管理的笔记本实例。

准备工作

我们建议您使用支持职责分离的设置。如需为用户管理的笔记本配置 CMEK,您可以使用两个单独的 Google Cloud 项目:

  • Cloud KMS 项目:用于管理加密密钥的项目
  • 用户管理的笔记本项目:用于访问用户管理的笔记本实例并与您的用例所需的任何其他 Google Cloud 产品进行交互的项目

或者,您可以使用单个 Google Cloud 项目。为此,请对以下所有任务使用同一项目。

设置 Cloud KMS 项目

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud KMS API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud KMS API.

    Enable the API

设置用户管理的笔记本项目

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Notebooks API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Notebooks API.

    Enable the API

设置 Google Cloud CLI

本页面中的有些步骤需要 gcloud CLI,而有些步骤则不一定需要它。

Install the Google Cloud CLI, then initialize it by running the following command:

gcloud init

创建密钥环和密钥

创建密钥环和密钥时,请注意以下要求:

  • 在选择密钥环的位置时,请使用 global 或用户管理的笔记本实例所在的位置。

  • 请务必在 Cloud KMS 项目中创建密钥环和密钥。

如需创建密钥环和密钥,请参阅创建对称加密密钥

授予用户管理的笔记本权限

如需在用户管理的笔记本实例中使用 CMEK,您必须向用户管理的笔记本实例授予使用您的密钥加密和解密数据的权限。

确定要使用的服务账号

用户管理的笔记本使用服务账号来运行用户管理的笔记本实例。此服务账号可以是默认的 Compute Engine 服务账号,也可以是您在创建实例时指定的服务账号。

如果该服务账号是默认的 Compute Engine 服务账号,可通过完成以下步骤来查找该服务账号的电子邮件地址:

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    转到 IAM

  2. 找到名为 Compute Engine default service account 的主账号。

    记下此服务账号的电子邮件地址并在以下步骤中使用该地址,以授予该服务账号使用您的密钥加密和解密数据的权限。

授予服务账号权限

使用 Google Cloud 控制台或使用 Google Cloud CLI 授予权限。

控制台

  1. 在 Google Cloud 控制台中,进入密钥管理页面。

    前往密钥管理

  2. 选择您的 Cloud KMS 项目。

  3. 点击您在创建密钥环和密钥中创建的密钥环的名称。密钥环详细信息页面将打开。

  4. 选中您在创建密钥环和密钥中创建的密钥对应的复选框。如果标有密钥名称的信息面板尚未打开,请点击显示信息面板

  5. 在信息面板中,点击 添加成员。系统会打开向“KEY_NAME”添加成员对话框。在此对话框中,执行以下操作:

    1. 新成员字段中,输入实例的服务账号电子邮件地址。

    2. 选择角色列表中,点击 Cloud KMS,然后选择 Cloud KMS CryptoKey Encrypter/Decrypter 角色。

    3. 点击保存

gcloud

运行以下命令:

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring=KEY_RING_NAME \
    --location=REGION \
    --project=KMS_PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

请替换以下内容:

  • KEY_NAME:您在创建密钥环和密钥中创建的密钥的名称
  • KEY_RING_NAME:您在创建密钥环和密钥中创建的密钥环
  • REGION:您创建密钥环的区域
  • KMS_PROJECT_ID:Cloud KMS 项目的 ID
  • SERVICE_ACCOUNT:您的实例的服务账号电子邮件地址

创建使用 CMEK 的用户管理的笔记本实例

您已授予用户管理的笔记本实例使用您的密钥加密和解密数据的权限后,可以创建使用此密钥加密数据的用户管理的笔记本实例。

以下示例展示了如何通过 Google Cloud 控制台或 gcloud CLI 使用您的密钥加密和解密数据。

控制台

如需使用客户管理的加密密钥创建用户管理的笔记本实例,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,转到用户管理的笔记本页面。 或者前往 notebook.new (https://notebook.new) 并跳过下一步。

    转到“用户管理的笔记本”

  2. 点击  新建笔记本,然后选择自定义

  3. 创建用户管理的笔记本页面的详细信息部分中,为新实例提供以下信息:

    • 名称:新实例的名称。
    • 区域:您的密钥和密钥环所在的区域
    • 可用区:您所选区域内的可用区
  4. 选择磁盘部分。

  5. 如需使用客户管理的加密密钥,请在加密下选择客户管理的加密密钥 (CMEK)

  6. 点击选择客户管理的密钥

    • 如果要使用的客户管理的密钥在列表中,请选择该密钥。
    • 如果要使用的客户管理的密钥不在列表中,请输入客户管理的密钥的资源 ID。客户管理的密钥的资源 ID 格式如下所示:

      projects/NOTEBOOKS_PROJECT_NUMBER/locations/global/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

      替换以下内容:

  7. 完成实例创建对话框的其余部分,然后点击创建

  8. Vertex AI Workbench 会根据您指定的属性创建用户管理的笔记本实例,并自动启动该实例。当实例可供使用时,Vertex AI Workbench 会激活打开 JupyterLab 链接。

gcloud

如需使用 gcloud CLI 创建具有客户管理的加密密钥的用户管理的笔记本实例,请运行以下命令。本示例假设您希望创建一个机器类型为 n1-standard-1 的用户管理的笔记本实例和一个 100 GB 的标准永久性启动磁盘。

gcloud notebooks instances create notebook-vm-cmek \
    --location=REGION \
    --vm-image-family=IMAGE_FAMILY \
    --vm-image-project=deeplearning-platform-release \
    --machine-type="n1-standard-1" \
    --boot-disk-type="PD_STANDARD" \
    --boot-disk-size=100 \
    --kms-key=KEY_NAME \
    --kms-project=KMS_PROJECT_ID \
    --kms-location=REGION \
    --kms-keyring=KEY_RING_NAME \
    --disk-encryption=CMEK \
    --metadata='proxy-mode=project_editors'

替换以下内容:

  • REGION:您创建密钥环的区域以及打算在其中创建用户管理的笔记本实例的区域
  • IMAGE_FAMILY:您要用于创建用户管理的笔记本实例的映像系列
  • KEY_NAME:您在创建密钥环和密钥中创建的密钥的名称
  • KMS_PROJECT_ID:Cloud KMS 项目的 ID
  • KEY_RING_NAME:您在创建密钥环和密钥中创建的密钥环

后续步骤