本文說明 Google Cloud Armor 安全性政策的常見用途。Cloud Armor 安全性政策可透過 IP 位址允許清單和拒絕清單,以及預先設定的規則,保護應用程式免受常見網路攻擊。
功能適用情況
下表根據訂閱方案和您保護的負載平衡器或端點類型,摘要列出可用的 Cloud Armor 功能。
| 功能 | Cloud Armor Standard | Cloud Armor Enterprise | 支援的端點 |
|---|---|---|---|
| 巨流量 DDoS 防護 | 已包含 | 已包含 | 所有外部負載平衡器、Cloud CDN、Media CDN |
| IP 允許/拒絕規則 | 已包含 | 已包含 | 外部應用程式負載平衡器、外部 Proxy 網路負載平衡器 |
| 預先設定的 WAF 規則 | 已包含 | 已包含 | 外部應用程式負載平衡器、外部 Proxy 網路負載平衡器 |
| 自訂 CEL 規則 | 已包含 | 已包含 | 外部應用程式負載平衡器、外部 Proxy 網路負載平衡器 |
| 進階保護措施 | 僅限快訊 | 完整保護 | 外部應用程式負載平衡器 |
| 機器人管理 | 無法使用 | 已包含 | 外部應用程式負載平衡器 |
| 進階網路 DDoS 防護功能 | 無法使用 | 已包含 | 外部直通式網路負載平衡器、通訊協定轉送、使用公開 IP 的 VM |
| 網路邊緣安全性政策 | 無法使用 | 已包含 | 外部直通式網路負載平衡器、通訊協定轉送、使用公開 IP 的 VM |
| 威脅情報 | 無法使用 | 已包含 | 外部應用程式負載平衡器、外部 Proxy 網路負載平衡器 |
安全性政策範例
本節說明如何使用 Cloud Armor 安全性政策控管應用程式或服務的存取權。
使用許可清單,允許特定 IP 位址的使用者存取
使用 IP 位址許可清單,將要求限制在特定 IP 位址或 CIDR 範圍,例如分公司的公開 IP。您只能允許來自這些指定範圍的流量。
設定允許清單,加入用戶端 IP 位址或用戶端 CIDR 範圍,即可控管全域外部/傳統版應用程式負載平衡器的存取權。下一節將說明這項設定。
在此設定中,您只允許特定範圍內的用戶端 IP 位址存取全域外部應用程式負載平衡器或傳統版應用程式負載平衡器。您希望拒絕所有其他流量。
如要建立這項設定,請按照下列步驟操作:
- 建立 Cloud Armor 安全性政策。
- 在安全性政策中,新增將範圍加入允許清單的規則。
這項規則的說明為
allow [RANGE],其中[RANGE]是所需的 IP 範圍。 - 將政策中的預設規則從允許規則變更為拒絕規則。預設規則是政策中的最後一條規則,適用於不符合任何先前規則的流量。將這項規則變更為
deny,即可封鎖不在許可清單範圍內的所有流量。 - 將這項政策與全域外部應用程式負載平衡器或傳統版應用程式負載平衡器的後端服務建立關聯。
如果貴機構使用第三方安全防護供應商清除流量,您可以將安全防護供應商的 IP 位址加入許可清單,確保只有清除後的流量可以存取全域外部應用程式負載平衡器或傳統版應用程式負載平衡器和後端。
在下圖中,第三方供應商的 CIDR 範圍為 192.0.2.0/24,且這個範圍位於允許清單中。
使用拒絕清單,禁止特定 IP 位址的使用者存取
使用拒絕清單拒絕來自特定 IP 位址或 CIDR 範圍的流量。
在下圖中,Cloud Armor 安全性政策有 deny 規則,可封鎖來自 IP 位址 198.51.100.1 的流量,因為系統已識別出惡意使用者。
自訂規則,可根據第 3 層到第 7 層的參數進行篩選
使用 Cloud Armor 自訂規則語言,在規則的比對條件中定義運算式。Cloud Armor 會根據這些運算式評估傳入的要求。如果要求相符,系統就會套用規則的動作,拒絕或允許流量。
以下範例是使用一般運算語言 (CEL) 的 Cloud Armor 擴充功能編寫的運算式。詳情請參閱「自訂規則語言參考資料」。
使用 Google Cloud CLI --expression 旗標或Google Cloud 控制台定義運算式。詳情請參閱「建立安全性政策、規則和運算式」。
在以下範例中,AU 區域中來自 2001:db8::/32 的要求 (例如 Alpha 版測試人員) 符合下列運算式:
origin.region_code == "AU" && inIpRange(origin.ip, '2001:db8::/32')
以下範例會比對來自 192.0.2.0/24 的要求,以及包含「WordPress」字串的使用者代理程式:
inIpRange(origin.ip, '192.0.2.0/24') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('WordPress')
如需更多範例,請參閱自訂規則語言參考資料中的「範例運算式」。
保護部署作業免於應用程式層攻擊,並防範 OWASP 機構彙整的十大資安風險
Cloud Armor 可協助保護 Cloud CDN 來源伺服器免受應用程式層 (L7) 攻擊,例如 SQL 注入 (SQLi) 和跨網站指令碼攻擊 (XSS)。快取中的內容是靜態的,一般來說不會有遭到鎖定攻擊的風險。不過,原始伺服器可能是具有安全漏洞的動態應用程式。為符合安全性規定,您可能需要減輕這些風險,防止攻擊者利用漏洞攻擊原始伺服器。
如要降低風險,請按照下列步驟操作:
- 建立或找出已啟用 CDN 的後端服務。
- 建立 Cloud Armor 安全性政策。
- 在安全性政策中建立一或多項規則,拒絕 L7 攻擊。
- 將安全性政策的其中一個目標,設為您在步驟 1 中建立或識別的後端服務。
使用預先設定的規則偵測及封鎖常見的應用程式層攻擊。
預先設定的規則是預先定義的運算式集,可新增至安全性政策。如要將這些運算式集新增至規則,請使用 gcloud CLI --expression 旗標或 Google Cloud 控制台。詳情請參閱建立安全性政策、規則和運算式。
預設情況下,預先設定的規則最多會檢查要求主體的前 8 KB 內容。不過,您可以為每項政策設定這項限制。如要進一步瞭解如何在使用預先設定的網頁應用程式防火牆規則時,設定要求主體的檢查限制,請參閱「要求主體檢查限制」。
如要進一步瞭解預先設定的規則,請參閱自訂規則語言參考資料中的「預先設定的規則」。
以下範例使用預先設定的規則,防範跨網站指令碼攻擊 (XSS):
evaluatePreconfiguredWaf('xss-v422-stable')
以下範例使用預先設定的規則,防範 SQL 注入 (SQLi) 攻擊:
evaluatePreconfiguredWaf('sqli-v422-stable')
您也可以將預先設定的規則與其他運算式合併。下列範例使用預先設定的規則,防範來自 192.0.2.1/24 IP 位址範圍的 SQLi 攻擊:
inIpRange(origin.ip, '192.0.2.1/24') && evaluatePreconfiguredWaf('sqli-v422-stable')
針對混合式工作負載防範 OWASP 十大資安風險
無論是部署在 Google Cloud、地端部署或第三方供應商,Cloud Armor 都能緩解下列攻擊:
- SQL 注入 (SQLi)
- 跨網站指令碼攻擊 (XSS)
- 本機檔案包含 (LFI)
- 遠端檔案包含 (RFI)
- 遠端程式碼執行 (RCE)
您可以運用這些功能解決最常見的部分網頁應用程式安全風險,包括 OWASP Top 10 清單中列出的風險。
在安全性政策中新增預先設定的 WAF 規則,偵測並拒絕不必要的第 7 層要求,例如 SQL 插入或跨網站指令碼攻擊嘗試。Cloud Armor 會在 Google 基礎架構的邊緣偵測並捨棄惡意要求。無論部署位置為何,要求都不會 Proxy 至後端服務。
如要防範這些攻擊,保護非Google Cloud代管的工作負載,請按照下列步驟操作:
- 設定全域外部應用程式負載平衡器或傳統版應用程式負載平衡器,並將網際網路 NEG 設為後端的後端服務。
- 建立 Cloud Armor 安全性政策。
- 將預先設定的 SQLi 和 XSS 規則新增至政策。
- 將安全性政策附加至您在步驟 1 中建立的後端服務。
- 使用 Cloud Logging、Cloud Monitoring 和傳送至 Security Command Center 的發現項目,監控 Cloud Armor 活動。
Cloud CDN 外部原始伺服器 DDoS 防禦和第 7 層監控
使用外部原始伺服器部署 Cloud CDN 時,Google 的邊緣基礎架構可做為 Proxy、快取和 Cloud Armor 第 7 層篩選的前端。使用網際網路 NEG 時,來源伺服器可位於地端部署或第三方基礎架構供應商。
Cloud Armor 和 Google 的邊緣基礎架構可防範第 3 層和第 4 層攻擊,針對可疑的第 7 層活動發出警報,並透過自訂規則拒絕不必要的第 7 層要求。無論受保護的應用程式部署在何處,Cloud Logging、Cloud Monitoring 和 Security Command Center 中的 Cloud Armor 記錄和遙測資料,都能提供可做為行動依據的洞察資料。
如要為 CDN 外部來源伺服器啟用 Cloud Armor 防護功能,請按照下列步驟操作:
- 設定全域外部應用程式負載平衡器或傳統版應用程式負載平衡器,並將網際網路 NEG 設為後端的後端服務。
- 為這項後端服務啟用 Cloud CDN。
- 建立 Cloud Armor 安全性政策。
- 將安全性政策附加至您在步驟 1 中建立的後端服務。
- 在 Security Command Center、Cloud Logging 和 Cloud Monitoring 中存取 Cloud Armor 快訊、記錄和遙測資料。
此外,您可以使用邊緣安全政策,保護儲存在快取中的內容。如要進一步瞭解邊緣安全性政策,請參閱「安全性政策總覽」。
第 7 層存取權控管和清除快取攻擊
視應用程式架構而定,您可以設定一個後端服務,處理各種網址的要求,包括可快取和不可快取的內容。在這種部署情境中,請建立 Cloud Armor 安全性政策,拒絕特定要求路徑上的非預期流量,但允許所有用戶端存取不同要求路徑上的靜態內容。
在其他情況下,即使內容是從快取提供,惡意用戶端仍可能會產生許多要求,導致快取失敗。快取失敗時,原始伺服器必須擷取或產生內容,這可能會耗用資源並影響可用性。建立安全性政策,比對導致問題的用戶端簽章,並在要求抵達原始伺服器前拒絕要求。
如要達成這個目標,請按照下列步驟操作:
- 建立 Cloud Armor 安全性政策。
設定規則,例如下列規則會拒絕存取
"/admin":request.path.contains("/admin") && !inIpRange(origin.ip, '<allowed_ip_range>')將步驟 1 中的安全性政策附加至已啟用 Cloud CDN 的後端服務。
外部直通式網路負載平衡器防護
如果您訂閱了 Cloud Armor Enterprise,可以使用進階網路 DDoS 防護功能,保護外部直通式網路負載平衡器、通訊協定轉送項目和使用公開 IP 位址的 VM。這項功能可全天候即時防禦 L3 和 L4 DDoS 攻擊。
詳情請參閱「進階網路 DDoS 防護功能總覽」。