PCA 架構之旅 13 — 安全與成本
走到第 13 步,架構的骨架都立起來了。剩下最後兩件事,卻往往決定一個架構「會不會被老闆簽核」:安全讓它不會出事、成本讓它不會被裁掉。
PCA 考試的一整題 case study,分數配置通常安全佔不少、成本佔更多。而且這兩個總是綁在一起:便宜但不安全的設計不會過,安全但超預算的設計一樣不會過。
為什麼這一步重要
PCA case study 裡,安全與成本的考題長這樣:
- 「開發團隊不應該看得到 production 的資料」→ IAM 分離
- 「PCI-DSS 合規、金流資料不能外流」→ VPC Service Controls
- 「老闆說這個架構每月不得超過 $X」→ 成本估算
- 「過去三個月帳單暴增 50%,找出原因」→ 成本歸因與最佳化
考生常犯的錯誤:
- 用 Owner 或 Editor 角色一把抓:違反最小權限,考題一律錯
- 忘記 egress(流出)才是網路成本大頭:region 間傳輸、出到 internet 的費用容易超支
- 成本只算 compute 忘記 data transfer 與 storage:真實帳單通常是好幾項加起來的
核心概念
安全的五層
| 層級 | GCP 工具 | 對應威脅 |
|---|---|---|
| 身分與存取 | IAM、Workload Identity、Service Account | 權限外洩、內部濫權 |
| 網路邊界 | VPC firewall、Cloud Armor、Private Google Access | DDoS、SQL injection、路由暴露 |
| 資料保護 | CMEK(客戶管理金鑰)、Secret Manager、DLP API | 資料外流、金鑰管理 |
| 服務邊界 | VPC Service Controls、Shared VPC | API 資料外洩、跨團隊隔離 |
| 監控與稽核 | Cloud Audit Logs、Security Command Center | 異常行為偵測、合規稽核 |
兩個 PCA 關鍵原則:
- 最小權限(Least Privilege):永遠選最窄的 predefined role,必要時才用 custom role。不要給 Owner / Editor
- 縱深防禦(Defense in Depth):多層防線,某一層被穿破還有下一層頂住
成本的四大成分
| 成分 | 主導因素 | 降低方式 |
|---|---|---|
| Compute | vCPU、記憶體、執行時數 | CUD / Sustained Use Discount、Spot VM、Cloud Run |
| Storage | 容量、儲存類別、region | 生命週期規則、Nearline/Coldline/Archive |
| Data Transfer | Egress 量(region 間、出 internet) | 同 region 部署、善用 Cloud CDN、Private Google Access |
| Managed Services | 固定月費或量計費 | 用量對齊 SKU、避免過度設計 |
PCA 要知道的折扣手段:
- CUD(Committed Use Discounts):承諾 1 年 / 3 年,折扣依機型與 commitment 類型而異。resource-based CUD(一般用途機型)約 1 年 37% / 3 年 55%;spend-based CUD 約 1 年 25% / 3 年 52% 以上
- Sustained Use Discounts:Compute Engine 跑滿一個月自動折扣,比例依機型而異——多數現行機型(N2/N2D/C2 等)最高約 20%,N1 / sole-tenant 最高 30%;E2 機型(本文成本範例用的
e2-standard-4)不適用 SUD - Spot VM:相對標準機型有大幅折扣,但隨時可能被回收,適合 batch / 容錯工作
- Cloud Storage 儲存類別:Standard → Nearline → Coldline → Archive,資料越少讀越便宜
思考框架
安全先問:
- 誰能存取這個資源? 畫出 IAM 對應表,確認每個 principal 只拿需要的 role
- 資料會經過哪些網路邊界? 每一段是 public 還是 private?有沒有加密?
- 金鑰由誰管? Google-managed(預設)?CMEK?CSEK?
- 出事後查得到嗎? Audit logs 是否開啟?retention 多久?
成本再問:
- 固定費用 vs 變動費用有多少? 固定費用是底線,變動費用決定尖峰成本
- egress 從哪裡來? 跨 region?跨雲?出 internet?這是最大的隱形成本
- 哪些資源可以關? 非 production 的 VM 晚上關、dev 環境週末關
- 哪些服務可以降級? 是否每個服務都需要 HA?非關鍵的可以單區降成本
走一遍範例 — 登雲書店
安全設計
IAM 角色規劃
| 角色群組 | Project | 授予權限 |
|---|---|---|
dev-team@ | cloudon-dev | roles/editor(僅限 dev 專案) |
dev-team@ | cloudon-prod | roles/viewer(read-only,看 log 除錯) |
ops-team@ | cloudon-prod | roles/compute.instanceAdmin、roles/iam.serviceAccountUser |
sre-oncall@ | cloudon-prod | 透過 PAM 臨時授予 roles/editor,2 小時過期 |
billing-admin@ | 組織層 | roles/billing.admin 僅限 2 位 |
網路邊界
- 所有 public 入口走 Global External Application LB + Cloud Armor
- Cloud Armor 規則:rate limit(每 IP 每分鐘 300 req)+ OWASP Top 10 preconfigured rules + 國家白名單(若業務僅限亞洲)
- VPC firewall:預設 deny all、明確列出允許的 tag → tag 流向
- Cloud SQL、Memorystore 一律走 Private Service Access,不給 public IP
金鑰與機密
- Cloud SQL、Cloud Storage 使用 CMEK(by Cloud KMS)
- 應用機密(API key、DB password)放 Secret Manager,Pod 透過 Workload Identity 讀取,不寫進 image
服務邊界
- 金流相關服務用 VPC Service Controls 建 service perimeter,防止資料被 exfiltrate 到外部 GCS bucket
- Shared VPC:網路由中央網管團隊管(host project),app 團隊只用 service project
成本估算(月費估算邏輯)
⚠️ 以下為公開 pricing 邏輯推估,僅供架構規劃參考;實際以 GCP Pricing Calculator 為準。
| 類別 | 服務與規格 | 估算邏輯 | 月費級距 |
|---|---|---|---|
| Compute | GKE regional cluster,平均 15 個 e2-standard-4 node | 15 × $100 左右 vCPU/RAM 費 | $1,500 級距 |
| Compute | Cloud Run 後端,月請求 3,000 萬、平均 200ms | 請求數 × 執行秒數 × 記憶體 三軸計費 | $300 級距 |
| Database | Cloud SQL PostgreSQL HA db-custom-4-16 + 2 replica | primary + HA standby + 2 replica 各自計費 | $900 級距 |
| Database | Bigtable 3 節點 SSD asia-east1 | 節點數 × 時數 + 儲存 GB | $1,500 級距 |
| Storage | Cloud Storage 10 TB Standard + 20 TB Coldline | Standard 每 GB 單價遠高於 Coldline | $400 級距 |
| Network | Egress 到 internet 3 TB/月 | Egress 依流出 region 與量計費 | $300 級距 |
| CDN/LB | Global LB + Cloud CDN | LB 轉發費 + CDN cache fill / egress | $250 級距 |
| 監控 | Cloud Logging + Monitoring + Error Reporting | logs ingest GB 數為主 | $200 級距 |
粗估月費區間:約 $5,000 - $6,000 美元級距(未計年度承諾折扣)
最佳化手段
- GKE node 使用 3 年 CUD:compute 部分可省約 55%(resource-based、一般用途機型,與上方折扣口徑一致)
- 開發環境 Cloud Run min instances 設 0(冷啟動換成本)
- Bigtable 非尖峰時段腳本自動縮節點
- Cloud Storage 加 lifecycle rule:30 天 → Nearline、90 天 → Coldline、365 天 → Archive
PCA case study 常見追問
「如果預算砍半怎麼辦?」思路:先砍 DR 層級(從 warm standby 降到 pilot light)、Bigtable 換成單一 Cloud SQL read replica 處理分析、GKE 改 Cloud Run 節省空轉。不能砍:IAM 最小權限、加密、audit log。
常見陷阱
- Custom IAM role 設錯權限範圍:custom role 在 org、folder、project 層級有不同影響範圍。給 project owner 等級的 custom role 卻忘了某個敏感 permission(例如
iam.serviceAccounts.actAs)會被考題抓出來。 - 忘記計算 log ingest 費用:GKE 開 debug log、把應用 INFO 全部 ingest 進 Cloud Logging,一個月可能就累積數 TB,帳單驚人。要設 log exclusion filter,只存有用的。
- Shared VPC 跟 VPC Service Controls 混用錯:Shared VPC 是網路資源共用(host project + service project);VPC Service Controls 是 API 呼叫邊界(限制資料外洩)。兩者互補不互斥,考題會用其中一個試你分得清嗎。
延伸閱讀
系列導航
- 系列首頁:PCA 架構之旅
- 上一篇:PCA 架構之旅 12 — 災難復原 (DR)
13 步走完了。從搞懂業務需求一路收斂到成本表,你手上拿到的不只是一張架構圖,而是一套可以在 PCA 案例題上重複用的思考流程。接下來就是多做幾次真實的 case study 練習,把這套流程跑順。練到夠熟,考場上每一題都會變成你做過的步驟。
🎯 換你練習
理論讀完,換自己來。到 架構師設計工作坊 · 步驟 13 填入你的 case study,邊寫邊內化。