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 时的限制条件值 |
---|---|
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.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 组织政策限制才可见。
后续步骤
如需详细了解组织政策的优势和常见使用场景,请参阅组织政策服务简介。
如需查看更多示例了解如何创建具有特定限制条件的组织政策,请参阅使用限制条件。