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