应用 CMEK 组织政策

Google Cloud 提供两种组织政策限制条件,以强制执行整个组织范围内的 CMEK 使用情况:

  • constraints/gcp.restrictNonCmekServices 用于要求 CMEK 保护。

  • constraints/gcp.restrictCmekCryptoKeyProjects 用于限制哪些 CMEK 密钥可用于保护。

CMEK 组织政策仅适用于支持的 Google Cloud 服务中新创建的资源。

如需详细了解此功能的工作原理,请参阅Google Cloud 资源层次结构CMEK 组织政策

使用组织政策控制 CMEK 使用情况

NetApp Volumes 集成了 CMEK 组织政策限制条件,可让您指定组织中 NetApp Volumes 资源的加密合规性要求。

借助此集成,您可以执行以下操作:

所有 NetApp Volumes 资源都需要 CMEK

常见政策是要求使用 CMEK 来保护组织中的所有资源。您可以使用 constraints/gcp.restrictNonCmekServices 限制条件在 NetApp Volumes 中强制执行此政策。

如果设置,此组织政策会导致没有指定 Cloud KMS 密钥的所有资源创建请求失败。

设置此政策后,它仅适用于项目中的新资源。未设置 Cloud KMS 密钥的所有现有资源将继续存在,并且可以正常访问。

按照以下说明,使用 Google Cloud 控制台或 Google Cloud CLI 为 NetApp Volumes 资源强制执行 CMEK 使用。

控制台

  1. 打开组织政策页面。

    转到组织政策

  2. 过滤条件字段中,输入 constraints/gcp.restrictNonCmekServices,然后点击限制哪些服务可以在没有 CMEK 的情况下创建资源

  3. 点击 管理政策

  4. 修改政策页面,选择覆盖父资源的政策

  5. 选择添加规则

  6. 政策值下方,选择自定义

  7. 政策类型下,选择拒绝

  8. 自定义值字段中,输入 is:netapp.googleapis.com

  9. 点击完成,然后点击设置政策

gcloud

  1. 创建临时文件 /tmp/policy.yaml 以存储政策:

      name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices
      spec:
        rules:
        - values:
            deniedValues:
            - is:netapp.googleapis.com
    

    PROJECT_ID 替换为您要使用的项目的项目 ID。

  2. 运行 org-policies set-policy 命令:

      gcloud org-policies set-policy /tmp/policy.yaml
    

如需验证政策是否已成功应用,您可以尝试在项目中创建存储池。除非您指定 Cloud KMS 密钥,否则该过程将失败。

为 NetApp Volumes 项目限制 Cloud KMS 密钥

您可以使用 constraints/gcp.restrictCmekCryptoKeyProjects 限制条件来限制可用于保护 NetApp Volumes 项目中的资源的 Cloud KMS 密钥。

您可以指定规则,例如“对于 projects/my-company-data-project 中的所有 NetApp Volumes 资源,此项目中使用的 Cloud KMS 密钥必须来自 projects/my-company-central-keys 或 projects/team-specific-keys”。

按照以下说明使用 Google Cloud 控制台或 Google Cloud CLI 为 NetApp Volumes 项目强制执行 Cloud KMS 密钥。

控制台

  1. 打开组织政策页面。

    转到组织政策

  2. 过滤条件字段中,输入 constraints/gcp.restrictCmekCryptoKeyProjects,然后点击限制哪些项目可以为 CMEK 提供 KMS CryptoKey

  3. 点击 管理政策

  4. 修改政策页面,选择覆盖父资源的政策

  5. 选择添加规则

  6. 政策值下方,选择自定义

  7. 政策类型下,选择允许

  8. 自定义值字段中,输入以下内容:

    under:projects/KMS_PROJECT_ID
    

    KMS_PROJECT_ID 替换为您要使用的 Cloud KMS 密钥所在的项目 ID。

    例如 under:projects/my-kms-project

  9. 点击完成,然后点击设置政策

gcloud

  1. 创建临时文件 /tmp/policy.yaml 以存储政策:

      name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects
      spec:
        rules:
        - values:
            allowedValues:
            - under:projects/KMS_PROJECT_ID
    

    其中:

    • PROJECT_ID 是您要使用的项目的项目 ID。
    • KMS_PROJECT_ID 是您要使用的 Cloud KMS 密钥所在的项目 ID。
  2. 运行 org-policies set-policy 命令:

      gcloud org-policies set-policy /tmp/policy.yaml
    

如需验证政策是否已成功应用,您可以尝试使用其他项目中的 Cloud KMS 密钥创建存储池。该过程将失败。

限制

设置组织政策时存在以下限制。

现有资源

现有资源不受新创建的组织政策约束。例如,如果您创建了一项组织政策,要求您为每个 create 操作指定 CMEK,则该政策不会追溯应用于现有实例和备份链。这些资源在没有 CMEK 的情况下仍然可供访问。如果您想将政策应用于现有资源(例如存储池),则必须替换这些资源。

设置组织政策所需的权限

您需要在组织级层获授 Organization Policy Administrator 角色,才能出于测试目的设置或更新组织政策。

您仍然可以指定仅应用于特定项目或文件夹的政策。

Cloud KMS 密钥轮替的影响

当与资源关联的 Cloud KMS 密钥轮替时,NetApp Volumes 不会自动轮替资源的加密密钥。

  • 现有存储池中的所有数据都会继续受创建它们所使用的密钥版本的保护。

  • 任何新创建的存储池在创建时都使用指定的主密钥版本。

轮替密钥时,使用先前的密钥版本加密的数据不会自动重新加密。如需使用最新密钥版本加密数据,您必须先从资源中解密旧密钥版本,然后使用新密钥版本重新加密同一资源。此外,轮替密钥不会自动停用或销毁任何现有密钥版本。

如需详细了解如何执行每项任务,请参阅以下指南:

NetApp Volumes 对 Cloud KMS 密钥的访问权限

如果符合以下条件,Cloud KMS 密钥会被视为可由 NetApp Volumes 使用和访问:

  • 密钥已启用
  • NetApp Volumes 服务账号拥有该密钥的加密和解密权限

后续步骤