本頁面列出 Google Cloud Armor 安全性政策的常見用途。 Cloud Armor 安全性政策可透過 IP 位址允許清單和拒絕清單等功能,以及預先設定的規則,保護應用程式免受常見網路攻擊。
控管網路應用程式和服務的存取權
本節將介紹幾種使用 Cloud Armor 安全性政策控管應用程式或服務存取權的方法。
使用允許清單,為特定 IP 位址的使用者啟用存取權
將使用者 IP 位址加入允許清單的常見用途,是當全域外部應用程式負載平衡器或傳統版應用程式負載平衡器,只供特定使用者存取時。在下列範例中,只有貴機構的使用者可以存取負載平衡器後方的服務。這些使用者擁有貴機構指派的 IP 位址或位址區塊。您可以將這些 IP 位址或 CIDR 範圍加入允許清單,確保只有這些使用者可以存取負載平衡器。
您可以設定允許清單,列出允許存取負載平衡器的來源 IP 位址或來源 CIDR 範圍,藉此控管全域外部應用程式負載平衡器或傳統版應用程式負載平衡器的存取權。下一節會進一步說明這項設定。
在這個設定中,您只允許機構使用者透過 IP 範圍內的 IP 位址,存取全域外部應用程式負載平衡器或傳統版應用程式負載平衡器。您希望拒絕所有其他流量。
如要建立這項設定,請按照下列步驟操作:
- 建立 Cloud Armor 安全性政策。
- 在安全性政策中,新增規則,將範圍新增至允許清單做為第一條規則。這項規則的說明為
allow [RANGE]
,其中[RANGE]
是所需的 IP 範圍。 - 將政策中的預設規則從允許規則修改為拒絕規則。預設規則會控管不符合任何先前規則的流量。這是政策中的最後一條規則。將規則從
allow
變更為deny
,會封鎖所有並非源自許可清單範圍的流量。 - 將這項政策與全域外部應用程式負載平衡器或傳統版應用程式負載平衡器的後端服務建立關聯。
如果貴機構使用第三方安全防護供應商清除流量,您可以將安全防護供應商的 IP 位址加入許可清單,確保只有清除後的流量可以存取全域外部應用程式負載平衡器或傳統應用程式負載平衡器和後端。
在下圖中,第三方供應商是由 CIDR 範圍 192.0.2.0/24 識別,而這個範圍位於允許清單中。
使用拒絕清單,封鎖特定 IP 位址使用者的存取權
使用拒絕清單建立 Cloud Armor 安全性政策,拒絕來自 IP 位址或 CIDR 範圍的流量。在下圖中,Cloud Armor 安全性政策有一項 deny
規則,可封鎖來自 IP 位址 198.51.100.1 的流量,因為系統已識別出惡意使用者。
自訂規則,可根據第 3 層到第 7 層的參數進行篩選
使用 Cloud Armor 自訂規則語言,在規則的相符條件中定義一或多個運算式。Cloud Armor 收到要求時,會根據這些運算式評估要求。如果相符,規則的動作就會生效,拒絕或允許傳入的流量。
以下範例是使用一般運算語言 (CEL) 的 Cloud Armor 擴充功能編寫的運算式。詳情請參閱自訂規則語言參考資料。
如要在規則中定義運算式,請使用 gcloud --expression
旗標或Trusted Cloud 主控台。詳情請參閱建立 Cloud Armor 安全性政策、規則和運算式。
在下列範例中,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 中建立或識別的後端服務。
您也可以使用預先設定的規則,偵測及封鎖常見的應用程式層攻擊。預先設定的規則是預先定義的運算式集,可新增至 Cloud Armor 安全性政策。如要將這些運算式集新增至規則,請使用 gcloud --expression
標記或 Trusted Cloud 控制台。詳情請參閱建立安全性政策、規則和運算式。
預先設定的規則預設會檢查要求主體的前 8 KB。不過,您可以為每項政策設定這項限制。如要進一步瞭解如何在使用預先設定的 WAF 規則時,為要求主體設定這項檢查限制,請參閱「POST 和 PATCH 主體檢查限制」。
如要進一步瞭解預先設定的規則,請參閱自訂規則語言參考資料中的「預先設定的規則」。
以下範例使用預先設定的規則,防範跨網站指令碼攻擊 (XSS):
evaluatePreconfiguredWaf('xss-stable')
以下範例使用預先設定的規則,防範 SQL 注入 (SQLi) 攻擊:
evaluatePreconfiguredWaf('sqli-stable')
您也可以將預先設定的規則與其他運算式合併。下列範例使用預先設定的規則,防範來自 192.0.2.1/24
IP 位址範圍的 SQL 注入攻擊:
inIpRange(origin.ip, '192.0.2.1/24') && evaluatePreconfiguredWaf('sqli-stable')
針對混合式工作負載防範 OWASP 十大資安風險
無論是部署在 Trusted Cloud、內部部署或第三方供應商,Cloud Armor 都能防範下列攻擊:
- SQL 注入 (SQLi)
- 跨網站指令碼攻擊 (XSS)
- 本機檔案包含 (LFI)
- 遠端檔案包含 (RFI)
- 遠端程式碼執行 (RCE)
您可以運用這些功能,解決一些最常見的網路應用程式安全性風險,包括 OWASP 前 10 大清單中列出的風險。
Cloud Armor 的預先設定 WAF 規則可新增至安全性政策,偵測並拒絕含有 SQLi 或 XSS 嘗試的不當第 7 層要求。Cloud Armor 會偵測惡意要求,並在 Google 基礎架構的邊緣捨棄這些要求。無論後端服務部署在何處,要求都不會 Proxy 至後端服務。
如要防範這些攻擊,保護 Google 網路邊緣的非Trusted Cloud代管工作負載,請按照下列步驟操作:
- 設定全域外部應用程式負載平衡器或傳統型應用程式負載平衡器,並使用以網際網路 NEG 做為後端的後端服務。
- 建立 Cloud Armor 安全性政策。
- 將預先設定的 SQLi 和 XSS 規則新增至政策。
- 將安全性政策附加至您在步驟 1 中建立的後端服務。
- 使用 Cloud Logging、Cloud Monitoring 和傳送至 Security Command Center 的發現項目,監控 Cloud Armor 活動。
第 7 層存取權控管和清除快取攻擊
視應用程式架構而定,您可以設定一個後端服務,處理各種網址的要求,包括可快取和不可快取的內容。在這種部署情境中,請建立 Cloud Armor 安全性政策,拒絕特定要求路徑上的不當流量,但允許所有用戶端存取不同要求路徑上的靜態內容。
在其他情況下,即使內容是從快取有效率地提供,惡意或有問題的用戶端仍可能會產生大量要求,導致快取未命中,並要求基礎原始伺服器擷取或產生所要求內容。這可能會耗用有限的資源,對所有使用者的應用程式可用性造成負面影響。您可以建立 Cloud Armor 安全性政策,比對造成問題的任何用戶端簽章,並在要求抵達原始伺服器並影響效能前拒絕要求。
如要完成這項操作,請按照下列步驟操作:
- 建立 Cloud Armor 安全性政策。
設定規則,例如下列規則會拒絕存取
"/admin"
:request.path.contains("/admin") && !inIpRange(origin.ip, '<allowed_ip_range>')
將步驟 1 中的安全性政策附加至已啟用 Cloud CDN 的後端服務。