Resource Manager 提供网域限制条件, (位于组织政策中) 根据网域或组织资源限制资源共享。这个 通过限制条件,您可以限制 (在 Identity and Access Management 政策中使用)。
组织政策可以使用此限制条件将资源共享限制为 属于特定组织资源的身份。或者 您可以指定一个或多个网域 按文件夹或项目授予。如需详细了解如何添加 请参见 替换项目的组织政策。
网域限制条件不具有追溯性。设置网域限制后,此限制将应用于在此之后对 IAM 政策所做的更改,而不会应用于在此之前所做的任何更改。 网域限制条件将应用于所有 IAM 政策更改,包括服务代理为响应其他操作而进行的更改。例如,如果您拥有用于导入 BigQuery 数据集的自动化服务,则 BigQuery 服务代理会对新创建的数据集进行 IAM 政策更改。此操作将受网域限制条件的限制并会被屏蔽。
例如,假设有 examplepetstore.com 和 altostrat.com 两个相关组织。您已向 examplepetstore.com 身份授予 altostrat.com 的某一 IAM 角色。后来,您决定按网域限制身份,并在 altostrat.com 中实施了具有网域限制条件的组织政策。在这种情况下,现有的 examplepetstore.com 身份不会失去对 altostrat.com 的访问权限。从此刻开始,您只能向 altostrat.com 网域中的身份授予 IAM 角色。
网域限制条件是以 iam.allowedPolicyMemberDomains
列表限制条件为基础。
在对 Google Cloud 组织资源设置此限制条件时,将影响该组织资源的所有父级身份。在对 Google Workspace 网域设置此限制条件时,将影响该网域中的所有身份,这包括在 而不是在 Google Cloud 控制台中 Google Workspace。
设置组织政策
网域限制条件是一种列表限制条件。
Google Workspace 客户 ID 和 Google Cloud 组织资源 ID 可以是
向网域限制的 allowed_values
列表添加和从中移除
限制条件。网域限制条件不支持拒绝值
和组织政策不能与 denied_values
列表中的 ID 一起保存。
组织政策将允许与 allowed_values
中列出的 Google Workspace 账号或组织资源关联的所有网域。全部
其他网域将会被组织政策拒绝。
您可以创建强制执行网域限制条件的组织政策 以 支持的资源列表。 例如,Cloud Storage 存储分区、BigQuery 数据集或 Compute Engine 虚拟机
您必须拥有修改组织政策的权限才能设置该限制条件。例如,orgpolicy.policyAdmin
角色具有设置组织政策限制条件的权限。resourcemanager.organizationAdmin
角色具有将用户添加为 Organization Policy Administrator 的权限。
如需详细了解如何在组织级层管理政策,请参阅使用限制条件页面。
控制台
如需设置包含网域限制条件的组织政策,请执行以下操作:
在 Google Cloud 控制台中,转到组织政策页面。
从项目选择器中,选择您要使用的组织资源 设置组织政策
在组织政策页面上,选择 限制列表中的网域限定共享。
在政策详情页面上,点击管理政策。
在应用对象下,选择覆盖父级政策。
点击添加规则。
在政策值下,选择“自定义”。注意:网域限制 限制条件不支持全部拒绝。
在政策类型下,选择允许。注意:网域限制 限制条件不支持 Deny 值。
在自定义值下,输入 组织资源 ID 或 Google Workspace 客户 ID 字段。
如果您想添加多个 ID,请点击新建政策值。 以创建额外的字段
点击完成。
(可选)要将网域限制条件设置为针对 代码中,点击添加条件。
在名称字段中,输入条件的名称。
在说明字段中,输入条件的说明。该说明介绍了所需标记的背景信息以及它们如何影响资源。
您可以使用条件构建器创建条件,要求具有特定标记限制条件才会生效。
在条件类型下拉菜单中 条件构建器标签页中,选择代码。
为条件选择运算符。要匹配整个标记,请使用匹配运算符。要匹配标记键和标记值,请使用匹配 ID 运算符。
如果您选择了匹配运算符,请输入标记的值命名空间名称。如果您选择了匹配 ID 运算符,请输入键和值 ID。
您可以通过点击添加创建多个条件。如果添加了其他条件,则可以通过切换和将条件逻辑设置为要求满足所有条件。您可以通过切换或将条件逻辑设置为仅要求其中一个条件为真。
您可以通过点击条件字段右侧的 X 来删除表达式。
完成条件修改后,点击保存。
如需强制执行政策,请点击设置政策。
gcloud
您可以通过 Google Cloud CLI 设置政策。如需创建包含网域限制条件的政策,请运行以下命令:
设置包含网域限制的组织政策 限制条件,请运行以下命令:
gcloud org-policies set-policy POLICY_PATH
其中,POLICY_PATH
是指向
组织政策 YAML 文件,如下所示:
name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
spec:
rules:
- condition: # This condition applies to the values block.
expression: "resource.matchTag('ORGANIZATION_ID/environment', 'dev')"
values:
allowedValues:
- PRINCIPAL_SET
- values:
allowedValues:
- PRINCIPAL_SET
替换以下内容:
- ORGANIZATION_ID(带有 要为其设置此政策的组织资源的 ID。
PRINCIPAL_SET(适用于您的 Cloud Identity 主账号标识符) 包括 组织资源 ID。例如
is:principalSet://iam.googleapis.com/organizations/01234567890123
。Google Workspace 客户 ID 必须用于: 要允许的所有其他身份。例如
is:C03g5e3bc
。
仅限属于组织资源 ID 或
“allowed_values
”列表中的 Google Workspace 域名将获准使用
应用此组织政策后的 IAM 政策。
Google Workspace 人类用户和群组必须是该组织资源的子级或属于该 Google Workspace 网域,并且 IAM 服务账号必须是与指定 Google Workspace 网域关联的组织资源的子级。
例如,如果您创建的组织政策只包含您公司 Google Workspace 的客户 ID,则从那一刻起,只能将来自该网域的主账号添加到 IAM 政策。
如需详细了解如何在组织政策中使用限制条件,请参阅使用限制条件。
错误消息示例
如果因尝试添加 allowed_values
列表中未包含的主账号而违反了组织的网域限制条件,则操作将失败并显示错误消息。
控制台
gcloud
ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: One or more users named in the policy do not belong to a permitted customer.
检索组织资源 ID
您可以使用 Google Cloud 控制台、 gcloud CLI 或 Cloud Resource Manager API。
控制台
如需使用 Google Cloud 控制台获取组织资源 ID,请执行以下操作: 以下:
- 前往 Google Cloud 控制台:
- 从页面顶部的项目选择器中选择您的组织 资源。
- 在右侧,点击更多,然后点击设置。
设置页面会显示您的组织资源 ID。
gcloud
如需查找您的组织资源 ID,请运行以下命令:
gcloud organizations list
此命令会列出您所属的所有组织资源, 及其对应的组织资源 ID。
API
要使用 Cloud Resource Manager API 查找您的组织资源 ID,请使用
organizations.search()
方法,包括对您网域的查询。例如:
GET https://cloudresourcemanager.googleapis.com/v3/organizations:search{query=domain:altostrat.com}
响应包含组织资源的元数据,
属于 altostrat.com
,其中包含组织资源 ID。
获得组织资源 ID 后,您需要使用正确的 属于它的一组主账号的标识符。例如:
principalSet://iam.googleapis.com/organizations/01234567890123
如需详细了解 IAM 主账号标识符,请参阅 主账号标识符。
检索 Google Workspace 客户 ID
网域限制条件使用的 Google Workspace 客户 ID 可通过两种方式获得:
gcloud
您可以使用 gcloud organizations list 命令查看自己拥有 resourcemanager.organizations.get
权限的所有组织:
gcloud organizations list
此命令将返回 DISPLAY_NAME
、ID
(组织 ID)和 DIRECTORY_CUSTOMER_ID
。DIRECTORY_CUSTOMER_ID
为 Google Workspace 客户 ID。
API
您可以使用 Google Workspace Directory API 检索 Google Workspace 客户 ID。
以 Google Workspace 管理员的身份登录后,您可以查看 Customers: get API 方法文档,然后点击执行。授权后,响应会显示您的客户 ID。
或者,您也可以使用 API 客户端:
- 获取
https://www.googleapis.com/auth/admin.directory.customer.readonly
范围的 OAuth 访问令牌。 运行以下命令以查询 Google Workspace 目录 API:
curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \ -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
该命令将返回包含客户信息的 JSON 响应。id
为 Google Workspace 客户 ID。
限制子网域
如果您在网域限制中允许 Google Cloud 组织资源 限制条件,则它允许访问与该限制条件相关联的所有资源 组织资源,并阻止对所有其他资源的访问。
如果您在网域限制条件中允许使用 Google Workspace 客户 ID, 它会限制对与该 Google Workspace 关联的所有网域的访问权限 客户 ID,并禁止访问所有其他客户。每个 Google Workspace 账号都有 一个主网域,以及零个或多个辅助网域。存在以下情况的所有网域 与 Google Workspace 客户 ID 相关联的产品将受到 限制条件。
对资源强制执行网域限制条件可控制主实例 网域以及可以访问该资源及其 资源层次结构中的后代。
如需查看常见 Google Workspace 网域和子网域组合的示例,请参阅下表:
主网域 | 子网域 | 网域限制条件 | 是否允许 user@sub.altostrat.com ? |
---|---|---|---|
altostrat.com | 无 | 允许:altostrat.com | 否 |
altostrat.com | sub.altostrat.com | 允许:altostrat.com | 是 |
altostrat.com | sub.altostrat.com | 允许:sub.altostrat.com | 是 |
sub.altostrat.com | altostrat.com | 允许:sub.altostrat.com | 是 |
sub.altostrat.com | 无 | 允许:sub.altostrat.com | 是 |
如需区分两个网域之间的网域限制条件访问权限,每个网域都必须与不同的 Google Workspace 账号关联。每个 Google Workspace 账号都与一个组织节点相关联,并且可应用各自的组织政策。如此,您便能将 altostrat.com
与一个 Google Workspace 账号关联,并将 sub.altostrat.com
与另一个 Google Workspace 账号关联,从而实现更精细的访问权限控制。如需了解详情,请参阅管理多个组织。
排查已知问题
组织政策不具有追溯性。如果您需要强制执行的资源层次结构更改违反了实施的限制条件,您可以停用组织政策、进行更改,然后再重新启用组织策略。
以下部分介绍了在实施此限制条件时服务可能发生的已知问题。
将 Google Analytics 360 与 BigQuery 相关联
如果您尝试将 Google Analytics 360 与 BigQuery 相关联
(在强制执行网域限制条件的情况下)操作会失败,并显示
One or more users named in the policy do not belong to a permitted
customer
错误消息,即使
analytics-processing-dev@system.gserviceaccount.com
服务账号是
已在项目级别添加为Editor
,
或者使用 Google 群组
如需将 Google Analytics 360 与 BigQuery 相关联,请执行以下操作:
公开共享数据
一些 Google Cloud 产品,比如 BigQuery、Cloud Run 函数 Cloud Run、Cloud Storage 和 Pub/Sub 支持公开数据 共享。在组织政策中实施网域限定共享限制条件将会阻止公开共享数据。
如需公开共享数据,请对您要共享的数据所在的项目资源暂时停用网域限定共享限制条件。公开共享资源后,您可以重新启用网域限定共享限制条件。
结算账号的 BigQuery 日志接收器
BigQuery 日志接收器用于结算账号的服务账号(格式:b*@*.iam.gserviceaccount.com
)被视为外部服务账号,并被组织政策中的网域限定共享限制条件阻止。如需向此服务账号授予已实施网域限制条件的项目中的 BigQuery 数据集上的角色,请执行以下操作:
停用 包含网域限制条件的组织政策。
向相应的服务账号(格式:
b*@*.iam.gserviceaccount.com
)授予在接收器创建过程中指定的 BigQuery 角色。强制执行 再也不必考虑网域限制条件
Cloud Billing 导出服务账号
在启用该限制条件的情况下启用结算导出至存储分区可能会失败。请勿在用于导出结算数据的存储分区上使用该限制条件。
Cloud Billing 导出服务账号电子邮件地址如下:509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com
启用存储空间访问日志记录
启用后,网域限制条件将屏蔽组织政策中未明确允许的任何网域,同时还会阻止向 Google 服务账号授予访问权限。如需对已实施网域限制条件的 Cloud Storage 存储桶设置存储空间访问日志记录,请执行以下操作:
授予服务代理角色
服务代理角色仅授予 服务账号。如果您需要授予此类角色,请执行以下操作:
启用 Firebase API
启用后,网域限制条件将屏蔽组织政策中不允许的服务账号。这就导致不能启用 Firebase API,在启用该 API 的过程中需要外部服务账号。启用 API 后,您可以安全地强制执行网域限制条件,而不会影响 Firebase API 的功能。如需启用 Firebase API,请执行以下操作:
Google 群组
如果您的组织强制执行网域限制条件,那么您可能无法向新创建的 Google 群组授予角色,即使这些群组属于允许的网域也是如此。这是因为最多可能需要 24 小时 让群组完全传播到 Google Cloud 中。如果您无法授予 角色分配给新创建的 Google 群组,请等待 24 小时,然后重试。
此外,在评估某个群组是否属于允许的网域时, IAM 仅评估群组的网域。我们不会评估 任何群组成员的域。因此,项目管理员可以 将外部成员添加到 Google,从而绕过网域限制条件 群组,然后为这些 Google 群组授予角色。
为了确保项目管理员无法绕过网域限制 限制,Google Workspace 管理员应确保群组所有者 不能允许来自 域名 Google Workspace 管理员面板。
强制授予账号访问权限
对于违反网域限制的项目,如果您需要强制账号访问:
移除包含网域限制条件的组织政策。
授予对项目的账号访问权限。
再次实施含有网域限制条件的组织政策。
或者,您也可以向包含相关服务账号的 Google 群组授予访问权限:
在允许的网域中创建 Google 群组。
使用 Google Workspace 管理员面板关闭该群组的网域限制。
将服务账号添加到群组。
在 IAM 政策中向 Google 群组授予访问权限。
使用 Pub/Sub 作为 Google Chat 应用的端点。
当您尝试向 Google Chat API 服务账号授予对您主题的发布权限时,如果“受限网域共享”约束条件处于启用状态,您可能会被屏蔽。请按照流程强制授予账号访问权限。