应用 CMEK 组织政策

Google Cloud 提供两种组织政策限制条件,以帮助确保在整个组织范围内使用 CMEK:

  • constraints/gcp.restrictNonCmekServices 用于要求使用 CMEK 保护。
  • constraints/gcp.restrictCmekCryptoKeyProjects 用于限制用于 CMEK 保护的 Filestore 密钥。

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

如需更详细地了解其运作方式,请参阅 Google Cloud 资源层次结构CMEK 组织政策

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

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

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

以下部分介绍了这两项任务。

要求为所有 Filestore 资源使用 CMEK

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

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

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

控制台

  1. 打开组织政策页面。

    转到组织政策

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

  3. 点击 管理政策

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

  5. 选择添加规则

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

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

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

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

gcloud

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

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

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

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

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

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

限制 Filestore 项目的 Cloud KMS 密钥

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

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

控制台

  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 密钥创建实例或备份。该过程将失败。

限制

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

CMEK 可用性

请注意,基本 HDD 和基本 SSD 服务层级不支持 CMEK。鉴于这些约束条件的定义方式,如果您应用了要求使用 CMEK 的组织政策,然后尝试在关联的项目中创建基本层级实例或备份,这些创建操作将会失败。

现有资源

现有资源不受新创建的组织政策约束。例如,如果您创建了一项组织政策,要求您为每个 create 操作指定 CMK,则该政策不会向现有实例和备份链回溯应用。即使没有 CMEK,您仍然可以访问这些资源。如果您想将该政策应用于现有资源(无论是实例还是备份链),则必须替换这些资源。

设置组织政策所需的权限

出于测试目的,可能难以获取设置或更新组织政策的权限。必须具有 Organization Policy Administrator 角色,该角色只能在组织级层授予。

虽然该角色必须在组织级层授予,但仍然可以指定仅应用于特定项目或文件夹的政策。

Cloud KMS 密钥轮替的影响

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

  • 现有实例和备份中的所有数据都将继续受创建它们所使用的密钥版本的保护。

  • 任何新创建的实例或备份在创建时都使用指定的主键版本。

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

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

Filestore 对 Cloud KMS 密钥的访问权限

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

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

后续步骤