使用客户管理的加密密钥加密数据

本文档介绍了如何使用客户管理的加密密钥 (CMEK) 通过 Cloud Key Management Service 加密和控制云服务中的静态数据。CMEK 已与 Gemini Code Assist 的代码自定义功能集成。

如果您不使用 CMEK,则默认情况下 Google 会自动管理用于加密数据的密钥。这种行为称为 Google 默认加密。采用此默认行为时,您无法控制加密密钥。

在本文档中,您将执行以下操作:

  • 了解如何创建 CMEK。
  • 向 Gemini Code Assist 服务账号授予权限。
  • 使用 CMEK 创建代码库索引。
  • 移除对 CMEK 代码库的访问权限。

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

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

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

准备工作

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. 在 shell 环境中,运行 gcloud components update 命令,确保您已将 gcloud CLI 的所有已安装组件更新到最新版本。对于此步骤,您可以安装并初始化 gcloud CLI,也可以使用 Cloud Shell

    gcloud components update
    

创建 CMEK 并授予权限

如需创建 CMEK 并向 Gemini Code Assist 服务账号授予对该密钥的权限,请执行以下任务:

  1. 在您要用于管理密钥的 Google Cloud 项目中,执行以下操作:

    1. 启用 Cloud Key Management Service API

    2. 使用以下选项之一创建密钥环和密钥:

  2. 向 Gemini Code Assist 服务账号授予 CryptoKey Encrypter/Decrypter IAM 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter)。为您创建的密钥授予此权限。

    控制台

    1. 前往密钥管理

      前往密钥管理

    2. 选择您创建的密钥。

    3. 授予对 Gemini Code Assist 服务账号的访问权限:

      1. 点击添加主账号
      2. 添加 Gemini Code Assist 服务账号。服务账号为 service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com,其中 PROJECT_NUMBER 是启用了 Gemini Code Assist 的项目的项目编号 Google Cloud 。
      3. 选择角色中,依次选择 Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter
      4. 点击保存
    4. 重复执行上一步,为将使用 CMEK 创建代码库索引的账号授予访问权限。

    5. 返回到密钥管理页面,然后重新选择密钥。

    6. 选择显示信息面板。您应该会在角色/成员列中看到角色。

    gcloud

    1. 如需向 Gemini Code Assist 服务账号授予访问权限,请在 shell 环境中使用 kms keys add-iam-policy-binding 命令

      gcloud kms keys add-iam-policy-binding KEY_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --keyring=KEYRING_NAME \
          --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \
          --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
      

      替换以下内容:

      • KEY_NAME:密钥名称。
      • PROJECT_ID:包含密钥的项目的 ID。
      • LOCATION:密钥的位置。
      • KEYRING_NAME:密钥环名称。
      • PROJECT_NUMBER:启用了 Gemini Code Assist 的 Google Cloud 项目的项目编号
    2. 重复执行上一步,为将使用 CMEK 创建代码库索引的账号授予访问权限。

    如需详细了解此命令,请参阅 gcloud kms keys add-iam-policy-binding 文档

您现在可以使用该 API 使用 CMEK 创建代码库索引,并指定要用于加密的密钥。

使用 CMEK 创建代码库索引

gcloud CLI 中,在受 CMEK 保护的服务中创建一个新代码库:

gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
    --location=LOCATION \
    --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"

替换以下内容:

  • CODE_REPOSITORY_INDEX_NAME:您要创建的新代码库索引的名称。
  • LOCATION:密钥的位置。
  • KEY_PROJECT_ID:密钥项目 ID。
  • KEYRING_NAME:密钥环名称。
  • KEY_NAME:密钥名称。

移除对 CMEK 代码库的访问权限

您可以通过多种方式移除对采用 CMEK 加密的代码库的访问权限:

我们建议您先撤消 Gemini Code Assist 服务账号的权限,然后再停用或销毁密钥。权限的更改会在数秒内达成一致,因此您可以观察停用或销毁密钥造成的影响。