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

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

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

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

Cloud KMS 可以在用于集中管理多个项目密钥的另一个项目中运行,也可以在与 Secure Source Manager 相同的Google Cloud 项目中运行。为了支持职责分离并更好地控制对密钥的访问权限,我们建议您在不包含其他 Google Cloud资源的其他项目中创建和管理密钥。

您可以在创建实例时分配 Cloud KMS 密钥。您无法更改现有实例的加密机制。如果您有 CMEK 加密的实例,则无法将加密机制更改为 Google 默认加密或分配其他 Cloud Key Management Service 密钥用于加密。

实例必须在与 Cloud KMS 密钥相同的位置创建。

在 Secure Source Manager 中使用 CMEK 时,您的项目可能会消耗 Cloud KMS 加密请求配额。使用 CMEK 加密的实例在创建时会消耗这些配额。 仅当您使用硬件 (Cloud HSM) 或外部 (Cloud EKM) 密钥时,使用 CMEK 密钥执行的加密和解密操作才会影响 Cloud KMS 配额。 如需了解详情,请参阅 Cloud KMS 配额

创建 CMEK 密钥并授予权限

以下说明介绍了如何创建密钥,以及如何向 Secure Source Manager 服务账号授予对该密钥的权限。

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

    1. 启用 Cloud KMS API

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

      Cloud KMS 密钥位置必须与您要在其中创建 Secure Source Manager 实例的项目的位置相匹配。

  2. 如果您要在项目中创建第一个 Secure Source Manager 实例,则需要运行以下命令手动创建 Secure Source Manager 服务代理:

    gcloud beta services identity create \
    --service=securesourcemanager.googleapis.com \
    --project=PROJECT
    

    其中,PROJECT 是您将创建 Secure Source Manager 实例的项目的项目 ID。

    创建每个产品、每个项目的服务账号 (P4SA) 后,您必须向正文 service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com授予 Secure Source Manager 服务代理角色 (roles/securesourcemanager.serviceAgent),否则实例创建会失败。

  3. 为 Secure Source Manager 服务账号授予 CryptoKey Encrypter/Decrypter IAM 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter)。为您创建的密钥授予此权限。

    控制台

    1. 前往密钥管理页面。

      前往“密钥管理”

    2. 选择要使用的密钥环,打开密钥环详细信息页面,然后选择您创建的密钥。

    3. 向 Secure Source Manager 服务账号授予访问权限:

      1. 点击添加主账号
      2. 添加 Secure Source Manager 服务账号。服务账号为 service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com,其中 PROJECT-NUMBER 是已启用 Secure Source Manager 的 Google Cloud 项目的项目编号
      3. 选择角色中,选择 Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter
      4. 点击保存
    4. 重复上一步,授予将创建 Secure Source Manager 实例的账号的访问权限。

    5. 返回到密钥管理页面,选择您的密钥环,然后打开密钥环详细信息页面。然后再次选择该密钥。

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

    gcloud

    1. 运行以下命令,向 Secure Source Manager 服务账号授予访问权限:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY_NAME --location LOCATION --keyring=KEY_RING \
             --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      替换以下内容:

      • PROJECT:包含密钥的项目的 ID
      • KEY_NAME:密钥名称
      • LOCATION:密钥位置。 密钥位置必须与您要部署 Secure Source Manager 实例的项目的位置相匹配
      • KEY_RING:密钥环名称
      • PROJECT_NUMBER:启用了 Secure Source Manager 的Google Cloud 项目的项目编号
    2. 重复上一步,授予将创建 Secure Source Manager 实例的账号的访问权限。

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

移除访问权限

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

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

停用或销毁实例的加密密钥时,您无法查看或检索实例中的数据。实例中存储的所有数据(包括代码历史记录、拉取请求和问题)都将无法访问。

具有 Secure Source Manager Instance Manager 角色或实例所有者角色的用户可以删除实例。

CMEK 组织政策

Secure Source Manager 支持可以要求 CMEK 保护的组织政策限制条件

政策可以限制哪些 Cloud KMS CryptoKey 可用于 CMEK 保护。

  • 当 Secure Source Manager API 位于限制条件 constraints/gcp.restrictNonCmekServices 的服务 Deny 政策列表中时,Secure Source Manager 会拒绝创建未受 CMEK 保护的新实例。

  • 配置 constraints/gcp.restrictCmekCryptoKeyProjects 后,Secure Source Manager 会创建受允许的项目、文件夹或组织中的 CryptoKey 保护的 CMEK 保护实例。

如需详细了解如何配置组织政策,请参阅 CMEK 组织政策

后续步骤