第 1 章

GCP 基础

⏱️ 150 分钟📚 Setting up a cloud solution environment难度:
📝 25 题练习
备考助手

GCP 基础

📖 为什么从"基础"开始?

GCP ACE 考试有四个大域,而 Setting up a cloud solution environment 占了约 17.5% 的分数。这个域考的全是基础:项目怎么组织、权限怎么给、钱怎么管。听起来简单,但很多人在这里丢分——因为他们觉得"这些我都知道",结果被细节题绊倒。

GCP ACE (Google Cloud Associate Cloud Engineer) — Google 云平台的助理级工程师认证。 和 AWS SAA 侧重"架构设计"不同,ACE 更偏"动手操作":考题经常给你一个场景,问你该敲什么命令、选哪个配置。 简单记:SAA = 画架构图的人,ACE = 实际搭环境的人

本章覆盖四个核心话题:GCP 全球基础设施、资源组织方式、IAM 权限管理、账单与成本控制。


📖 1. GCP 全球基础设施

1.1 为什么要关心"基础设施在哪"?

你选择在哪个 Region 部署资源,直接决定了三件事:延迟(用户访问快不快)、合规(数据能不能出境)、可用性(挂了一个机房还能不能用)。考试里经常给一个场景——"澳洲用户为主,要满足数据主权要求"——答案就是选 australia-southeast1

1.2 Region、Zone、Multi-region

Region(区域) — 一个独立的地理位置,比如 asia-east1(台湾)、us-central1(爱荷华)。 你可以理解为"一座城市里的数据中心集群"。同一个 Region 内的服务之间网络延迟极低。

Zone(可用区) — Region 内部的一个独立数据中心,比如 asia-east1-aasia-east1-b。 你可以理解为"同一城市的不同机房"。一个 Zone 挂了,同 Region 的其他 Zone 还在。

Multi-region(多区域) — 跨多个 Region 的逻辑位置,比如 asiauseu。 用于需要极高可用性和就近访问的数据存储(如 Cloud Storage 的 multi-regional bucket)。

层级举例作用一句话记忆
Multi-regionasia跨区域冗余,最高可用性"数据存好几个城市"
Regionasia-east1同城低延迟,满足合规"一座城市的机房群"
Zoneasia-east1-a单个数据中心,最小部署单位"一栋机房楼"

GCP 目前有 40+ 个 Region、120+ 个 Zone,覆盖 200+ 个国家和地区。

1.3 GCP 和 AWS/Azure 基础设施对比

如果你之前学过 AWS,这张表帮你快速建立映射:

概念GCPAWSAzure一句话记忆
地理区域RegionRegionRegion名字一样,划分方式类似
数据中心ZoneAvailability ZoneAvailability ZoneGCP 叫 Zone,少了"Availability"
全球加速Cloud CDN + AnycastCloudFrontAzure CDNGCP 的 Global LB 自带 Anycast
关键差异VPC 是全局的VPC 是区域的VNet 是区域的GCP 考试高频考点!

⚠️ 考试视角:GCP 的 VPC 是全局资源(global),不绑定某个 Region。这和 AWS 完全不同(AWS VPC 属于某个 Region)。考题经常用这个差异出陷阱题。


📖 2. 项目和资源层次结构

2.1 为什么 GCP 要搞"层次结构"?

想象你是一家公司的 IT 主管,公司有 3 个部门,每个部门有 5 个团队,每个团队有 10 个项目。如果所有资源都在同一个"大锅"里:权限没法分、账单没法拆、出了问题没法隔离。

GCP 的资源层次结构就是用来解决这个问题的——像公司的组织架构一样,从上到下层层管控。

2.2 四层结构

GCP Resource Hierarchy

图解说明:

  1. 这张图在讲什么:GCP 资源层次结构——Organization → Folder → Project → Resource 的四层从属关系。
  2. 你应该先看哪里:从最顶层的 Organization 开始往下看,注意 Folder 可以嵌套多层,最终所有资源都归属于某个 Project。
  3. 考试常见问法:给你一个场景("研发部和市场部需要独立管理权限"),问你在哪一层设置 IAM 策略——答案通常是 Folder 层。
组织 (Organization)
  └── 文件夹 (Folder)          ← 可嵌套,对应"部门/团队"
        └── 项目 (Project)      ← 资源的基本容器
              └── 资源 (Resource) ← VM、数据库、存储桶等

Organization(组织) — 整个公司的 GCP 最顶层节点,关联 Google Workspace 或 Cloud Identity 域名。 你可以理解为"公司总部":所有政策从这里往下传,CTO 在这一层设置全公司的安全基线。

Folder(文件夹) — 组织下面的分组机制,可以多层嵌套。 你可以理解为"部门":研发部下面可以再分前端组、后端组。每层 Folder 都能设独立策略。

Project(项目) — GCP 中最核心的组织单位,所有资源必须属于某个 Project。 你可以理解为"一个具体的项目组":有自己的预算、权限、API 配额。

层级是否必需能设 IAM 策略?策略是否继承?一句话记忆
Organization推荐(企业必需)向下继承"公司总部定规矩"
Folder可选向下继承"按部门分权"
Project必需向下继承"项目是一切的容器"
Resource部分支持"干活的具体资源"

2.3 Project 的三个标识符

这是考试常考的细节题:

属性示例能否更改全局唯一?一句话记忆
Project Name"My Web App"✅ 可改❌ 不唯一"显示名,给人看的"
Project IDmy-web-app-123❌ 不可改✅ 全局唯一"身份证号,一旦定了改不了"
Project Number123456789012❌ 不可改✅ 全局唯一"系统自动编号,你管不了"

⚠️ 考试视角:题目问"哪个标识符是全局唯一且不可更改的"——答案是 Project ID 和 Project Number 都满足,但 Project ID 是你在创建时选的,Project Number 是系统分配的。最常考 Project ID。

2.4 常用 gcloud 项目命令

# 创建项目
gcloud projects create my-project-id --name="My Project"

# 列出所有项目
gcloud projects list

# 切换当前项目
gcloud config set project my-project-id

# 查看当前配置
gcloud config list

📖 3. Cloud IAM —— 谁能做什么

3.1 为什么 IAM 是考试重点?

ACE 考试四个域中,Configuring access and security 占 17.5%,而 IAM 是这个域的核心。更关键的是,IAM 渗透到其他所有域——你部署 VM 要权限,查日志要权限,管账单也要权限。搞不清 IAM,后面每道题都可能踩坑。

3.2 IAM 的核心模型

GCP IAM 的权限模型可以用一句话概括:"谁"(Member)被赋予了"什么角色"(Role),可以对"哪些资源"(Resource)做操作

IAM Overview

图解说明:

  1. 这张图在讲什么:IAM Allow Policy 的结构——一条 Policy 由多个 Role Binding 组成,每个 Binding 把一组 Member 绑定到一个 Role 上。
  2. 你应该先看哪里:先看中间的 Role Binding 框,理解"Member + Role = 权限"这个核心关系。
  3. 考试常见问法:题目给一段 IAM Policy JSON,问你"alice 在这个项目上有什么权限"——需要找到 alice 所在的 Binding,看绑定的 Role。

IAM Policy(策略) — 把 Member 和 Role 绑定在一起的"合同"。 你可以理解为"门禁授权单":上面写着"张三(Member)获得了前台接待权限(Role),可以进出大楼前厅(Resource)"。

Member 类型

类型格式用途一句话记忆
Google 账号user:alice@gmail.com个人用户"一个人"
服务账号serviceAccount:my-sa@proj.iam.gserviceaccount.com应用/服务"一个程序"
Google Groupgroup:dev@company.com团队管理"一群人"
Cloud Identity 域domain:company.com整个公司"全公司"
allUsersallUsers任何人(含匿名)"全世界"
allAuthenticatedUsersallAuthenticatedUsers任何登录的 Google 用户"登录了的人"

3.3 三种角色类型

这是 IAM 最核心的考点。GCP 角色分三种,权限粒度从粗到细:

基本角色 (Basic/Primitive Roles) — "大权限"

角色权限一句话记忆
Viewer只读,看得见但不能改"参观者"
Editor读写,能改但不能管权限和账单"干活的人"
Owner全部权限,包括管权限和账单"老板"

⚠️ 基本角色权限太大,生产环境不推荐使用。考题里如果看到"遵循最小权限原则",答案一定不是 Basic Role。

预定义角色 (Predefined Roles) — "精细权限"

Google 针对每个服务预先定义好的角色,权限粒度远比 Basic Role 细。

roles/compute.instanceAdmin    → 可以管 VM 实例
roles/storage.objectViewer     → 可以看 Cloud Storage 中的对象
roles/cloudsql.admin           → 可以管 Cloud SQL 数据库

预定义角色是考试最推荐的选择。题目说"按最小权限原则分配",大概率选预定义角色。

自定义角色 (Custom Roles) — "DIY 权限"

当预定义角色给的权限不够精确时(比如你只想给某人"创建 VM 但不能删除 VM"的权限),可以自己组合权限。

# 创建自定义角色
gcloud iam roles create myCustomRole \
    --project=my-project \
    --title="VM Creator Only" \
    --permissions=compute.instances.create,compute.instances.get

⚠️ 考试视角:自定义角色只能在 Organization 或 Project 级别创建,不能在 Folder 级别创建。这是常见陷阱。

3.4 角色选择决策树

需要分配权限
  │
  ├─ 是否有合适的预定义角色?
  │    ├─ YES → 用预定义角色 ✅(推荐)
  │    └─ NO → 预定义角色权限太大?
  │              ├─ YES → 用自定义角色 ✅
  │              └─ NO → 组合多个预定义角色 ✅
  │
  └─ 永远不要选 Basic Role(除非题目明确说"快速原型/测试环境")

3.5 服务账号 (Service Account) —— 给程序用的"身份证"

Service Account(服务账号) — 不是给人用的,是给应用程序和 VM 用的身份。 你可以理解为"工牌":你的应用"戴上"这个工牌,就能以特定权限访问 GCP 资源。

服务账号有两个关键用途:

用途 1:给 VM 一个身份

# 创建服务账号
gcloud iam service-accounts create my-app-sa \
    --display-name="My App Service Account"

# 给服务账号授权
gcloud projects add-iam-policy-binding my-project \
    --member="serviceAccount:my-app-sa@my-project.iam.gserviceaccount.com" \
    --role="roles/storage.objectViewer"

VM 启动时绑定这个服务账号,VM 里跑的程序就自动拥有对应权限,不需要硬编码密钥。

用途 2:服务间授权

Service A 需要调用 Service B 的 API?给 Service A 的服务账号授予访问 Service B 的角色即可。

⚠️ 考试视角

  • 默认的 Compute Engine 服务账号权限是 Editor(太大了!),生产环境应该创建自定义服务账号
  • 服务账号也可以被"模拟"(impersonate),考题可能问"不下载密钥文件的前提下如何让本地程序以服务账号身份运行"——答案是 --impersonate-service-account

3.6 IAM 策略继承

IAM 策略沿资源层次结构向下继承,且只能加权限、不能减权限

IAM Policy Inheritance

图解说明:

  1. 这张图在讲什么:IAM 策略如何沿 Organization → Folder → Project 层次向下继承,子级自动获得父级的所有权限。
  2. 你应该先看哪里:先看顶层 Organization 的策略,然后沿箭头往下看每一层新增了什么角色——最终有效权限是所有层级的并集。
  3. 考试常见问法:题目给你一个多层 IAM 配置,问"用户在 Project 层的有效权限是什么"——要把所有父级权限加起来。
Organization: alice = Viewer
  └── Folder "Dev": alice = Editor
        └── Project "web-app": (alice 继承 Editor)
              └── VM instance: (alice 继承 Editor)

在这个例子里,alice 在 Organization 层是 Viewer,但在 Dev Folder 层被额外授予了 Editor。在 web-app Project 及其下的所有资源中,alice 的有效权限是 Editor(取所有层级权限的并集)。

⚠️ 考试视角:子级不能"撤销"父级授予的权限。如果有人在 Organization 层被授予 Owner,你在 Project 层无法把 TA 降为 Viewer——只能从 Organization 层移除。


📖 4. Cloud Console 与 CLI 工具

4.1 四种交互方式

工具场景一句话记忆
Cloud Console浏览器 GUI,适合探索和学习"看菜单点菜"
gcloud CLI终端命令行,适合日常操作和脚本"背菜单直接喊"
Cloud Shell浏览器内终端,预装工具,免费"自带厨房的餐厅"
Client LibrariesSDK,适合应用程序集成"外卖接口"

4.2 gcloud CLI 结构

gcloud 命令的格式高度统一,记住这个模式就能举一反三:

gcloud  <服务>  <资源>  <动作>  [参数]

# 例子:
gcloud compute instances create my-vm --zone=us-central1-a
gcloud storage buckets create gs://my-bucket --location=asia
gcloud iam service-accounts list

4.3 配置管理(考试常考)

# 初始化(首次使用)
gcloud init

# 查看当前所有配置
gcloud config list

# 设置默认 Region 和 Zone
gcloud config set compute/region asia-east1
gcloud config set compute/zone asia-east1-a

# 创建命名配置(多项目切换)
gcloud config configurations create dev-config
gcloud config configurations activate dev-config

# 列出所有配置
gcloud config configurations list

Named Configuration(命名配置) — 一组保存的 gcloud 设置(项目、区域、账号等),可以快速切换。 你可以理解为"浏览器的多个用户 Profile":工作用一套配置,个人用另一套,一键切换。

⚠️ 考试视角:题目说"需要在多个项目间频繁切换"——答案是 Named Configurations,不是每次都 gcloud config set project xxx

4.4 Cloud Shell

Cloud Shell 是 GCP 提供的免费浏览器终端,预装了 gcloud、kubectl、docker、terraform 等工具。

特性详情一句话记忆
费用免费"白嫖的开发机"
存储5 GB 持久化 Home 目录"关了浏览器文件还在"
预装工具gcloud、kubectl、git、docker、python、node"开箱即用"
超时闲置 20 分钟断开"不用就关灯"
Web Preview支持 8080 端口 Web 预览"能跑个小网站看效果"

📖 5. 账单管理

5.1 为什么账单管理是考点?

很多人以为 ACE 只考技术操作,忽略了账单。但 "Setting up a cloud solution environment" 域明确包含 billing 相关知识。考题通常不问具体数字,而是问"怎么设置预算警报"、"怎么分析成本"、"怎么限制支出"。

5.2 账单账户 (Billing Account)

Billing Account(账单账户) — 付钱的实体,可以是信用卡或发票。 你可以理解为"公司的财务部":多个项目(部门)的支出都归它管,统一出账。

核心关系:

  • 一个 Billing Account 可以关联多个 Project
  • 一个 Project 只能关联一个 Billing Account
  • 没有 Billing Account 的 Project 不能使用付费资源

5.3 成本管理工具

工具用途考试怎么考一句话记忆
Budgets & Alerts设置预算阈值,超了发通知"如何在支出达到 80% 时收到警报""花钱预警器"
Billing Export → BigQuery把详细账单导到 BigQuery 分析"如何分析过去半年每个服务的花费趋势""账本导出做分析"
Cost Table / ReportsConsole 里看费用报表"快速查看本月支出""看账单"
Committed Use Discounts (CUD)承诺 1 年或 3 年用量换折扣"如何降低长期运行 VM 的成本""健身房年卡"
Sustained Use Discounts (SUD)持续使用自动折扣(Compute Engine)"VM 跑满一个月自动打折""常客自动优惠"
RecommenderAI 建议优化资源"如何找到浪费的资源""AI 帮你省钱"

5.4 预算和警报设置

# 通过 Console 操作(考试场景更多):
# Billing → Budgets & alerts → Create budget
# 设置金额阈值(如 $500/月)
# 设置通知规则(50%, 80%, 100%)
# 可选:触发 Cloud Functions 自动关停资源

⚠️ 考试视角:预算警报只发通知,不会自动停止资源!想要自动停止,需要配合 Cloud Functions。考题经常用"设置了预算警报后费用仍然超支"来考你——因为警报本身不阻止花钱。

5.5 GCP 定价模型

定价模式折扣幅度承诺期适用场景一句话记忆
On-Demand0%短期、不确定的工作负载"出租车"
Sustained Use (SUD)最高 30%自动Compute Engine 持续运行"常客自动打折"
Committed Use (CUD)最高 57%1 年或 3 年稳定的长期工作负载"健身房年卡"
Preemptible/Spot VM最高 91%无(随时被回收)容错型批处理"候补票"

⚠️ 考试视角:SUD 和 CUD 的区别是高频考点。SUD 是自动的,你不需要做任何操作;CUD 需要主动购买承诺。题目问"不需要任何额外操作就能获得折扣"——答案是 SUD。


📖 6. gcloud 命令速查

ACE 是动手操作型考试,这些命令必须熟悉:

项目管理

gcloud projects create PROJECT_ID
gcloud projects list
gcloud projects describe PROJECT_ID
gcloud config set project PROJECT_ID

IAM 管理

# 查看项目 IAM 策略
gcloud projects get-iam-policy PROJECT_ID

# 添加成员角色
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:alice@example.com" \
    --role="roles/editor"

# 移除成员角色
gcloud projects remove-iam-policy-binding PROJECT_ID \
    --member="user:alice@example.com" \
    --role="roles/editor"

# 服务账号操作
gcloud iam service-accounts create SA_NAME
gcloud iam service-accounts list
gcloud iam service-accounts keys create key.json \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

配置管理

gcloud config list
gcloud config set compute/region REGION
gcloud config set compute/zone ZONE
gcloud config configurations create CONFIG_NAME
gcloud config configurations activate CONFIG_NAME
gcloud config configurations list

🎯 场景速查表

场景选什么为什么
"按最小权限原则分配权限"Predefined Role比 Basic Role 精确,比 Custom Role 方便
"开发者需要创建 VM 但不能删除"Custom Role预定义角色做不到这么精细
"测试环境快速给全部权限"Basic Role (Editor)测试环境可以放宽
"应用程序需要访问 Cloud Storage"Service Account程序用服务账号,不要用人的账号
"多个项目间频繁切换"Named Configurations一键切换整套配置
"控制每月支出不超预算"Budget Alert + Cloud Functions警报只通知,要自动停需要 Functions
"降低长期运行 VM 成本"CUD(1/3 年承诺)稳定负载用 CUD 最划算
"VM 跑满月自动打折"SUD(自动)不需要任何操作,自动生效
"批处理任务,能容忍中断"Preemptible/Spot VM最高 91% 折扣,但随时可能被回收
"数据必须留在澳洲"Region: australia-southeast1数据主权合规
"全球唯一不可更改的项目标识"Project IDName 可改,Number 也唯一但系统分配

⚠️ 常见错误

  1. 以为 Budget Alert 能自动停止资源 — 不能,只能发通知。想自动停,需要配合 Cloud Functions。
  2. 在生产环境用 Basic Role — Editor 权限太大,应该用预定义角色。考题看到"最小权限"就排除 Basic Role。
  3. 以为 GCP 的 VPC 和 AWS 一样是区域的 — GCP 的 VPC 是全局的,Subnet 才是区域的。
  4. 混淆 Project ID 和 Project Name — ID 不可改且全局唯一,Name 可以改且不唯一。
  5. 用个人 Google 账号给应用程序鉴权 — 应用程序应该用 Service Account,不要用 user:xxx@gmail.com
  6. 以为自定义角色可以在 Folder 级别创建 — 只能在 Organization 或 Project 级别。
  7. 忽略 SUD 自动折扣 — SUD 不需要任何操作,VM 持续运行自动生效。题目问"不需要额外操作的折扣"就选 SUD。

📚 参考资源

📝 章节练习 (25 题)
开始练习