按网域限制身份

Resource Manager 提供可在组织政策中使用的网域限制条件,用以限制基于网域的资源共享。通过此限制条件,您可以限制允许在 Identity and Access Management 政策中使用的身份集合。

组织政策可使用该限制条件将资源共享限制到指定的一个或多个 Google Workspace 网域,并可根据具体文件夹或项目授予例外。如需详细了解添加异常情况,请参阅替换项目的组织政策

网域限制条件不具有追溯性。设置网域限制后,此限制将应用于在此之后对 IAM 政策所做的更改,而不会应用于在此之前所做的任何更改。

例如,假设有 examplepetstore.com 和 altostrat.com 两个相关组织。您已向 examplepetstore.com 身份授予 altostrat.com 的某一 IAM 角色。后来,您决定按网域限制身份,并在 altostrat.com 中实施了具有网域限制条件的组织政策。在这种情况下,现有的 examplepetstore.com 身份不会失去对 altostrat.com 的访问权限。从此刻开始,您只能向 altostrat.com 网域中的身份授予 IAM 角色。

网域限制条件是以 iam.allowedPolicyMemberDomains 列表限制条件为基础。

在对 Google Workspace 网域设置此限制条件时,将影响该网域中的所有身份,这包括在 Google Workspace 控制台中管理的用户帐号,但不包括在 Google Cloud Console 中管理的用户帐号。

设置组织政策

网域限制条件是一种列表限制条件。 您可以通过网域限制条件的 allowed_values 列表添加和移除 Google Workspace 客户 ID。与该 Google Workspace 帐号关联的所有网域都将受到组织政策的影响。

您必须拥有修改组织政策的权限才能设置该限制条件。例如,orgpolicy.policyAdmin 角色具有设置组织政策限制条件的权限。resourcemanager.organizationAdmin 角色具有将用户添加为 Organization Policy Administrator 的权限。 如需详细了解如何在组织级层管理政策,请参阅使用限制条件页面。

控制台

如需设置包含网域限制条件的组织政策,请执行以下操作:

  1. 转到 Cloud Console 中的“组织政策”页面。
    转到“组织政策”页面
  2. 点击选择
  3. 选择要为其设置政策的组织。
  4. 点击网域限制共享
  5. 点击修改按钮。
  6. 应用对象下方,选择自定义
  7. 政策值下方,选择自定义
  8. 政策值文本框中输入一个 Google Workspace 客户 ID,然后按 Enter 键。您可以通过该方式输入多个 ID。
  9. 点击保存。此时将显示一条通知,确认政策已更新。

gcloud

您可以通过 gcloud 命令行工具设置政策。如需创建包含网域限制条件的政策,请运行以下命令:

gcloud alpha resource-manager org-policies allow \
    --organization 'ORGANIZATION_ID' \
    iam.allowedPolicyMemberDomains 'DOMAIN_ID_1' \
    'DOMAIN_ID_2'

其中:

如需了解如何在组织政策中使用限制条件,请参阅使用限制条件

组织政策示例

以下代码段展示了一项包含网域限制条件的组织政策:

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.allowedPolicyMemberDomains"
  etag: "\a\005L\252\122\321\946\334"
  list_policy {
  allowed_values: "C03xgje4y"
  allowed_values: "C03g5e3bc"
  allowed_values: "C03t213bc"
  }
}

allowed_values 为 Google Workspace 客户 ID,例如 C03xgje4y。 应用该组织政策后,IAM 政策将只允许属于 allowed_values 列表中某个 Google Workspace 网域的身份。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 in the policy do not belong to a permitted customer.

检索 Google Workspace 客户 ID

网域限制条件使用的 Google Workspace 客户 ID 可通过两种方式获得:

gcloud

您可以使用 gcloud organizations list 命令查看自己拥有 resourcemanager.organizations.get 权限的所有组织:

gcloud alpha organizations list

此命令将返回 DISPLAY_NAMEID(组织 ID)和 DIRECTORY_CUSTOMER_IDDIRECTORY_CUSTOMER_ID 为 Google Workspace 客户 ID。

API

您可以使用 Google Workspace Directory API 检索 Google Workspace 客户 ID。

以 Google Workspace 管理员的身份登录后,您可以查看 Customers: get API 方法文档,然后点击执行。授权后,响应会显示您的客户 ID。

或者,您也可以使用 API 客户端:

  1. 获取 https://www.googleapis.com/auth/admin.directory.customer.readonly 范围的 OAuth 访问令牌。
  2. 运行以下命令以查询 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 Workspace 客户 ID 关联的所有网域的访问权限。每个 Google Workspace 帐号只有一个主网域以及零个或多个辅助网域。所有与 Google Workspace 客户 ID 关联的网域都将受到此限制条件的约束。

通过将网域限制条件应用于资源,可以控制能够访问该资源及其在资源层次结构中的后代的主网域和所有辅助网域。

如需查看常见 Google Workspace 网域和子网域组合的示例,请参阅下表:

主网域 子网域 网域限制条件 是否允许 user@sub.domain.com
domain.com 允许:domain.com
domain.com sub.domain.com 允许:domain.com
domain.com sub.domain.com 允许:sub.domain.com
sub.domain.com domain.com 允许:sub.domain.com
sub.domain.com 允许:sub.domain.com

如需区分两个网域之间的网域限制条件访问权限,每个网域都必须与不同的 Google Workspace 帐号关联。每个 Google Workspace 帐号都与一个组织节点相关联,并且可应用各自的组织政策。如此,您便能将 domain.com 与一个 Google Workspace 帐号关联,并将 sub.domain.com 与另一个 Google Workspace 帐号关联,从而实现更精细的访问权限控制。如需了解详情,请参阅管理多个组织

排查已知问题

组织政策不具有追溯性。如果您需要强制执行的资源层次结构更改违反了实施的限制条件,您可以停用组织政策、进行更改,然后再重新启用组织策略。

以下部分介绍了在实施此限制条件时服务可能发生的已知问题。

公开共享数据

某些 Google Cloud 产品(例如 BigQuery、Cloud Functions、Cloud Run、Cloud Storage 和 Pub/Sub)支持公开共享数据。在组织政策中实施网域限定共享限制条件将会阻止公开共享数据。

如需公开共享数据,请对您要共享的数据所在的项目资源暂时停用网域限定共享限制条件。公开共享资源后,您可以重新启用网域限定共享限制条件。

Cloud Billing 导出服务帐号

在启用该限制条件的情况下启用结算导出至存储分区可能会失败。请勿在用于导出结算数据的存储分区上使用该限制条件。

Cloud Billing 导出服务帐号电子邮件地址如下:509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com

Cloud Composer

Cloud Composer 的网域限定共享功能目前处于 Beta 版阶段。 在环境创建期间选择此功能后,系统会自动启用 Cloud Composer Beta 版 API

启用存储空间访问日志记录

启用后,网域限制条件将屏蔽组织政策中未明确允许的任何网域,同时还会阻止向 Google 服务帐号授予访问权限。如需对已实施网域限制条件的 Cloud Storage 存储分区设置存储空间访问日志记录,请执行以下操作:

  1. 移除包含网域限制条件的组织政策。

  2. cloud-storage-analytics@google.com 授予该存储分区的 WRITE 访问权限。

  3. 再次实施含有网域限制条件的组织政策。

Google 网上论坛

在强制执行网域限制条件时,系统始终可将 IAM 政策中的角色授予在允许网域内创建的 Google 网上论坛,即使该网上论坛包含该网域以外的成员也是如此。

为确保项目管理员无法绕过网域限制条件,Google Workspace 管理员在 Google Workspace 管理员面板中应确保该群组所有者不能允许网域以外的成员

强制帐号访问

对于违反网域限制的项目,如果您需要强制帐号访问:

  1. 移除包含网域限制条件的组织政策。

  2. 授予对项目的帐号访问权限。

  3. 再次实施含有网域限制条件的组织政策。

或者,您也可以向包含相关服务帐号的 Google 群组授予访问权限:

  1. 在允许的网域中创建 Google 群组。

  2. 使用 Google Workspace 管理员面板关闭该群组的网域限制

  3. 将服务帐号添加到群组。

  4. 在 IAM 政策中向 Google 群组授予访问权限。