管理多个组织

Google Cloud Platform 资源层次结构中,项目和文件夹的所有权会在组织节点下方建立。您的 Google Workspace 或 Cloud Identity 帐号只能关联至一个组织节点。每个 Google Workspace 或 Cloud Identity 帐号还会与一个网域关联,例如 example.com

对于大多数使用场景而言,最好使用一个组织节点下的文件夹。如果您希望将公司内的各子组织或部门视为独立实体进行维护,而不实施集中管理,则可以通过设置多个 Google Workspace 或 Cloud Identity 帐号来实现此目的。每个帐号都将附带一个关联至一个网域的组织节点。

使用多个组织节点产生的影响

如果您不希望来自一个 Google Workspace 或 Cloud Identity 帐号的用户访问由来自其他 Google Workspace 或 Cloud Identity 帐号的用户创建的资源,可使用多个组织节点来实现此目的。但是,将资源分隔成多个组织节点会产生以下后果:

  • 默认情况下,所有用户都将无法集中查看和控制所有资源。

  • 若想在每个组织节点上执行复制操作,您需要配置在各子组织之间通用的政策。

  • 系统不会自动在组织节点之间移动项目和文件夹,而是需要支持请求。

  • 每个组织节点都需要一个 Google Workspace 帐号。因此,运营多个组织节点就需要使用多个 Google Workspace 帐号,并且需要能够跨帐号管理身份。

使用单个组织节点

对于大多数想要独立维护各子组织的组织来说,可以使用单个组织节点及其文件夹来实现此目的。如果您使用一个 Google Workspace 帐号,则该帐号会映射到组织节点,并且各子组织会映射到文件夹。

选择组织管理员

您可以选择一个或多个用户作为组织节点的 IAM 组织管理员。

控制台

要添加组织管理员,请执行以下操作:

  1. 以 Google Workspace 或 Cloud Identity 超级用户身份登录 Google Cloud Console,然后导航到 IAM 和管理页面:

    打开“IAM 和管理”页面

  2. 选择要修改的组织:

    1. 点击页面顶部的项目下拉列表。

    2. 请选择:对话框中,点击组织下拉列表,然后选择要向其中添加组织管理员的组织。

    3. 在随即显示的列表中,点击相应组织以打开其 IAM 权限页面。

  3. 点击添加,然后输入要设置为组织管理员的一个或多个用户的电子邮件地址。

  4. 选择角色下拉列表中,选择 Resource Manager > Organization Administrator,然后点击保存

    组织管理员可以执行以下操作:

    • 完全控制组织。Google Workspace 或 Cloud Identity 超级用户和 Google Cloud 管理员之间已实现职责分离。

    • 分配相关 IAM 角色以委派对关键职能的责任。

为子组织创建文件夹

您可以在组织节点下为每个子组织创建一个文件夹。

要创建文件夹,您必须在父级拥有 Folder AdminFolder Creator 角色。例如,要在组织层级创建文件夹,您必须在组织层级拥有这些角色之一。

作为创建文件夹的一部分,您必须为其分配一个名称。文件夹名称必须符合以下要求:

  • 名称可以包含字母、数字、空格、连字符和下划线。
  • 文件夹显示名的开头和结尾都必须是字母或数字。
  • 名称的长度必须介于 3 到 30 个字符之间。
  • 名称必须与同一父级下的所有其他文件夹不同。

要创建文件夹,请执行以下操作:

控制台

您可以参阅“管理项目和文件夹”部分,在界面中创建文件夹。

  1. 转到 Cloud Console 中的管理资源页面:

    打开“管理资源”页面

  2. 请务必在页面顶部的组织下拉列表中选择您的组织名称。

  3. 点击创建文件夹

  4. 文件夹名称框中,输入新文件夹的名称。

  5. 目标位置下,点击浏览,然后选择要在其中创建新文件夹的组织节点或文件夹。

    1. 点击创建

gcloud

您可以使用 gcloud 命令行工具以编程方式创建文件夹。

要使用 gcloud 命令行工具在组织资源下创建文件夹,请运行以下命令。

gcloud alpha resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --organization=[ORGANIZATION_ID]

要创建其父级是另一个文件夹的文件夹,请运行以下命令:

gcloud alpha resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --folder=[FOLDER_ID]

其中:

  • [DISPLAY_NAME] 是文件夹的显示名。具有同一父级的两个文件夹的显示名必须不同。显示名的开头和结尾都必须是字母或数字,可以包含字母、数字、空格、连字符和下划线,不能超过 30 个字符。
  • 如果父级是组织,则 [ORGANIZATION_ID] 是父级组织的 ID。
  • 如果父级是文件夹,则 [FOLDER_ID] 是父级文件夹的 ID。

API

您可以通过 API 请求创建文件夹

请求 JSON:

request_json= '{
  display_name: "[DISPLAY_NAME]"
}'

创建文件夹 curl 请求:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v2/folders?parent=[ORGANIZATION_NAME]

其中:

  • [DISPLAY_NAME] 是新文件夹的显示名,如“My Awesome Folder”。
  • [ORGANIZATION_NAME] 是您要在其中创建文件夹的组织名称,例如 organizations/123

创建文件夹响应:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v2.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  }
}

获取操作 curl 请求:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v1/operations/fc.123456789

获取操作响应:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v2.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v2.Folder",
    "name": "folders/12345",
    "parent": "organizations/123",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-19T23:29:26.046Z"
  }
}

授予文件夹管理员角色

对于您创建的每个子组织文件夹,请向一个或多个用户授予文件夹管理员角色。这些用户将拥有文件夹及其代表的子组织的管理控制权。

要配置对文件夹的访问权限,您必须在父层级拥有文件夹 IAM 管理员文件夹管理员角色。

控制台

  1. 在 Google Cloud Console 中,打开管理资源页面。

    打开“管理资源”页面

  2. 点击左上角的组织下拉列表,然后选择您的组织。

  3. 选择要为其更改权限的项目旁边的复选框。

  4. 在右侧信息面板权限下方,输入要添加的成员的电子邮件地址。

  5. 选择角色下拉列表中,选择要为这些成员授予的角色。

  6. 点击添加。此时将显示一条通知,确认添加或更新成员的新角色。

gcloud

您可以使用 gcloud 命令行工具或 API 以编程方式配置对文件夹的访问权限。

gcloud alpha resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderEditor

gcloud alpha resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderViewer

或者,您也可以使用:

gcloud alpha resource-manager \
  folders set-iam-policy [FOLDER_ID] [POLICY_FILE]

其中:

  • [FOLDER_ID] 是新文件夹的 ID。
  • [POLICY_FILE] 是文件夹政策文件的路径。

API

SetsIamPolicy 设置文件夹的访问控制政策,替换现有政策。resource 字段应该是文件夹的资源名称,例如 folders/1234

 request_json= '{
   policy: {
     version: "1",
     bindings: [
       {
         role: "roles/resourcemanager.folderEditor",
         members: [
           "user:email1@example.com",
           "user:email2@example.com",
         ]
       }
     ]
   }
 }'

Curl 请求:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v2/[FOLDER_NAME]:setIamPolicy

其中:

  • [FOLDER_NAME] 是正在设置的 IAM 政策所属的文件夹的名称,例如 folders/123。

限制子组织角色

每个文件夹管理员可以限制只有其子组织的成员才能具备项目创建者角色。Folder Admin 还可以在组织节点的 IAM 政策中移除网域的 Project Creator 角色。

Google Workspace 超级用户具有不可撤消的组织管理员权限。这些超级用户通常管理身份和身份政策,而不管理 Google Cloud 资源和资源政策。

控制台

要使用 Google Cloud Console 移除系统默认分配给用户的角色,请执行以下操作:

  1. 转到 Cloud Console 中的管理资源页面:

    打开“管理资源”页面

  2. 在页面顶部,点击组织下拉列表,然后选择您的组织。

  3. 选择要为其更改权限的组织资源对应的复选框。如果您没有文件夹资源,则组织资源将不可见。请参阅 IAM 页面上的角色撤消说明以继续操作。

  4. 在右侧面板的权限下,点击以展开要从中移除用户的角色。

  5. 在展开的角色列表中,找到要从角色中移除的成员,点击旁边的“移除”。 界面屏幕截图

  6. 在显示的要删除成员吗?对话框中,点击移除以确认移除指定成员的相应角色。

  7. 对要移除的每个角色重复前两个步骤。

示例

下图演示的组织使用文件夹区分两个部门。工程部和财务部的主管拥有管理控制权,其他用户无法创建项目。

层次结构图

使用多个组织节点

如果您的组织使用多个 Google Workspace 帐号,那么默认情况下,您将拥有多个组织节点。要维持集中查看和控制的能力,您应该选择一个组织节点作为主组织节点。与主组织节点关联的 Google Workspace 帐号的超级用户将对所有资源拥有管理控制权,包括由来自其他 Google Workspace 帐号的用户创建的资源。来自这些 Google Workspace 帐号的用户将获得访问主组织节点下的文件夹的权限,因此将能够在其中创建项目。

选择组织管理员

您可以选择一个或多个用户作为组织节点的 IAM 组织管理员。

控制台

要添加组织管理员,请执行以下操作:

  1. 以 Google Workspace 或 Cloud Identity 超级用户身份登录 Google Cloud Console,然后导航到 IAM 和管理页面:

    打开“IAM 和管理”页面

  2. 选择要修改的组织:

    1. 点击页面顶部的项目下拉列表。

    2. 请选择:对话框中,点击组织下拉列表,然后选择要向其中添加组织管理员的组织。

    3. 在随即显示的列表中,点击相应组织以打开其 IAM 权限页面。

  3. 点击添加,然后输入要设置为组织管理员的一个或多个用户的电子邮件地址。

  4. 选择角色下拉列表中,选择 Resource Manager > Organization Administrator,然后点击保存

    组织管理员可以执行以下操作:

    • 完全控制组织。Google Workspace 或 Cloud Identity 超级用户和 Google Cloud 管理员之间已实现职责分离。

    • 分配相关 IAM 角色以委派对关键职能的责任。

移除 Project Creator 角色

您可以移除组织节点的 Project Creator 角色,以确保不在其他组织节点中创建资源。

控制台

要使用 Google Cloud Console 移除系统默认分配给用户的角色,请执行以下操作:

  1. 转到 Cloud Console 中的管理资源页面:

    打开“管理资源”页面

  2. 在页面顶部,点击组织下拉列表,然后选择您的组织。

  3. 选择要为其更改权限的组织资源对应的复选框。如果您没有文件夹资源,则组织资源将不可见。请参阅 IAM 页面上的角色撤消说明以继续操作。

  4. 在右侧面板的权限下,点击以展开要从中移除用户的角色。

  5. 在展开的角色列表中,找到要从角色中移除的成员,点击旁边的“移除”。 界面屏幕截图

  6. 在显示的要删除成员吗?对话框中,点击移除以确认移除指定成员的相应角色。

  7. 对要移除的每个角色重复前两个步骤。

为 Google Workspace 帐号创建文件夹

您可以在组织节点下为每个 Google Workspace 帐号创建一个文件夹。

要创建文件夹,您必须在父级拥有 Folder AdminFolder Creator 角色。例如,要在组织层级创建文件夹,您必须在组织层级拥有这些角色之一。

作为创建文件夹的一部分,您必须为其分配一个名称。文件夹名称必须符合以下要求:

  • 名称可以包含字母、数字、空格、连字符和下划线。
  • 文件夹显示名的开头和结尾都必须是字母或数字。
  • 名称的长度必须介于 3 到 30 个字符之间。
  • 名称必须与同一父级下的所有其他文件夹不同。

要创建文件夹,请执行以下操作:

控制台

您可以参阅“管理项目和文件夹”部分,在界面中创建文件夹。

  1. 转到 Cloud Console 中的管理资源页面:

    打开“管理资源”页面

  2. 请务必在页面顶部的组织下拉列表中选择您的组织名称。

  3. 点击创建文件夹

  4. 文件夹名称框中,输入新文件夹的名称。

  5. 目标位置下,点击浏览,然后选择要在其中创建新文件夹的组织节点或文件夹。

    1. 点击创建

gcloud

您可以使用 gcloud 命令行工具以编程方式创建文件夹。

要使用 gcloud 命令行工具在组织资源下创建文件夹,请运行以下命令。

gcloud alpha resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --organization=[ORGANIZATION_ID]

要创建其父级是另一个文件夹的文件夹,请运行以下命令:

gcloud alpha resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --folder=[FOLDER_ID]

其中:

  • [DISPLAY_NAME] 是文件夹的显示名。具有同一父级的两个文件夹的显示名必须不同。显示名的开头和结尾都必须是字母或数字,可以包含字母、数字、空格、连字符和下划线,不能超过 30 个字符。
  • 如果父级是组织,则 [ORGANIZATION_ID] 是父级组织的 ID。
  • 如果父级是文件夹,则 [FOLDER_ID] 是父级文件夹的 ID。

API

您可以通过 API 请求创建文件夹

请求 JSON:

request_json= '{
  display_name: "[DISPLAY_NAME]"
}'

创建文件夹 curl 请求:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v2/folders?parent=[ORGANIZATION_NAME]

其中:

  • [DISPLAY_NAME] 是新文件夹的显示名,如“My Awesome Folder”。
  • [ORGANIZATION_NAME] 是您要在其中创建文件夹的组织名称,例如 organizations/123

创建文件夹响应:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v2.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  }
}

获取操作 curl 请求:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v1/operations/fc.123456789

获取操作响应:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v2.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v2.Folder",
    "name": "folders/12345",
    "parent": "organizations/123",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-19T23:29:26.046Z"
  }
}

授予文件夹管理员角色

对于创建的每个文件夹,请向一个或多个用户授予文件夹管理员角色。这些用户将获得对文件夹及其代表的子组织的管理控制权。

要配置对文件夹的访问权限,您必须在父层级拥有文件夹 IAM 管理员文件夹管理员角色。

控制台

  1. 在 Google Cloud Console 中,打开管理资源页面。

    打开“管理资源”页面

  2. 点击左上角的组织下拉列表,然后选择您的组织。

  3. 选择要为其更改权限的项目旁边的复选框。

  4. 在右侧信息面板权限下方,输入要添加的成员的电子邮件地址。

  5. 选择角色下拉列表中,选择要为这些成员授予的角色。

  6. 点击添加。此时将显示一条通知,确认添加或更新成员的新角色。

gcloud

您可以使用 gcloud 命令行工具或 API 以编程方式配置对文件夹的访问权限。

gcloud alpha resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderEditor

gcloud alpha resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderViewer

或者,您也可以使用:

gcloud alpha resource-manager \
  folders set-iam-policy [FOLDER_ID] [POLICY_FILE]

其中:

  • [FOLDER_ID] 是新文件夹的 ID。
  • [POLICY_FILE] 是文件夹政策文件的路径。

API

SetsIamPolicy 设置文件夹的访问控制政策,替换现有政策。resource 字段应该是文件夹的资源名称,例如 folders/1234

 request_json= '{
   policy: {
     version: "1",
     bindings: [
       {
         role: "roles/resourcemanager.folderEditor",
         members: [
           "user:email1@example.com",
           "user:email2@example.com",
         ]
       }
     ]
   }
 }'

Curl 请求:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v2/[FOLDER_NAME]:setIamPolicy

其中:

  • [FOLDER_NAME] 是正在设置的 IAM 政策所属的文件夹的名称,例如 folders/123。

然后,每个 Folder Admin 可为关联网域中的用户授予 Project Creator 角色。

示例

下图演示的组织的主网域与获取的辅助网域保持分离。这两个网域中的每个网域均具备各自的 Google Workspace 帐号,其中 hypothetical.com 是主组织节点。

层次结构图