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_ID
、under:folders/FOLDER_ID
和 under: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.com
和 secretmanager.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.com
、storage.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 组织政策限制才会显示。
后续步骤
如需详细了解组织政策的优势和常见用例,请参阅组织政策服务简介。
如需有关创建具有特定限制条件的组织政策的更多示例,请参阅使用限制条件。