本页介绍如何创建 Google Cloud 文件夹,以便在资源层次结构中对项目 进行分组和整理。您可以使用文件夹来委派管理职责、强制执行特定于环境的组织政策,以及简化部门间的费用管理。
文件夹是 Cloud Platform 资源层次结构中的节点。 一个文件夹可以包含项目、其他文件夹或两者的组合。 组织资源可以使用文件夹按照一定的层次结构对组织资源节点中的项目进行分组。例如,您的组织资源可能包含多个部门, 每个部门都有自己的一组 Google Cloud 资源。借助文件夹,您可以按部门对这些资源进行分组。文件夹用于对共用相同允许或拒绝政策的资源进行分组。虽然一个文件夹可以包含多个文件夹或资源,但给定的文件夹或资源只能有一个父级。
在下图中,组织资源“Company”拥有三个文件夹,其中两个文件夹代表两个部门“Dept X”和“Dept Y”,另一个文件夹“Shared Infrastructure”代表两个部门可能共有的部分。在“Dept Y”下,部门分为两个团队,在团队文件夹中,他们进一步按产品划分。“Product 1”的文件夹包含三个项目,各具备项目所需的资源。这为他们提供了高度灵活性,便于在适当的精细程度时分配允许、拒绝或组织政策。
您可以使用文件夹级允许和拒绝政策来控制对文件夹所含资源的访问权限。例如,如果用户在文件夹中被授予 Compute Instance Admin 角色,则该用户对文件夹中的所有项目都拥有 Compute Instance Admin 角色。
准备工作
文件夹功能仅适用于拥有组织资源的 Google Workspace 和 Cloud Identity 客户。如需详细了解如何 获取组织资源,请参阅 获取组织资源。
如果您想要了解如何充分使用文件夹,我们建议您:
- 查看使用 IAM 控制文件夹访问权限。该主题介绍如何控制哪些人对文件夹和及其中包含的资源具有什么访问权限。该主题介绍如何控制哪些人对文件夹和及其中包含的资源具有什么访问权限。
- 了解如何设置文件夹权限。 文件夹支持许多不同的 Identity and Access Management (IAM) 角色。如果您想要广泛设置权限,以使用户能够看到项目结构,请在组织资源级层向整个网域授予 Organization Viewer 和 Folder Viewer 角色。要限制文件夹层次结构分支的公开范围,请针对您希望用户查看的一个或多个文件夹授予 Folder Viewer 角色。
- 创建文件夹。在规划如何组织云端资源时,我们建议您先将单个文件夹作为沙盒,在该文件夹中,您可以试验哪个层次结构最适合您的组织资源。根据资源和访问权限与配置政策连接点之间的隔离边界,考虑文件夹。您可以选择创建文件夹,以包含属于不同部门的资源,并针对文件夹分配管理员角色以委派管理员权限。文件夹还可用于对属于应用或不同环境的资源进行分组,如开发、生产、测试。请使用嵌套文件夹来对这些不同场景建模。
常见的场景是创建包含其他文件夹或项目的文件夹,如之前的资源层次结构所示。该结构称为文件夹层次结构。 创建文件夹层次结构时,请注意以下事项:
- 文件夹最多可以嵌套 10(十)层。
- 父文件夹包含的文件夹不得超过 300 个。该限额仅表示直接子文件夹。反过来,这些子文件夹可以包含其他文件夹或项目。
- 文件夹显示名在层次结构的同一层级内必须是唯一的。
设置文件夹管理权限
要访问和管理文件夹,您需要向特定用户组分配特定于文件夹的 IAM 角色。如需详细了解这些角色,请参阅 使用 IAM 控制文件夹访问权限。我们还 建议您查看我们的 最佳实践 以帮助您识别文件夹权限的最佳配置。
要管理整个组织资源的文件夹,您需要拥有 Folder Admin 角色。该角色向用户授予在文件夹上创建、修改、删除、移动和更改 IAM 权限的权限,以及在文件夹之间移动项目的权限。
最初,只有组织管理员才能为组织资源分配 Folder Admin 角色。后续被分配此角色的账号可以将其授予其他账号。
如需设置文件夹权限,请按以下步骤操作:
控制台
- 在 Google Cloud 控制台中,打开 管理资源 页面。
- 如果信息面板未打开,请点击显示信息面板 。
- 在资源 表中,展开包含文件夹的组织。
- 从组织下的资源列表中,选择要管理的文件夹。
- 在信息面板中,点击添加主账号 。
- 在添加正文 字段中,输入要授予权限的电子邮件地址。
- 在选择角色 菜单中,选择 Resource Manager 类别,然后选择要授予的角色,例如 Folder Admin 。
- 点击保存 以授予新角色。
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 个字符之间。
- 名称必须与同一父级下的所有其他文件夹不同。
如需创建文件夹,请按以下步骤操作:
控制台
您可以参阅“管理项目和文件夹”部分,在界面中创建文件夹。
前往控制台中的管理资源页面: Google Cloud
请务必在页面顶部的组织下拉列表中选择您的组织资源名称。
点击创建文件夹 ,然后选择以下选项之一:
- 标准文件夹:标准 文件夹资源。
- 合规文件夹: Assured Workloads 文件夹, 可为资源提供额外的监管、区域或主权控制 。 Google Cloud 选择此选项后,系统会将您转到 Assured Workloads 以 创建文件夹。
在文件夹名称 框中,输入新文件夹的名称。
在目标位置下,点击浏览,然后选择要在其中创建新文件夹的组织 资源或文件夹。
- 点击创建 。
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。
创建文件夹响应:
{
"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/projects/
Authorization: *************
Content-Type: application/json
{
"display_name": "our-folder-456",
"parent": "organizations/123",
"tags": {
"key": "123/environment"
"value": "production"
},
"tags": {
"key": "123/costCenter"
"value": "marketing"
}
}
配置对文件夹的访问权限
如需配置对文件夹的访问权限,您必须在父级拥有 Folder IAM Administrator 或 Folder Admin 角色。
控制台
在 Google Cloud 控制台中,打开管理资源 页面。
点击左上角的组织 下拉列表,然后选择您的组织资源。
选择要为其更改权限的项目旁边的复选框。
在右侧信息面板的权限下方,输入要添加的 成员的电子邮件地址。
在选择角色 下拉列表中,选择要授予这些成员的角色。
点击添加 。此时将显示一条通知,确认添加或更新成员的新角色。
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 命令。
如需使用该标志,请按以下步骤操作:
启动异步任务。请参阅以下示例命令:
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查看操作状态。如需验证任务是否已完成,请使用
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'
后续步骤
- 了解如何查看和更新文件夹。
- 了解如何在文件夹中管理项目。
- 了解文件夹的角色和权限。
- 了解如何列出资源层次结构中的所有文件夹和项目。