创建文件夹

本页介绍如何创建 Google Cloud 文件夹,以便在资源层次结构中对项目 进行分组和整理。您可以使用文件夹来委派管理职责、强制执行特定于环境的组织政策,以及简化部门间的费用管理。

文件夹是 Cloud Platform 资源层次结构中的节点。 一个文件夹可以包含项目、其他文件夹或两者的组合。 组织资源可以使用文件夹按照一定的层次结构对组织资源节点中的项目进行分组。例如,您的组织资源可能包含多个部门, 每个部门都有自己的一组 Google Cloud 资源。借助文件夹,您可以按部门对这些资源进行分组。文件夹用于对共用相同允许或拒绝政策的资源进行分组。虽然一个文件夹可以包含多个文件夹或资源,但给定文件夹或资源只能有一个父级。

在下图中,组织资源“Company”拥有三个文件夹,分别代表“Standard Workloads”“Regulated Workloads”和“Shared infrastructure”。在“Regulated Workloads”下,文件夹按环境分为“Non-Prod Environment”和“Production Environment”。“Production Environment”文件夹进一步分为“Customer-Facing (Restricted)”和“Internal-Only (Standard)”文件夹,以强制执行以政策为中心的访问权限控制。“Test project”“Development project”和“生产环境 project”等项目包含项目所需的资源。这为在适当的精细程度时分配允许、拒绝或组织政策提供了高度灵活性。

包含工作负载、环境和项目的文件夹层次结构。

您可以使用文件夹级允许和拒绝政策来控制对文件夹所含资源的访问权限。例如,如果用户被授予文件夹的 Compute Instance Admin 角色,则该用户对文件夹中的所有项目都拥有 Compute Instance Admin 角色。

准备工作

文件夹功能仅适用于拥有组织资源的 Google Workspace 和 Cloud Identity 客户。如需详细了解如何 获取组织资源,请参阅 获取组织资源。

如果您想要了解如何充分使用文件夹,我们建议您:

  1. 查看使用 IAM 对文件夹进行访问权限控制。 该主题介绍了如何控制哪些人拥有对文件夹及其所含资源的哪些访问权限。
  2. 了解如何设置文件夹权限。 文件夹支持许多不同的 Identity and Access Management (IAM) 角色。如果您想要广泛设置权限,以使用户能够看到项目结构,请在组织资源级层向整个网域授予 Organization Viewer 和 Folder Viewer 角色。要限制文件夹层次结构分支的公开范围,请针对您希望用户查看的一个或多个文件夹授予 Folder Viewer 角色。
  3. 创建文件夹。在规划如何组织云端资源时,我们建议您先将单个文件夹作为沙盒,在该文件夹中,您可以试验哪个层次结构最适合您的组织资源。根据资源和访问权限与配置政策连接点之间的隔离边界,考虑文件夹。您可以选择创建文件夹,以包含属于不同部门的资源,并针对文件夹分配管理员角色以委派管理员权限。文件夹还可用于对属于应用或不同环境的资源进行分组,如开发、生产、测试。请使用嵌套文件夹来对这些不同场景建模。

常见的场景是创建包含其他文件夹或项目的文件夹,如之前的资源层次结构所示。该结构称为文件夹层次结构。 创建文件夹层次结构时,请注意以下事项:

  • 文件夹最多可以嵌套 10(十)层。
  • 父文件夹包含的文件夹不得超过 300 个。该限额仅表示直接子文件夹。反过来,这些子文件夹可以包含其他文件夹或项目。
  • 文件夹显示名在层次结构的同一层级内必须是唯一的。

设置文件夹管理权限

要访问和管理文件夹,您需要向特定用户组分配特定于文件夹的 IAM 角色。如需详细了解这些角色,请参阅 使用 IAM 对文件夹进行访问控制。我们还 建议您查看我们的 最佳实践 以帮助您识别文件夹权限的最佳配置。

如需管理整个组织资源的文件夹,您需要 Folder Admin 角色。该角色向用户授予在文件夹上创建、修改、删除、移动和更改 IAM 权限的权限,以及在文件夹之间移动项目的权限。

最初,只有组织管理员才能为组织资源分配 Folder Admin 角色。后续被分配此角色的账号可以将其授予其他账号。

如需设置文件夹权限,请按以下步骤操作:

控制台

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

    转到“管理资源”

  2. 如果信息面板未打开,请点击显示信息面板 。
  3. 在资源 表中,展开包含该文件夹的组织。
  4. 从组织下的资源列表中,选择要管理的文件夹。
  5. 在信息面板中,点击添加主账号 。
  6. 在添加主账号 字段中,输入要授予权限的电子邮件地址。
  7. 在选择角色 菜单中,选择 Resource Manager 类别,然后选择要授予的角色,例如 Folder Admin 。
  8. 点击保存 以授予新角色。

gcloud

如需使用 Google Cloud CLI 向主账号授予 Folder Admin 角色,请运行以下命令:

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member=user:USER_ID \
    --role=roles/resourcemanager.folderAdmin

REST

请求 JSON:

request_json= '{ policy: { version: "1", bindings: [ { role: "roles/folderAdmin",
members: [ "user:admin@myorganization.com", ] }, { role: "roles/folderCreator",
members: [ "user:admin@myorganization.com", ] } , { role: "roles/folderMover",
members: [ "user:admin@myorganization.com", ] } , ] } }'

Curl 请求:

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

将 ORGANIZATION_NAME 替换为要设置其允许政策的组织的名称,例如 organizations/123。

创建文件夹

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

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

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

如需创建文件夹,请按以下步骤操作:

控制台

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

  1. 前往 Google Cloud 控制台中的管理资源页面:

    打开“管理资源”页面

  2. 点击创建文件夹 ,然后选择以下选项之一:

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

  4. 在父级资源 下,点击浏览 ,然后选择要在其中创建新文件夹的组织 资源或文件夹。

    1. 点击创建 。

gcloud

您可以使用 Google Cloud CLI 以编程方式创建文件夹。

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

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

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

gcloud 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,
  parent: ORGANIZATION_NAME
}'

创建文件夹 curl 请求:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders

其中:

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

创建文件夹响应:

如果调用成功注册了操作,响应正文将包含一个 Operation 实例。

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

获取操作 curl 请求:

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

获取操作响应:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "DISPLAY_NAME",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.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"
  }
}

在创建文件夹期间添加标记

标记提供了一种为资源创建注解的方法。您可以在创建文件夹时添加标记。为此,您 必须授予Tag User角色。如需详细了解此角色中包含的权限,请参阅创建和管理标记。您只能通过以下方式之一添加标记键值对的命名空间:

gcloud

如需在创建文件夹期间添加标记,请运行以下命令:

  gcloud resource-manager folders create \
      --display-name=DISPLAY_NAME \
      --organization=ORGANIZATION_ID\
      --tags=KEY_VALUE_PAIRS

替换以下内容:

  • DISPLAY_NAME:文件夹的显示名。
  • ORGANIZATION_ID:父级组织资源的唯一标识符。
  • KEY_VALUE_PAIRS:您可以分配给资源的键值对的英文逗号分隔列表。以逗号分隔的键值对的示例为 123/environment=production, 456/create=testresource。

REST

以下代码段是一个 JSON 请求,用于创建文件夹并向其添加标记。

  POST https://cloudresourcemanager.googleapis.com/v3/folders/
  Authorization: *************
  Content-Type: application/json

  {
    "display_name": "our-folder-456",
    "parent": "organizations/123",
    "tags": {
      "123/environment": "production",
      "123/costCenter": "marketing"
    }
  }

检索文件夹 ID

您可以使用 Google Cloud 控制台或 Google Cloud CLI 检索文件夹的 ID。

控制台

  1. 在 Google Cloud 控制台中,打开管理资源页面。
  2. 在资源列表中找到您的文件夹。文件夹 ID 会显示在文件夹显示名旁边的 ID 列中。

gcloud

如需查找文件夹 ID,请运行以下命令:

gcloud resource-manager folders list --organization=ORGANIZATION_ID

传播延迟

创建新文件夹后,该文件夹可能需要一段时间才能通过我们的全球系统传播,并在 Google Cloud 控制台中显示。此传播延迟通常会在几分钟内解决,但在极少数情况下可能需要更长时间。您可以使用 gcloud 命令行工具或 API 立即验证文件夹的创建。

删除文件夹

如需删除文件夹,您必须拥有 Folder Admin 角色 (roles/resourcemanager.folderAdmin) 或文件夹编辑者角色 (roles/resourcemanager.folderEditor)。您必须先清空文件夹,然后才能将其删除。如需了解详细说明,请参阅 删除文件夹。

配置对文件夹的访问权限

如需配置对文件夹的访问权限,您必须在父级拥有 Folder IAM Administrator 或 Folder Admin 角色。

控制台

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

    打开“管理资源”页面

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

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

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

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

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

gcloud

您可以使用 Google Cloud CLI 或 REST API 以编程方式配置对文件夹的访问权限。

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

或者:

gcloud resource-manager folders \
    set-iam-policy FOLDER_ID POLICY_FILE

替换以下内容:

  • FOLDER_ID:新文件夹的 ID
  • POLICY_FILE:文件夹的政策文件的路径

API

setIamPolicy 方法设置文件夹的访问权限控制政策, 替换现有政策。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/v3/FOLDER_ID:setIamPolicy

将 FOLDER_ID 替换为要设置其 IAM 政策的文件夹的名称, 例如 folders/123。

处理长时间运行的操作

某些文件夹操作(例如创建或迁移)由异步处理 因为它们需要全局传播 Google Cloud 。为避免阻塞终端或自动化脚本,您可以使用 --async 标志。

使用此标志后,该命令会立即返回长时间运行的操作 (LRO) 对象。 然后,您可以根据需要使用 operation_id 轮询完成情况。--async 标志仅支持 folders create 和 folders move 命令。

如需使用该标志,请按以下步骤操作:

  1. 启动异步任务。请参阅以下示例命令:

    gcloud resource-manager folders create \
        --display-name="Test Async Folder" \
        --organization=2518 \
        --async
    

    输出提供操作名称(例如 fc.8572)并显示 done: false。

    示例响应:

    name: operations/fc.8572
    metadata:
    operation_type: CREATE
    display_name: Awe-Inspiring Async Folder
    destination_parent: organizations/2518
    done: false
    
  2. 查看操作的状态。如需验证任务是否已完成,请使用 operations describe 命令以及在上一步中提供的 ID。

    gcloud beta resource-manager operations describe fc.8572
    

    当 done 为 true 时,响应块将包含新创建资源的完整详细信息。

    name: operations/fc.8572
    done: true
    response:
      name: folders/6428
      display_name: Awe-Inspiring Async Folder
      lifecycle_state: ACTIVE
      create_time: '2024-03-20T10:00:00Z'
    

后续步骤