Google Cloud Armor 最佳做法

本頁面提供最佳做法,協助您最佳化及調整 Google Cloud Armor 部署作業。

Google Cloud Armor 會搭配全域外部應用程式負載平衡器、傳統版應用程式負載平衡器或外部 Proxy 網路負載平衡器部署。部署 Google Cloud Armor 時,您可以將安全性政策附加至要保護的負載平衡器後端服務。安全政策包含您指定的一系列預先設定和自訂規則。

如要設定 Google Cloud Armor 政策,自動套用至貴機構下的所有專案,並允許個別專案新增自己的特定規則,請參閱使用自訂限制管理 Cloud Armor 的相關指南。這種做法可集中管理整個機構的安全政策,同時保留彈性,以滿足個別專案的需求。

建立安全性政策和規則

以下各節將說明新安全政策和規則的最佳做法和建議。

提供規則說明

使用規則說明,提供有關建立每個規則的原因和規則的預期功能的額外背景資訊。description 欄位的長度上限為 64 個字元,因此參照設定管理資料庫或其他存放區,是擷取背景資訊最有效率的方式。

考量優先間距

初始設定規則時,請在每個規則優先順序值之間保留至少 10 的間隔。舉例來說,安全性政策中的前兩個規則可能分別有 20 和 30 的優先順序。這樣一來,您就能在需要時插入更多規則。此外,建議您將類似的規則分組成區塊,並在各群組之間留較大的間隔。

使用預覽模式

安全政策規則 (包括 Open Web Application Security Project (OWASP) 簽章) 可能會對應用程式造成無法預測的影響。使用預覽模式,評估導入規則是否會對實際工作環境流量造成負面影響。

啟用 Google Cloud Armor Adaptive Protection

啟用 Adaptive Protection,為應用程式提供額外防護。自適應防護功能會監控流量,並視需要為您的安全性政策建議新規則。此外,建議您建立警示政策,確保合適人員能收到潛在攻擊的警示。Adaptive Protection 最適合用於大量防護。非巨流量攻擊可能不會觸發 Adaptive Protection。

啟用 JSON 剖析

如果應用程式在 POST 要求的內文中傳送 JSON 內容,請務必啟用 JSON 剖析功能。如果您未啟用 JSON 剖析功能,Google Cloud Armor 就不會剖析 POST 主體的 JSON 內容,以便針對預先設定的 WAF 規則進行剖析,因此結果可能會雜亂,並產生誤報。詳情請參閱「JSON 剖析」。

測試邏輯

當比對條件評估為 true 時,系統就會觸發規則;舉例來說,如果要求的區域代碼為 AU,比對條件 origin.region_code == 'AU' 就會評估為 true。如果優先順序較高的規則評估為 true,系統就會忽略優先順序較低的規則中所列的動作。在下列範例中,假設您想建立安全性政策,封鎖 AU 區域的使用者,但 IP 位址範圍 10.10.10.0/24 內的流量除外。請考慮下列包含兩個規則的安全性政策:

Rule1
expr: inIPRange(origin.ip, '10.10.10.0/24')
action: allow
priority: 1
Rule2
expr: origin.region_code == 'AU'
action: deny(403)
priority: 2

在本範例中,Rule1 允許來自 IP 位址範圍 10.10.10.0/24 的流量。由於 Rule1 是優先順序較高的規則,因此系統會先允許這類流量,再根據 Rule2 進行評估,也就是說,Google Cloud Armor 不會根據 Rule2 (或任何其他剩餘規則) 進行評估。

建立 Google Cloud Armor 政策時,請測試規則的邏輯,確保能達到預期的行為。為此,建議您產生模擬流量,瞭解哪些規則會封鎖流量,並確認結果是否符合規則設計決策。如果不確定要求可能如何在系統中流轉,請使用預覽模式查看哪些規則符合要求。

找出掃描器的來源 IP 位址

安全掃描工具可位於 Google 內部或外部。如果您想對應用程式進行外部評估,且不想篩選評估結果,可以先明確允許根據 IP 位址 (或其他符記) 的流量,再根據其他規則進行評估。

將安全性政策中的規則分組及排序

您的應用程式可能會為不同的客戶子集提供服務。在下列範例中,您想拒絕來自特定地理區域或 IP 範圍的流量,因此在政策中設定第一個規則來拒絕這類流量。此外,您想明確允許部分流量進入應用程式,但不讓安全政策處理這些流量。在本例中,我們建議採用下列規則優先順序結構,從最高優先順序到最低優先順序:

  1. 明確的拒絕規則 (ASN、區域、IP 範圍)
  2. 信任的明確允許規則 (掃描器、信任的系統 - 請務必謹慎使用)
  3. 安全性規則 (OWASP、自訂規則)
  4. 明確的允許規則 (ASN、標頭值是否存在、IP 範圍)
  5. 預設拒絕規則

使用 reCAPTCHA 管理機器人

Google Cloud Armor 已與 Google reCAPTCHA 整合,可在 WAF 層偵測機器人。在這個整合中,reCAPTCHA 會產生 reCAPTCHA 權杖,而 Google Cloud Armor 會執行權杖評估程序,而不是 reCAPTCHA。這麼做可以減少來源負載,進而降低成本,並讓安全性控管機制更貼近使用者,而非後端。詳情請參閱機器人管理總覽

設定頻率限制門檻

頻率限制是一項靈活且有價值的功能,可防止濫用行為,並減輕大量威脅,例如憑證填充或 L7 DDoS 攻擊。首次部署頻率限制時,請務必選擇適合應用程式的門檻。建議您先在預覽模式中開始實施。在分析並瞭解流量設定檔後,您可以調整速率限制參數。此外,請務必考量您指派給速率限制規則的優先順序。在評估速率限制規則之前,較高優先順序的規則可能會明確允許或拒絕流量。

規則調整

網頁應用程式可能會允許疑似攻擊的請求,甚至允許或要求使用者傳送與預先設定 WAF 規則中的簽章相符的請求。您必須針對應用程式驗證 Google Cloud Armor 規則,並在正式版應用程式上停用預覽模式,解決任何與應用程式無關的發現事項,才能發布規則。下列各節包含調整預先設定的 WAF 規則的最佳做法和建議。

選擇預先設定的 WAF 規則敏感度

實作任何預先設定的 WAF 規則時,您可以根據安全性需求和時間表選擇適當的敏感度層級。對於必須符合貴機構安全性規定的大多數應用程式,建議您一開始就將敏感度設為 1。針對敏感度 1 設定的規則會使用高保真度簽章,並減少規則的潛在雜訊。敏感度較高的簽章可能會偵測並防範更多惡意行為,但會對部分受保護的應用程式造成干擾。不過,如果工作負載須遵守更嚴格的安全性規定,則可能會偏好最高敏感度。對於這些用途,系統可能會產生大量雜訊或不相關的發現結果,因此您必須在安全政策進入實際工作環境前,使用調整功能解決這些問題。

啟用詳細記錄功能

如需有關哪些要求屬性和酬載會觸發特定 WAF 規則的詳細資訊,請啟用詳細記錄。詳細記錄可提供觸發特定規則的要求詳細資料,包括要求中違規部分的片段,有助於排解問題及調整 Google Cloud Armor。由於詳細記錄功能可能會導致 Cloud Logging 記錄使用者要求內容,因此您可能會在記錄中累積使用者 PII。因此,我們不建議在啟用詳細記錄功能的情況下,長時間執行正式工作負載。

使用穩定版或測試版規則

Google Cloud Armor 預先設定的網路應用程式防火牆規則分為兩種:穩定版和測試版。當新規則加入目前的 OWASP 核心規則集 (CRS) 時,我們會先將這些規則發布至測試規則版本,再自動發布至穩定規則版本。建議您在測試環境中部署 Canary 規則,以便查看環境中任何變更和新增項目的影響。您可以在「調整 Google Cloud Armor WAF 規則」頁面上查看規則名稱,確認 Canary 版本是否與穩定版本同步。

記錄和監控

以下各節將說明設定記錄和監控功能的最佳做法和建議。

使用 Security Command Center

Google Cloud Armor 會自動與 Security Command Center 整合。Google Cloud Armor 會將不同發現項目匯出至 Security Command Center:

  • 允許的流量暴增
  • 拒絕比率上升

請務必讓網站安全人員檢查這些結果。

選擇 Cloud Logging 取樣率

Google Cloud Armor 每個要求記錄都會使用全域外部應用程式負載平衡器或傳統版應用程式負載平衡器的記錄基礎架構。因此,Google Cloud Armor 記錄產生作業會受到負載平衡器設定的記錄取樣率影響。建議您在積極調整及導入 Google Cloud Armor 時,將取樣率設為 1。完成 Google Cloud Armor 的調整和導入後,建議您繼續啟用完整的要求記錄功能;不過,您可能會偏好將取樣率調低。全域外部應用程式負載平衡器和傳統應用程式負載平衡器預設不會啟用記錄,因此請務必手動啟用記錄功能。

注意:自適應防護記錄會顯示在 Google Cloud 主控台的 network_security_policy 資源下方,而非全域外部應用程式負載平衡器或傳統版應用程式負載平衡器下方。

使用 Cloud Monitoring 資訊主頁

您必須清楚瞭解 Google Cloud Armor 設定的運作情形。為簡化這項作業,您可以使用安全性資訊主頁。此外,您也可以直接從 Logging 將 Google Cloud Armor 記錄匯出至自有平台。 如果您使用 Adaptive Protection,請務必為觸發的所有 Adaptive Protection 警示設定升級途徑。

一般管理

以下是設定 Google Cloud Armor 的其他最佳做法和建議。

設定 Identity and Access Management 存取權控管

請按照一般 Google Cloud IAM 最佳做法,確保適當人員可存取 Google Cloud Armor。您必須具備 Compute 安全性管理員角色,才能設定、修改、更新及刪除 Google Cloud Armor 安全性政策。此外,您必須具備 Compute Network 管理員角色或 compute.backendServices.setSecurityPolicy 權限,才能將 Google Cloud Armor 安全性政策附加至後端服務。

盡量減少政策數量

Google Cloud Armor 政策可在多個後端服務中重複使用。建議您設定一組一致的可重複使用的安全性政策。

使用 Terraform

為確保設定能輕鬆回溯,並在各專案中重現,我們建議您使用 Terraform。Google Cloud Armor 提供完整的 Terraform 整合功能,可用於 GA 功能。

使用 Google Kubernetes Engine 設定 Google Cloud Armor

如果您使用 GKE,則必須透過 BackendConfig 參數設定 Google Cloud Armor 和其他 ingress 功能。建議您不要手動設定全域外部應用程式負載平衡器或傳統版應用程式負載平衡器,做為入口點。如要進一步瞭解如何使用 GKE 設定 Google Cloud Armor,請參閱「設定 ingress 功能」。