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
您的管理员或许还可以通过自定义角色或其他预定义角色向每位用户授予这些权限。
当组织政策处于有效状态时,Google Cloud 控制台用户创建受 CMEK 密钥保护的资源时,需要具备 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 |
Firestore (预览版) | firestore.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 组织政策限制才会显示。
后续步骤
如需详细了解组织政策的优势和常见使用场景,请参阅组织政策服务简介。
如需查看创建具有特定限制条件的组织政策的更多示例,请参阅使用限制条件。