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 时的约束条件值
AlloyDB for PostgreSQL alloydb.googleapis.com
Apigee apigee.googleapis.com
Application Integration integrations.googleapis.com
Artifact Registry artifactregistry.googleapis.com
BigQuery bigquery.googleapis.com
Bigtable bigtable.googleapis.com
Cloud Composer composer.googleapis.com
Cloud Logging logging.googleapis.com
Cloud Run run.googleapis.com
Cloud Run 函数 cloudfunctions.googleapis.com
Cloud SQL sqladmin.googleapis.com
Cloud Storage storage.googleapis.com
Cloud Workstations workstations.googleapis.com
Colab Enterprise aiplatform.googleapis.com
Compute Engine compute.googleapis.com
Dataflow dataflow.googleapis.com
Dataproc dataproc.googleapis.com
Document AI documentai.googleapis.com
Filestore file.googleapis.com
Firestore firestore.googleapis.com
Google Kubernetes Engine预览版container.googleapis.com
Memorystore for Redis redis.googleapis.com
Pub/Sub pubsub.googleapis.com
Secret Manager secretmanager.googleapis.com
Secure Source Manager securesourcemanager.googleapis.com
Spanner spanner.googleapis.com
Speech-to-Text speech.googleapis.com
Vertex AI aiplatform.googleapis.com
Vertex AI Agent Builder discoveryengine.googleapis.com
Vertex AI Workbench 实例 notebooks.googleapis.com

CMEK 组织政策和 Storage Transfer Service

虽然 Storage Transfer Service 没有 CMEK 集成,但可以与 CMEK 组织政策搭配使用。如果您使用 Storage Transfer Service,并且希望确保存储在 Secret Manager 中的数据库凭据受 CMEK 保护,则必须将 storagetransfer.googleapis.comsecretmanager.googleapis.com 添加到 constraints/gcp.restrictNonCmekServices 约束条件中。如需了解详情,请参阅 Storage Transfer Service CMEK 文档

按资源类型划分的违规处置例外情况

在创建新资源或更改现有资源的 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 组织政策限制才会显示。

后续步骤

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

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