按网域限制身份

Resource Manager 提供可在组织政策中使用的网域限制条件,用以限制基于网域的资源共享。借助该限制条件,您可以限制允许在 Cloud Identity and Access Management 政策中使用的一组身份。

组织政策可使用该限制条件将资源共享限制到指定的一个或多个 G Suite 网域,并可根据具体文件夹或项目授予例外。

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

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

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

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

设置组织政策

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

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

控制台

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

  1. 转到 Google Cloud Console 中的“组织政策”页面。
    转到“组织政策”页面
  2. 点击选择
  3. 选择要为其设置政策的组织。
  4. 点击网域限制共享
  5. 点击修改按钮。
  6. 应用对象下方,选择自定义
  7. 政策值下方,选择自定义
  8. 政策值文本框中输入一个 G Suite 客户 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 为 G Suite 客户 ID,例如 C03xgje4y。 应用该组织政策后,Cloud IAM 政策将只允许属于 allowed_values 列表中某个 G Suite 网域的身份。G Suite 人类用户和群组必须属于该 G Suite 网域,并且 Cloud IAM 服务帐号必须是与指定 G Suite 网域关联的组织资源的子级。

例如,如果您创建的组织政策只包含您公司 G Suite 的客户 ID,则从那一刻起,只能将来自该网域的成员添加到 Cloud 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.

检索 G Suite 客户 ID

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

gcloud

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

gcloud alpha organizations list

该命令将返回 DISPLAY_NAMEID(组织 ID)和 DIRECTORY_CUSTOMER_IDDIRECTORY_CUSTOMER_ID 为 G Suite 客户 ID。

API

您可以使用 G Suite 目录 API 检索 G Suite 客户 ID。

  1. 获取 https://www.googleapis.com/auth/admin.directory.customer.readonly 范围的 OAuth 访问令牌。
  2. 运行以下命令来查询 G Suite 目录 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 为 G Suite 客户 ID。

限制子网域

网域限制条件的作用是限制与指定 G Suite 客户 ID 关联的所有网域的访问权限。每个 G Suite 帐号只有一个主网域以及零个或多个辅助网域。所有与 G Suite 客户 ID 关联的网域都将受到此限制条件的约束。

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

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

主网域 子网域 网域限制条件 是否允许 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

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

排查已知问题

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

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

公开共享数据

某些 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。如需了解如何使用 Beta API 部署 Cloud Composer 环境,请参阅 Beta 版功能支持

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

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

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

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

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

强制授予帐号访问权限

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

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

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

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

或者,您可以将 Google 群组列入白名单:

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

  2. 使用 G Suite 管理员面板关闭该群组的网域限制。

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

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

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