Logo
Section 1 / 8

资源结构与继承

本节课简要介绍GCP中资源的组织方式。

导入

资源结构与继承

本节课简要介绍GCP中资源的组织方式。

恭喜!你现在应该已经拥有一个 Google Cloud Platform 账号,并享有三个月内可用的 300 美元额度。这些额度足以让你全面学习 GCP 的所有服务(只要合理使用)。在本课中,我们将详细了解 GCP 项目的组织结构。

本课程将涵盖 Google Cloud 官方云工程师认证考试指南中列出的所有主题。

资源层级结构

Google Cloud Platform 的设计基于每个 GCP 账号对应一个组织单位。如果你是个人用户,或没有自定义域名邮箱,也可以在不绑定组织的情况下使用 GCP。

下面我们逐层详细讲解该层级结构。

Course Image

组织(Organization)

每个 GCP 账号只能有一个组织节点。当你使用以自定义域名结尾的邮箱(非 "@gmail.com")首次登录时,系统会自动创建该组织。例如,在下图中,名为 dockertutorials.in 的组织即被自动创建。

Organization is created automatically.
Organization is created automatically.
Hierarchy structure
Hierarchy structure

建议使用组织邮箱登录,这样你可以控制组织内的哪些用户可以访问 Google Cloud 控制台,哪些不可以。

创建组织节点有以下几种方式:

  1. 如果你使用 Google Workspace(原 G-Suite)管理组织的用户邮箱账户,组织节点将自动创建。

  2. 如果未使用 G-Suite,可通过 Cloud Identity 和 Cloud Directory Sync 服务,将其他 Active Directory 服务与 Google Cloud 账户集成。

默认情况下,新创建的组织允许任何人创建项目和结算账号。最佳实践是显式地为特定用户分配这些权限。

后续课程中你会进一步了解 Cloud Directory Sync 和 Cloud Identity 服务。请记住,这些服务的作用是保持 Active Directory 中的用户与 Google Cloud 用户同步。

文件夹(Folders)

GCP 的第二层组织结构是文件夹。文件夹仅用于对项目进行逻辑分组或隔离,使我们能够将企业的组织架构映射到 GCP 中。

如果某个团队希望将其所有与单一产品相关的项目归类在一起,就可以使用文件夹实现。同样,文件夹也适用于按部门或团队划分项目。上图展示了文件夹的典型使用场景。

当所有项目被归入某个文件夹后,应用于该文件夹的权限将自动继承给其下的所有项目和服务。

项目(Projects)

项目是 GCP 中最基本的管理单元。在 GCP 中使用的任何服务都必须归属于某个项目。除了 IAM 和结算功能(属于组织级服务)外,其他所有操作都需要依赖项目才能进行。

IAM(身份与访问管理):IAM 是 Google Cloud 提供的一项服务,用于控制用户对资源的访问权限,明确“谁”可以在“哪些资源”上执行“什么操作”。

结算账号相关内容将在后续课程中介绍。

每个项目必须关联一个结算账号,服务和资源的费用均按项目级别计费,而非组织或文件夹级别。因此,要使用 GCP 的任何服务,至少需要创建一个项目。

服务(Services)

服务是层级结构中的最底层单元。虚拟机、存储、数据库等所有具体服务都归属于某个项目。单个项目中可包含多个服务实例,这些也被称为终端资源。

示例:虚拟机实例(VM instance)、存储桶(Storage Bucket)。

权限继承机制

在 GCP 中,权限和角色至关重要。如果某用户在组织层级被授予 Storage Admin 角色,则其可在任意项目中创建、更新或删除存储服务。

同理,若某用户在文件夹层级被授予 Compute Admin 角色,则其可在该文件夹下的所有项目中创建、更新或删除计算实例或虚拟机。

因此,建议遵循 GCP 的“最小权限原则”,即仅授予用户完成任务所必需的最低权限。

权限在层级结构中自上而下继承。也就是说,资源的实际权限是其父级权限与自身权限的并集。

在 GCP IAM 中,权限不会直接授予最终用户。而是将权限打包为“角色”,再将角色授予经过身份验证的成员。IAM 策略定义并强制执行“哪些成员”被授予“哪些角色”,该策略随后绑定到具体资源。请注意:较宽松的父级策略可能会覆盖更严格的资源级策略。

通过 Cloud Storage 的示例来理解策略继承机制:

在 Cloud Storage 中,对象(objects)和存储桶(buckets)都是资源,其中存储桶是存放对象的容器。一个典型的 IAM 使用场景是控制对上传文件的读取权限。

假设多个用户向同一个存储桶上传文件,但不允许他们查看或删除他人上传的文件。

你的数据处理专家应能读取和删除所有已上传的文件,但不能删除存储桶本身,因为其他人还需使用该存储桶位置上传文件。在这种情况下,你可以在项目级别设置如下策略:

  • 将 storage Object Admin 角色授予你的数据处理专家 Alice(如 alice@example.com)。Alice 将拥有项目级别的对象管理员权限,可读取、添加或删除该项目中任意存储桶内的任意对象。

  • 将 Storage Object Creator 角色授予一个用户组 data_uploaders@example.com。这意味着该组成员均可上传文件至存储桶。上传者对自己上传的文件拥有所有权,但无法读取或删除其他用户上传的文件。下图说明了这一权限配置。

Permissions inheritance example.
Permissions inheritance example.

我们并未针对每个存储桶单独设置权限,而是在项目级别统一授权。此后在该项目下创建的所有存储桶都会继承项目级别定义的访问权限。

下一课中,我们将创建第一个项目。创建项目有多种方式,我们将重点介绍最快捷且标准的方法。现在请打开 GCP 控制台,进入下一课。

简介

创建项目:动手实践