如需详细了解限制条件及其解决的问题,请参阅所有组织政策服务限制条件的列表。
准备工作
添加 Organization Policy Administrator
要将用户添加为 Organization Policy Administrator,您必须具有 Organization Administrator 角色。此角色只能在组织层级授予。您必须具有 Organization Policy Administrator 角色才能设置或更改组织政策。
控制台
要添加组织政策管理员,请执行以下操作:
以 Google Workspace 或 Cloud Identity 超级用户身份登录 Google Cloud Console,然后转到 IAM 和管理页面:
选择要修改的组织:
点击页面顶部的项目下拉列表。
在请选择对话框中,点击组织下拉列表,然后选择要向其中添加组织政策管理员的组织。
在出现的列表中,点击组织以打开 IAM 权限页面。
点击添加,然后输入要设置为组织政策管理员的一个或多个用户的电子邮件地址。
在选择角色下拉列表中,依次选择组织政策 > Organization Policy Administrator。
点击保存。此时将显示一个对话框,确认添加或更新成员的新角色。
gcloud
在执行 gcloud
命令时,您可以使用 JSON 或 YAML 文件。本示例使用 JSON。
要为您的组织添加组织政策管理员,请执行以下操作:
- 获取您要修改的 IAM 政策,并将其写入 JSON 文件:
gcloud organizations get-iam-policy ORGANIZATION_ID \ --format json > iam.json
- JSON 文件的内容将如下所示。请注意,版本字段是只读的,因此您无需提供它。
- 使用文本编辑器向“bindings”数组添加一个新对象,以定义群组成员以及这些成员的角色。例如,要将角色“roles/orgpolicy.policyAdmin”授予用户“email2@gmail.com”,请按如下方式更改上方示例:
- 通过运行以下命令来更新组织的政策:
- 该命令会输出更新后的政策:
bindings: - members: - user:email1@gmail.com role: roles/owner - members: - serviceAccount:our-project-123@appspot.gserviceaccount.com - serviceAccount:123456789012-compute@developer.gserviceaccount.com role: roles/editor - members: - user:email2@gmail.com role: roles/orgpolicy.policyAdmin etag: BwUjMhXbSPU= version: 1
{ "bindings": [ { "members": [ "user:email1@gmail.com" ], "role": "roles/owner" }, { "members": [ "serviceAccount:our-project-123@appspot.gserviceaccount.com", "serviceAccount:123456789012-compute@developer.gserviceaccount.com" ], "role": "roles/editor" } ], "etag": "BwUjMhCsNvY=", "version": 1 }
{ "bindings": [ { "members": [ "user:email1@gmail.com" ], "role": "roles/owner" }, { "members": [ "serviceAccount:our-project-123@appspot.gserviceaccount.com", "serviceAccount:123456789012-compute@developer.gserviceaccount.com" ], "role": "roles/editor" }, { "members": [ "user:email2@gmail.com" ], "role": "roles/orgpolicy.policyAdmin" } ], "etag": "BwUjMhCsNvY=" }
gcloud organizations set-iam-policy ORGANIZATION_ID iam.json
将列表限制条件与组织政策结合使用
对组织资源设置强制执行
您可以针对组织资源设置组织政策,以使用列表限制条件来拒绝访问特定服务。以下过程介绍如何使用 gcloud 命令行工具设置组织政策。如需了解如何使用 Cloud Console 查看和设置组织政策的说明,请参阅创建和管理政策。
使用
describe
命令获取组织资源的当前政策:gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --organization ORGANIZATION_ID
其中:
ORGANIZATION_ID 是组织资源的唯一标识符。组织 ID 采用十进制数字的格式,不能添加前导零。
LIST_CONSTRAINT 是您要强制执行的服务的列表限制条件。
您还可以将组织政策应用于分别带有
--folder
或--project
标志以及文件夹 ID 和项目 ID 的文件夹或项目。由于未设置政策,因此返回的政策不完整,如以下示例所示:
constraint: "constraints/LIST_CONSTRAINT" etag: BwVJi0OOESU=
使用
deny
命令为要限制访问的服务添加拒绝的值。gcloud beta resource-manager org-policies deny \ LIST_CONSTRAINT VALUE_A \ --organization ORGANIZATION_ID
该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT etag: BwVJi0OOESU= listPolicy: deniedValues: - VALUE_A updateTime: CURRENT_TIME
使用
describe --effective
查看当前的有效政策。gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --effective \ --organization ORGANIZATION_ID
该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT listPolicy: deniedValues: - VALUE_A
由于该组织政策在组织层级设置,因此允许继承的所有子资源都将继承该政策。
针对层次结构子树设置强制执行
列表限制条件选用明确拒绝的值来确定应该允许或拒绝的资源。一些限制条件还可以接受使用前缀 under:
的值,该前缀指定了以该资源作为根的子树。如果在允许或拒绝的值上使用 under:
前缀,则组织政策将应用于该资源及其所有子级。如需了解允许使用 under:
前缀的限制条件,请参阅组织政策限制条件页面。
使用 under:
前缀的值称为层次结构子树字符串。层次结构子树字符串指定了其适用的资源类型。例如,如果在设置 constraints/compute.storageResourceUseRestrictions
限制时使用 projects/PROJECT_ID 的子树字符串,系统将允许或拒绝针对 PROJECT_ID 及其所有子级使用 Compute Engine 存储。
层次结构子树值前缀是 Beta 版功能,可能会以不向后兼容的方式更改,并且不在任何服务等级协议 (SLA) 或弃用政策的涵盖范围内。
使用
describe
命令获取组织资源的当前政策:gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --organization ORGANIZATION_ID
其中:
ORGANIZATION_ID 是组织资源的唯一标识符。
LIST_CONSTRAINT 是您要强制执行的服务的列表限制条件。
您还可以将组织政策应用于分别带有
--folder
或--project
标志以及文件夹 ID 和项目 ID 的文件夹或项目。由于未设置政策,因此返回的政策不完整,如以下示例所示:
constraint: "constraints/LIST_CONSTRAINT" etag: BwVJi0OOESU=
使用
deny
命令为要限制访问的服务添加拒绝的值。under:
前缀设置限制条件以拒绝命名资源及其所有子资源。gcloud beta resource-manager org-policies deny \ LIST_CONSTRAINT under:folders/VALUE_A \ --organization ORGANIZATION_ID
其中:
under: 是一个前缀,表示后面跟一个子树字符串。
folders/VALUE_A 是要拒绝的根资源的文件夹 ID。 将拒绝该资源及其在资源层次结构中的所有子级。
VALUE_B 和 VALUE_C 是层次结构中的项目,VALUE_A 是它们的父级。
Deny 命令的输出将为:
constraint: constraints/LIST_CONSTRAINT etag: BwVJi0OOESU= listPolicy: deniedValues: - under:folders/VALUE_A updateTime: CURRENT_TIME
如下列示例所示,您还可以将
under:
前缀应用于组织和项目:under:organizations/VALUE_X
under:projects/VALUE_Y
使用
describe --effective
查看当前的有效政策。gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --effective \ --organization ORGANIZATION_ID
该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT listPolicy: deniedValues: - under:folders/VALUE_A
现在,该政策的评估结果为拒绝文件夹 VALUE_A 及其所有子资源,在本例中为 VALUE_B 和 VALUE_C。
合并项目的组织政策
您可以针对资源设置自定义组织政策,该政策将与从其父级资源继承的任何政策合并。然后,系统将对合并后的政策进行评估,根据继承规则创建新的有效政策。
使用
describe
命令获取资源的当前政策:gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --project PROJECT_ID
其中:
PROJECT_ID 是项目的唯一标识符。
LIST_CONSTRAINT 是您要强制执行的服务的列表限制条件。
由于未设置政策,因此返回的政策不完整,如以下示例所示:
constraint: "constraints/LIST_CONSTRAINT" etag: BwVJi0OOESU=
使用
describe --effective
命令显示当前的有效政策:gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --effective \ --project PROJECT_ID
该命令的输出将包含从组织资源继承的拒绝值:
constraint: constraints/LIST_CONSTRAINT listPolicy: deniedValues: - VALUE_A
使用
set-policy
命令针对项目设置政策。创建临时文件
/tmp/policy.yaml
以存储政策:constraint: constraints/LIST_CONSTRAINT listPolicy: deniedValues: - VALUE_B - VALUE_C inheritFromParent: true
运行
set-policy
命令:gcloud beta resource-manager org-policies set-policy
--project PROJECT_ID /tmp/policy.yaml该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT etag: BwVLO2timxY= listPolicy: deniedValues: - VALUE_B - VALUE_C inheritFromParent: true
再次使用
describe --effective
命令显示更新后的政策:gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --effective \ --project PROJECT_ID
该命令的输出将包含合并来自资源和父级的政策的有效结果:
constraint: constraints/LIST_CONSTRAINT listPolicy: deniedValues: - VALUE_A - VALUE_B - VALUE_C
恢复默认限制条件行为
您可以使用组织政策中的 restoreDefault
值来重置政策,以使用限制条件的默认行为。以下示例假定默认限制条件行为是允许所有值。
获取项目的有效政策,以显示当前合并后的政策:
gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --effective \ --project PROJECT_ID
其中,PROJECT_ID 是项目的唯一标识符。该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT listPolicy: deniedValues: - VALUE_A - VALUE_B - VALUE_C
使用
set-policy
命令针对项目设置政策。创建临时文件
/tmp/restore-policy.yaml
以存储政策:restoreDefault: {} constraint: constraints/LIST_CONSTRAINT
运行
set-policy
命令:gcloud beta resource-manager org-policies set-policy
--project PROJECT_ID /tmp/restore-policy.yaml该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT etag: BwVJi9D3VLY= restoreDefault: {}
获取有效政策,以验证默认行为:
gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --effective \ --project PROJECT_ID
该命令的输出将允许所有值:
Constraint: constraints/LIST_CONSTRAINT listPolicy: allValues: ALLOW
删除组织政策
您可以删除资源中的组织政策。未设置组织政策的资源将继承其父级资源的任何政策。如果您删除组织资源上的组织政策,则有效政策将为限制条件的默认行为。
以下步骤描述了如何删除组织的组织政策:
使用
delete
命令删除组织资源的政策:gcloud beta resource-manager org-policies delete \ LIST_CONSTRAINT --organization ORGANIZATION_ID
其中 ORGANIZATION_ID 是组织资源的唯一标识符。该命令的输出将为:
Deleted [<Empty>].
获取组织的有效政策,以验证其是否未强制执行:
gcloud beta resource-manager org-policies describe \ LIST_CONSTRAINT --effective \ --organization ORGANIZATION_ID
该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT listPolicy: allValues: ALLOW
以下步骤描述了如何删除项目的组织政策:
使用
delete
命令删除项目的政策:gcloud beta resource-manager org-policies delete \ LIST_CONSTRAINT --project PROJECT_ID
其中,PROJECT_ID 是项目的唯一标识符。该命令的输出将为:
Deleted [<Empty>].
获取项目的有效政策,以验证其是否未强制执行:
gcloud beta resource-manager org-policies describe \ --effective \ LIST_CONSTRAINT --project PROJECT_ID
该命令的输出将为:
constraint: constraints/LIST_CONSTRAINT listPolicy: allValues: ALLOW
在组织政策中使用布尔值限制条件
针对组织资源设置强制执行
您可以针对组织资源设置组织政策,以强制执行布尔值限制条件。以下过程介绍如何使用 gcloud 命令行工具设置组织政策。如需了解如何使用 Cloud Console 查看和设置组织政策的说明,请参阅创建和管理政策。
使用
describe
命令获取组织资源的当前政策:gcloud beta resource-manager org-policies describe \ BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
其中 ORGANIZATION_ID 是组织资源的唯一标识符。您还可以将组织政策应用于分别带有
--folder
或--project
标志以及文件夹 ID 和项目 ID 的文件夹或项目。由于未设置政策,因此返回的政策不完整,如以下示例所示:
booleanPolicy: {} constraint: "constraints/BOOLEAN_CONSTRAINT"
使用
enable-enforce
命令设置政策,以便对组织强制执行:gcloud beta resource-manager org-policies enable-enforce \ BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
该命令的输出将为:
booleanPolicy: enforced: true constraint: constraints/BOOLEAN_CONSTRAINT etag: BwVJitxdiwY=
使用
describe --effective
查看当前的有效政策:gcloud beta resource-manager org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --organization ORGANIZATION_ID
该命令的输出将为:
booleanPolicy: enforced: true constraint: constraints/BOOLEAN_CONSTRAINT
替换项目的组织政策
要替换项目的组织政策,请设置一项政策,以停止对项目下方层次结构中的所有资源强制执行布尔值限制条件。
获取资源的当前政策,以显示其为空。
gcloud beta resource-manager org-policies describe \ BOOLEAN_CONSTRAINT --project PROJECT_ID
其中,PROJECT_ID 是项目的唯一标识符。该命令的输出将为:
booleanPolicy: {} constraint: "constraints/BOOLEAN_CONSTRAINT"
获取项目的有效政策,以确认对在该项目强制执行限制条件。
gcloud beta resource-manager org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project PROJECT_ID
该命令的输出将为:
booleanPolicy: enforced: true constraint: constraints/BOOLEAN_CONSTRAINT
使用
disable-enforce
命令针对项目设置政策,使之不强制执行限制条件:gcloud beta resource-manager org-policies disable-enforce \ BOOLEAN_CONSTRAINT --project PROJECT_ID
该命令的输出将为:
booleanPolicy: {} constraint: constraints/BOOLEAN_CONSTRAINT etag: BwVJivdnXvM=
获取有效政策,以显示不再对项目强制执行该政策。
gcloud beta resource-manager org-policies describe \ --effective \ BOOLEAN_CONSTRAINT --project PROJECT_ID
该命令的输出将为:
booleanPolicy: {} constraint: constraints/BOOLEAN_CONSTRAINT
删除组织政策
您可以删除资源中的组织政策。未设置组织政策的资源将继承其父级资源的任何政策。如果您删除组织资源上的组织政策,则有效政策将为限制条件的默认行为。
以下步骤描述了如何删除组织和项目的组织政策:
使用
delete
命令删除组织资源中的政策:gcloud beta resource-manager org-policies delete \ BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
其中 ORGANIZATION_ID 是组织资源的唯一标识符。该命令的输出将为:
Deleted [<Empty>].
获取组织的有效政策,以验证其是否未强制执行:
gcloud beta resource-manager org-policies describe \ --effective \ BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
该命令的输出将为:
booleanPolicy: {} constraint: constraints/BOOLEAN_CONSTRAINT
使用
delete
命令删除项目中的组织政策:gcloud beta resource-manager org-policies delete \ BOOLEAN_CONSTRAINT --project PROJECT_ID
该命令的输出将为:
Deleted [<Empty>].
获取项目的有效政策,以验证其是否未强制执行:
gcloud beta resource-manager org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project PROJECT_ID
其中 PROJECT_ID 是项目的唯一标识符。该命令的输出将为:
booleanPolicy: {} constraint: constraints/BOOLEAN_CONSTRAINT