CMEK 组织政策

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

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

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

所需的角色

为确保每个用户在创建资源时都拥有检查组织政策的必要权限,请让管理员向每个用户授予贵组织的 Organization Policy Viewer (roles/orgpolicy.policyViewer) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含创建资源时检查组织政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

在创建资源时,需要以下权限才能检查组织政策:

  • 如需查看完整的组织政策详情,请执行以下操作: orgpolicy.policy.get
  • 如需在创建资源时检查组织政策,请执行以下操作: orgpolicy.policies.check

您的管理员或许也可以通过自定义角色或其他预定义角色为每位用户授予这些权限。

当组织政策处于活动状态时,创建受 CMEK 密钥保护的资源的 Google Cloud 控制台用户需要 orgpolicy.policies.check 权限。没有此权限的用户可以使用 Google Cloud 控制台创建受 CMEK 保护的资源,但可以选择 restrictCmekCryptoKeyProjects 限制条件不允许的 CMEK 密钥。选择不符合此限制条件的密钥时,资源创建最终会失败。

需要 CMEK 保护

如需为您的组织要求 CMEK 保护,请配置 constraints/gcp.restrictNonCmekServices 组织政策。

作为列表限制条件,此限制条件可接受的值为 Google Cloud 服务名称(例如 sqladmin.googleapis.com)。如需使用此限制条件,请提供 Google Cloud 服务名称列表并将限制条件设置为拒绝。如果资源未受 CMEK 保护,此配置会阻止在这些服务中创建资源。换句话说,如果未指定 Cloud KMS 密钥,则在服务中创建资源的请求不会成功。此外,此限制条件阻止从这些服务的资源中移除 CMEK 保护。此限制条件只能应用于支持的服务

限制将 Cloud KMS 密钥用于 CMEK

如需限制用于 CMEK 保护的 Cloud KMS 密钥,请配置 constraints/gcp.restrictCmekCryptoKeyProjects 限制条件。

作为列表限制条件,接受的值为资源层次结构指示器(例如,projects/PROJECT_IDunder:folders/FOLDER_IDunder:organizations/ORGANIZATION_ID)。如需使用此限制条件,请配置资源层次结构指示器列表并将限制条件设置为允许。此配置对支持的服务进行了限制,以便只能从列出的项目、文件夹和组织中选择 CMEK 密钥。如果没有来自允许的某个资源的 Cloud KMS 密钥,则在已配置的服务中创建受 CMEK 保护的资源的请求不会成功。如果已配置,此限制条件适用于所有支持的服务

支持的服务

服务 需要 CMEK 时的限制条件值
Application Integration integrations.googleapis.com
Artifact Registry artifactregistry.googleapis.com
BigQuery bigquery.googleapis.com
Bigtable bigtable.googleapis.com
Cloud Composer composer.googleapis.com
Cloud Functions cloudfunctions.googleapis.com
Cloud Logging logging.googleapis.com
Cloud Run run.googleapis.com
Cloud SQL sqladmin.googleapis.com
Cloud Storage storage.googleapis.com
Cloud Workstations workstations.googleapis.com
Compute Engine compute.googleapis.com
Dataflow dataflow.googleapis.com
Dataproc dataproc.googleapis.com
Document AI documentai.googleapis.com
Filestore file.googleapis.com
Google Kubernetes Engine预览版container.googleapis.com
Pub/Sub pubsub.googleapis.com
Secret Manager secretmanager.googleapis.com
Spanner spanner.googleapis.com
Vertex AI aiplatform.googleapis.com
Vertex AI Workbench 实例 notebooks.googleapis.com

强制执行例外情况(按资源类型)

创建新资源或更改现有资源的 Cloud KMS 密钥(如果支持)时,系统会强制执行 CMEK 组织政策限制条件。通常,它们会针对支持 CMEK 的所有服务资源类型强制执行,并且仅基于资源配置执行。下面总结了一些值得注意的例外情况:

资源类型 强制执行例外情况
bigquery.googleapis.com/Dataset 已对数据集默认 Cloud KMS 密钥部分强制执行(仅限 gcp.restrictCmekCryptoKeyProjects
bigquery.googleapis.com/Job 仅限查询作业:对随查询提供的 Cloud KMS 密钥或结算项目中的默认密钥强制执行;另请参阅单独的项目默认 Cloud KMS 密钥的配置
bigquerydatatransfer.googleapis.com/TransferConfig 转移配置使用 Data Transfer Service 的服务名称 (bigquerydatatransfer.googleapis.com) 来实现 CMEK 组织政策限制条件。
container.googleapis.com/Cluster 预览版)仅对节点启动磁盘的 Cloud KMS 密钥强制执行;不会在应用层对 Secret 强制执行
logging.googleapis.com/LogBucket 对明确创建的日志存储分区强制执行;另请参阅确保内置日志存储分区合规性所需的单独配置
storage.googleapis.com/Bucket 对存储桶默认 Cloud KMS 密钥强制执行
storage.googleapis.com/Object 独立于存储桶强制执行;另请参阅单独的 存储桶默认 Cloud KMS 密钥的配置

配置示例

在配置示例中,假设示例组织具有以下资源层次结构:

组织资源层次结构图

需要 CMEK 并限制项目的密钥

假设您要为 projects/5 下的所有 Cloud Storage 资源要求 CMEK 保护,并确保只能使用来自 projects/4 的密钥。

如需为所有新的 Cloud Storage 资源要求 CMEK 保护,请使用以下组织政策设置:

  • 组织政策:constraints/gcp.restrictNonCmekServices
  • 绑定位置:projects/5
  • 政策类型:拒绝
  • 政策值:storage.googleapis.com

如需确保仅使用 projects/4 中的键,请使用以下配置:

  • 组织政策:constraints/gcp.restrictCmekCryptoKeyProjects
  • 绑定位置:projects/5
  • 政策类型:允许
  • 政策值:projects/4

需要 CMEK 并将密钥限制在文件夹中

或者,假设您希望将来在 folders/2 下添加其他 Cloud KMS 项目,并且希望在 folders/3 中更广泛地要求 CMEK。对于这种情况,您需要稍有不同的配置。

如需要求为 folders/3 下任何位置的新 Cloud SQL 和 Cloud Storage 资源提供额外的 CMEK 保护,请执行以下操作:

  • 组织政策:constraints/gcp.restrictNonCmekServices
  • 绑定位置:folders/3
  • 政策类型:拒绝
  • 政策值:sqladmin.googleapis.comstorage.googleapis.com

为了确保仅使用来自 folders/2 下 Cloud KMS 项目中的密钥,请执行以下操作:

  • 组织政策:constraints/gcp.restrictCmekCryptoKeyProjects
  • 绑定位置:folders/3
  • 政策类型:允许
  • 政策值:under:folders/2

组织需要 CMEK

如需在组织中的所有位置(在支持的服务中)要求使用 CMEK,请使用以下设置配置 constraints/gcp.restrictNonCmekServices 限制条件:

  • 组织政策:constraints/gcp.restrictNonCmekServices
  • 绑定位置:organizations/1
  • 政策类型:拒绝
  • 政策值:(所有支持的服务

限制

如果您使用 Google Cloud 控制台创建资源,可能会注意到,在为项目和服务配置 constraints/gcp.restrictNonCmekServices 时,您无法使用 CMEK 以外的任何加密选项。仅当客户帐号被授予项目的 orgpolicy.policy.get IAM 权限时,CMEK 组织政策限制才可见。

后续步骤

如需详细了解组织政策的优势和常见使用场景,请参阅组织政策服务简介

如需查看更多示例了解如何创建具有特定限制条件的组织政策,请参阅使用限制条件