理解 Google Cloud 中的組織級安全
在 Associate Cloud Engineer (ACE) 的層級,安全性不僅僅是管理個別使用者的權限,還涉及如何為整個組織建立「護欄」(Guardrails)。Google Cloud 提供了 組織政策服務 (Organization Policy Service) 來強制執行合規性,以及 Cloud 審計日誌 (Cloud Audit Logs) 來追蹤誰在什麼時候對資源做了什麼。對於大型企業來說,這些工具是防止人為錯誤與惡意行為的最後防線。
本章節將深入探討如何透過政策限制資源的使用,以及如何利用審計日誌進行合規性檢查。
白話文解釋
1. 國家的法律與監視系統 (交通號誌類比)
- 組織政策 (Organization Policies): 就像國家的交通法規(例如:禁止超速)。不論司機(使用者)多想開快車,法律規定了速度上限。
- Cloud 審計日誌 (Cloud Audit Logs): 就像路口遍佈的測速照相與監視器。它不一定能阻止你違規,但它會記錄下你的車牌、時間和違規行為,作為日後處分的證據。
2. 公司的報支規定 (瑞士刀類比)
- 組織政策: 公司規定「所有出差報支不能超過 5000 元」。這是一個硬性限制,系統會直接擋下超過金額的申請。
- VPC 服務控制 (VPC Service Controls): 就像公司的保險箱。即便你有保險箱密碼(IAM 權限),如果你在公司外的地方(非授權網路)嘗試開啟,保險箱依然會保持鎖定。
3. 圖書館的入館須知 (圖書館類比)
- 管理活動日誌 (Admin Activity Logs): 記錄誰移動了書架、誰更換了管理員(基礎架構變更)。
- 資料存取日誌 (Data Access Logs): 記錄誰借了哪本書、誰翻閱了哪份檔案(數據存取)。
- 組織政策限制: 規定「這家圖書館不准放入漫畫書」(禁止建立特定類型的資源)。
應用組織政策限制 (Organization Policy Constraints)
組織政策服務讓管理員能夠在資源階層(組織、資料夾、專案)上設定限制。
限制類型
- 列表限制 (List Constraints): 允許或拒絕特定的值。例如:
constraints/compute.allowedExternalIpTypes(限制只能使用靜態 IP)。 - 布林限制 (Boolean Constraints): 開啟或關閉某項功能。例如:
constraints/compute.disableSerialPortAccess(關閉 VM 序列埠存取)。
組織政策的優先級高於 IAM。即使一個使用者擁有 '擁有者' (Owner) 角色,如果組織政策規定禁止建立外部 IP,該使用者依然無法建立帶有外部 IP 的 VM。 Source ↗
針對 ACE 的資料駐留與強化情境,請熟記具體的 Resource Manager 限制:用布林限制 constraints/compute.disableSerialPortAccess 關閉 VM 序列埠存取、用列表限制 constraints/compute.allowedExternalIpTypes 控管外部 IP、以及 constraints/gcp.resourceLocations 限制資源所在區域。這些限制會在 IAM 之前評估,因此連 Project Owner 也會被擋下。
Source ↗
繼承與覆蓋 (Inheritance and Overriding)
政策會從組織向下繼承到專案。
- 合併 (Merge): 列表類的政策可以與父級合併。
- 覆蓋 (Override): 子級可以選擇覆蓋父級政策(如果父級允許)。
查看與匯出 Cloud 審計日誌
審計日誌記錄了 Google Cloud 帳戶中的活動。
四種審計日誌類型
- 管理活動日誌 (Admin Activity Logs): 記錄修改組態或資源的操作。始終開啟,免費。
- 資料存取日誌 (Data Access Logs): 記錄讀取或寫入數據的操作(如讀取 GCS 物件)。
預設情況下是關閉的(除了 BigQuery),因為它們產生的數據量極大且會產生存儲費用。必須在 IAM 與管理員 (IAM & Admin) 主控台中針對特定服務明確啟用。 Source ↗
- 系統事件日誌 (System Event Logs): 記錄 Google Cloud 執行的系統管理事件。
- 政策遭拒日誌 (Policy Denied Logs): 當使用者因為違反政策而被拒絕存取時記錄。
VPC 服務控制 (VPC Service Controls, VPC SC) 簡介
VPC 服務控制為 Google Cloud 服務(如 Cloud Storage, BigQuery)建立了一個「服務周界」(Service Perimeter)。
VPC SC 旨在防止數據外洩。它不僅限制誰能存取數據,還限制數據能從哪裡被存取。即便使用者有正確的憑證,如果他不在周界內(例如在未經授權的外部網路),他也無法存取數據。 Source ↗
情境感知存取 (Context-Aware Access)
透過結合 Access Context Manager,你可以設定更精細的條件,例如「僅允許來自公司 IP 且設備已加密的請求」。
監控合規性與安全性日誌
Security Command Center (SCC)
這是 Google Cloud 的安全管理平台,它會自動掃描你的資源,發現潛在的安全漏洞(如公開的 S3 儲存桶或過期的金鑰)並發送警報。
用於安全性的日誌接收器 (Logging Sinks)
為了合規,通常需要將審計日誌匯出到 BigQuery 進行長期分析,或匯出到 Cloud Storage 進行冷封存。匯出時應包含整個組織的日誌,而不僅僅是單一專案。 Source ↗
透過 gcloud CLI 管理安全政策
# 查看組織政策限制
gcloud resource-manager org-policies describe \
constraints/compute.disableSerialPortAccess \
--project=my-project
# 啟用資料存取日誌 (需透過 YAML 設定文件)
gcloud projects get-iam-policy my-project > policy.yaml
# (編輯 policy.yaml 加入 auditConfigs)
gcloud projects set-iam-policy my-project policy.yaml
# 搜尋審計日誌中的錯誤
gcloud logging read "resource.type=project AND protoPayload.status.code!=0" --limit 5
使用 --organization=ORGANIZATION_ID 旗標代替 --project,即可在整個公司階層上查看或設定組織政策,避免逐專案套用造成的設定漂移。
Source ↗
企業安全最佳實踐
- 實施「預設拒絕」政策:例如禁用所有 VM 的外部 IP,僅在需要時為特定專案開例外。
- 開啟關鍵服務的資料存取日誌 (Data Access Logs):特別是包含敏感客戶數據的儲存桶或資料庫。
- 使用資源管理員 (Resource Manager) 進行階層式管理:在組織層級設定全域政策,減少重複勞動。
- 定期審查審計日誌 (Audit Logs):尋找異常的
Access Denied事件,這可能是攻擊的徵兆。
ACE 考試的常見場景
- 情境:你需要確保公司所有開發者都不能在美國以外的區域建立資源。
- 解決方案:在組織層級套用
constraints/gcp.resourceLocations限制。
- 解決方案:在組織層級套用
- 情境:你發現某個重要的資料庫被誤刪了,你想知道是誰幹的。
- 解決方案:在 Cloud Logging 中搜尋 管理活動日誌 (Admin Activity Logs)。
- 情境:你希望防止數據從 BigQuery 被複製到外部的個人 Storage 儲存桶。
- 解決方案:設定 VPC 服務控制 (VPC Service Controls) 周界。
常見問題 (FAQ)
Q1: 組織政策 (Organization Policy) 可以限制 IAM 權限嗎? 答:它不直接修改 IAM 權限,但它定義了「允許的行為」。如果政策禁止某種行為,即便你有 IAM 權限也做不到。
Q2: 為什麼我找不到某個檔案的讀取記錄? 答:可能是因為你沒有開啟 資料存取日誌 (Data Access Logs)。
Q3: VPC 服務控制 (VPC Service Controls) 會影響性能嗎? 答:不會。它是控制平面上的邏輯檢查,不會增加數據傳輸的延遲。
Q4: 我可以對單一 VM 套用組織政策嗎? 答:不行,組織政策最細的粒度是「專案」(Project) 層級。
Q5: 什麼是存取透明度 (Access Transparency)? 答:這讓你可以看到 Google 自己的員工何時以及為什麼存取你的數據(通常是為了支援請求)。
ACE 總結清單
- 區分組織政策 (Organization Policies,限制行為) 與 IAM (管理身分)。
- 掌握 4 種審計日誌的類型與開啟規則。
- 理解 VPC 服務控制的數據外洩防護邏輯。
- 知道如何將日誌匯出到 BQ/GCS 進行合規存儲。
- 熟悉
gcloud resource-manager org-policies指令。