examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 18 分鐘

VPC 防火牆規則與策略:網路防護護欄

3,500 字 · 約 18 分鐘閱讀 ·

深入掌握 Google Cloud 的 VPC 防火牆規則與階層式策略。學習如何使用服務帳戶作為目標、實施階層式強制執行,以及稽核網路流量以達到 PSE 等級的安全性。

立即做 20 題練習 → 免費 · 不用註冊 · PSE

VPC 防火牆規則與策略簡介

在 Google Cloud 中,網路是由軟體定義的,安全性是在每個 VM 層級強制執行的,而不僅僅是在邊界。VPC 防火牆規則是分佈式虛擬防火牆,用於控制進出 Compute Engine 執行個體的流量。

對於 專業雲端安全工程師 (PSE) 而言,掌握防火牆不僅僅是處理簡單的基於 IP 的規則。它涉及理解用於全組織治理的階層式防火牆策略 (Hierarchical Firewall Policies)、使用服務帳戶 (Service Accounts) 進行動態微隔離 (Micro-segmentation),以及利用 Firewall Insights 優化安全狀況。

白話文解釋

1. 房間級別的安保 (VPC 防火牆)

傳統防火牆就像是大樓的大門,一旦進入內部,就可以隨意走動。Google Cloud 防火牆則像是為每個房間 (VM) 都配備了一名保安。即使有人闖入了專用網路 (VPC),他們仍必須通過每個特定房間的保安才能進行橫向移動。

2. 通用建築法規 (階層式策略)

想像一個城市,每個建築業主都設定自己的消防規則,這就像是專案層級的防火牆。現在想像市政府 (組織/資料夾層級) 規定「任何建築都不准攜帶噴火器」,這就是階層式防火牆策略。它適用於城市中的每個人,個別業主不能覆蓋此規則使其變得「更不安全」。

3. 識別證制度 (服務帳戶 vs. 標記)

網路標記 (Network Tags) 就像是在衣服上貼一個「開發人員」標籤,任何人都可以貼上。服務帳戶則像是官方的公司識別證,要獲得識別證必須經過審核 (IAM)。防火牆檢查的是您的識別證而不是標籤,這使得偽造身分和繞過安全檢查變得更加困難。

傳入 (Ingress) 與 傳出 (Egress) 規則邏輯

VPC 防火牆具有狀態檢測 (Stateful) 特性。如果允許了傳入 (Ingress) 請求,則無論傳出規則如何,系統都會自動允許對應的傳出 (Egress) 回應。

  • 傳入規則 (Ingress Rules): 控制進入 VM 的流量。(預設:全部拒絕)。
  • 傳出規則 (Egress Rules): 控制離開 VM 的流量。(預設:全部允許)。

防火牆規則 (Firewall Rules) 套用於網路和 VPC,但在每個執行個體上執行。它們是「分佈式」的,這意味著它們可以隨網路擴展而不會成為效能瓶頸。

目標:網路標記 vs. 服務帳戶

這是 PSE 考試中的關鍵概念。

網路標記 (Network Tags)

  • 簡單的字串 (例如:web-server, db-server)。
  • 任何擁有 compute.instanceAdmin 權限的使用者都可以更改 VM 上的標記。
  • 風險: 開發人員可以將資料庫伺服器標記為 "web-server",從而獲得未經授權的網路存取。

服務帳戶 (Service Accounts)

  • 使用 VM 的身分 (例如:[email protected])。
  • 指派時需要 iam.serviceAccountUser 權限。
  • 安全性: 提供更強大的「基於身分」的微隔離。如果 VM 的身分經過驗證,則防火牆規則更值得信賴。

PSE 建議: 在生產環境中,防火牆目標應始終優先選擇服務帳戶而非網路標記,以防止透過標記進行權限提升。

階層式防火牆策略 (Hierarchical Firewall Policies)

階層式策略允許您在組織 (Organization)資料夾 (Folder) 層級強制執行規則。

  • 評估順序: 組織層級規則 → 資料夾層級規則 → 專案層級 (VPC) 規則。
  • 動作: ALLOW (允許)、DENY (拒絕) 以及 GOTO_NEXT (前往下一個)。
  • GOTO_NEXT: 這是階層式策略特有的,它允許封包通過組織層級,由資料夾或專案層級進一步評估。

使用階層式策略來執行「全域拒絕」規則,例如在全公司範圍內封鎖來自公開網際網路的 22 埠 (SSH)。

防火牆規則日誌與稽核

日誌對於故障排除和合規性至關重要。

  • 防火牆日誌: 可以針對每條規則啟用。它會擷取來源 IP、目的地 IP、通訊埠和通訊協定。
  • 取樣: 您可以設定取樣率 (例如:僅記錄 10% 的流量) 以節省儲存成本。
  • 元數據: 日誌包含 VM 名稱和專案 ID,方便識別可疑流量的來源。

優先順序與規則評估順序

防火牆規則具有優先順序 (Priority) (從 0 到 65535)。

  • 數值越小 = 優先權越高 (例如:優先順序 1000 優於優先順序 2000)。
  • 如果多條規則相符,則套用優先順序最高的規則。
  • 如果優先順序相等,在階層式策略中通常以「拒絕」規則為先,但在 VPC 規則中則以第一條相符的為準。

新 VPC 中預設的 allow-ssh 規則優先順序為 65534。如果您想封鎖所有 SSH,您的「拒絕」規則優先順序必須低於 65534 (例如:1000)。

PSE 評估順序重點: Hierarchical Firewall Policies 的評估順序為 Org → Folder → Project (VPC),且優先順序範圍為 0–65535、數值越小越優先。若要覆寫預設的 allow-ssh 規則 (優先順序 65534),您的 DENY 規則必須使用更小的數值 (例如 1000);而 Org 層級的 DENY 除非父層使用 GOTO_NEXT,否則無法被專案層級規則覆寫。

全域網路防火牆策略 (Global Network Firewall Policies)

與標準 VPC 規則不同,全域網路防火牆策略允許您定義一組規則,並將其與多個 VPC 關聯,即使這些 VPC 位於不同的區域甚至不同的專案中 (在共用 VPC 環境中)。

共用 VPC (Shared VPC) 防火牆管理

共用 VPC 設定中:

  • 宿主專案 (Host Project) 管理員負責管理防火牆規則。
  • 服務專案 (Service Project) 管理員無法建立套用於共用子網路的防火牆規則。
  • 這確保了中央安全性團隊能保持對網路邊界的控制。

識別遺留或冗餘規則

隨著時間推移,防火牆規則會變得雜亂。

  • Firewall Insights: 該工具會分析您的防火牆規則並識別:
    • 被遮蔽的規則 (Shadowed Rules): 由於存在更高優先順序的規則涵蓋了相同的流量,導致這些規則永遠不會被觸發。
    • 過於寬鬆的規則 (Overly Permissive Rules): 例如對 0.0.0.0/0 開放所有埠的規則。
    • 未使用的規則 (Unused Rules): 過去 30 天內沒有流量產生的規則。

從標記遷移到服務帳戶目標

為了提高安全性,您應該遷移現有的基於標記的規則。

  1. 識別目前使用該標記的 VM 所使用的服務帳戶。
  2. 建立一條使用服務帳戶作為目標的新防火牆規則。
  3. 將新規則設定為更高的優先順序 (較小的數值)。
  4. 監控日誌以確保流量命中新規則。
  5. 刪除舊的基於標記的規則。

防火牆的 CLI 指令

建立傳入規則 (使用服務帳戶)

gcloud compute firewall-rules create allow-app-to-db \
    --network=my-vpc \
    --action=ALLOW \
    --direction=INGRESS \
    --priority=1000 \
    --source-service-accounts=app-srv@my-project.iam.gserviceaccount.com \
    --target-service-accounts=db-srv@my-project.iam.gserviceaccount.com \
    --rules=tcp:5432

列出階層式策略

gcloud compute firewall-policies list --organization=123456789

服務帳戶目標比標記提供更好的安全性,因為更改服務帳戶需要比更改標記更高的 IAM 權限。

PSE 安全性最佳實踐

  1. 隱式全部拒絕: 在高安全性環境中,始終從預設的「傳出全部拒絕」規則開始。
  2. 最小權限: 僅開啟特定的通訊埠 (例如 tcp:443) 而不是「所有通訊協定」。
  3. 使用服務帳戶: 在生產環境中避免使用網路標記。
  4. 稽核日誌: 為所有「拒絕」規則啟用日誌,以偵測通訊埠掃描和偵察活動。
  5. 階層式護欄: 使用組織層級策略封鎖來自網際網路的高風險通訊埠 (RDP, SSH, Telnet)。

故障排除情境

情境:VM 即使有「允許」規則也無法連接到資料庫

診斷: 檢查來源 VM 的傳出 (Egress) 規則。即使資料庫端允許傳入,來源 VM 也必須被允許在該通訊埠發送流量。同時,檢查是否有優先順序更高的「拒絕」規則。 修正: 為來源 VM 加入傳出規則,或提高允許規則的優先順序。

情境:階層式策略阻擋了開發專案中的流量

診斷: 組織層級策略中有一條相符的 DENY 規則。專案層級規則無法覆蓋組織層級的 DENY修正: 將組織層級規則針對特定的 IP 範圍或通訊埠更改為 GOTO_NEXT,允許開發專案自行管理該流量的規則。

PSE 考試情境

情境 1:防止橫向移動

「如何確保受損的 Web 伺服器無法存取資料庫伺服器的管理埠,即使它們位於同一個子網路中?」 答案: 使用以服務帳戶作為目標的防火牆規則。將 Web 伺服器指派給 sa-web,資料庫伺服器指派給 sa-db。建立一條僅允許從 sa-websa-db 指定通訊埠 (例如 3306) 的規則,並依賴預設的「拒絕」規則處理所有其他埠。

情境 2:集中化合規性

「您的 CISO 要求在任何專案中,任何開發人員都不得向網際網路開放 21 埠 (FTP)。強制執行此要求最穩健的方法是什麼?」 答案: 在組織層級建立一個階層式防火牆策略,其中包含一條拒絕來自 0.0.0.0/0 的 21 埠傳入流量規則。

總結清單

  • 解釋傳入與傳出規則的區別。
  • 比較網路標記與服務帳戶作為防火牆目標的優劣。
  • 描述階層式防火牆策略的評估順序。
  • 識別階層式策略中 GOTO_NEXT 的功能。
  • 了解如何使用 Firewall Insights 優化規則。

官方資料來源

更多 PSE 主題