Google Cloud 提供两种组织政策限制条件,以帮助确保 CMEK 用量:
constraints/gcp.restrictNonCmekServices
用于要求 CMEK 保护。constraints/gcp.restrictCmekCryptoKeyProjects
用于限制 Cloud KMS 密钥用于保护 CMEK。
CMEK 组织政策仅适用于 支持的 Google Cloud 服务。
所需的角色
为了确保每位用户都拥有必要的
拥有在创建资源时检查组织政策的权限
请让管理员向每位用户授予
Organization Policy Viewer (roles/orgpolicy.policyViewer
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含 创建资源时检查组织政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建资源时需要以下权限来检查组织政策:
-
如需查看完整的组织政策详情,请执行以下操作:
orgpolicy.policy.get
-
如需在创建资源时检查组织政策,请执行以下操作:
orgpolicy.policies.check
您的管理员或许也能将每位用户 这些权限 使用自定义角色或 其他预定义角色。
当组织政策处于有效状态时,orgpolicy.policies.check
权限
Google Cloud 控制台用户创建的是
由 CMEK 密钥保护。没有此权限的用户可以创建受 CMEK 保护
使用 Google Cloud 控制台管理资源,但可以选择
restrictCmekCryptoKeyProjects
限制条件不允许。当某个键
则资源创建最终会失败。
需要 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
)。您可以通过配置
资源层次结构指示器的列表,并将限制条件设置为 Allow。
此配置会限制支持的服务,以便可以选择 CMEK 密钥
仅从列出的项目、文件夹和组织中导出。创建请求
配置的服务中受 CMEK 保护的资源在没有
来自某个允许的资源的 Cloud KMS 密钥。配置后
此限制条件适用于所有支持的服务。
支持的服务
服务 | 需要 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 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 |
Vertex AI | aiplatform.googleapis.com |
Vertex AI Agent Builder | discoveryengine.googleapis.com |
Vertex AI Workbench 实例 | notebooks.googleapis.com |
CMEK 组织政策和 Storage Transfer Service
虽然存储转移服务没有与 CMEK 集成,但可以与 CMEK 组织政策搭配使用。如果您使用 Storage Transfer Service 并希望
确保存储在 Secret Manager 中的数据库凭据
则您必须同时添加 storagetransfer.googleapis.com
和
secretmanager.googleapis.com
到 constraints/gcp.restrictNonCmekServices
限制条件。如需了解详情,请参阅 Storage Transfer Service CMEK
文档。
强制执行异常(按资源类型)
创建新资源时,系统会强制执行 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 并限制密钥
假设您希望对所有 Cloud Storage 资源启用 CMEK 保护
位于 projects/5
下,并确保只有来自 projects/4
的密钥可以
。
如需要求对所有新的 Cloud Storage 资源使用 CMEK 保护,请使用以下组织政策设置:
- 组织政策:
constraints/gcp.restrictNonCmekServices
- 绑定位置:
projects/5
- 政策类型:拒绝
- 政策值:
storage.googleapis.com
为了确保仅使用 projects/4
中的键,请使用以下配置:
- 组织政策:
constraints/gcp.restrictCmekCryptoKeyProjects
- 绑定位置:
projects/5
- 政策类型:允许
- 政策值:
projects/4
要求使用 CMEK 并将密钥限制在文件夹中
或者,假设您打算添加其他 Cloud KMS
folders/2
下的项目,并希望在更大范围内使用 CMEK
folders/3
内。在这种情况下,您需要
配置。
为新的 Cloud SQL 和 Cloud Storage 要求额外的 CMEK 保护
folders/3
下任意位置的资源:
- 组织政策:
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 控制台创建资源,可能会注意到
在出现以下情况时,不能使用 CMEK 以外的任何加密选项:
为项目配置了constraints/gcp.restrictNonCmekServices
,并且
服务。CMEK 组织政策限制仅在
客户账号已被授予 orgpolicy.policy.get
IAM
对项目的权限。
后续步骤
请参阅组织政策简介 服务 详细了解组织政策的优势和常见使用场景。
如需有关创建具有特定限制条件的组织政策的更多示例,请参阅使用限制条件。