下列各節將說明 Cloud Armor 如何與其他 Google Cloud 功能和產品互動。
Cloud Armor 和虛擬私有雲防火牆規則
Cloud Armor 安全性政策和 VPC 防火牆規則的功能不同:
- Cloud Armor 安全性政策可提供邊緣安全防護,並對 Google Front End (GFE) 的用戶端流量採取行動。
- 虛擬私有雲防火牆規則可允許或拒絕後端的來往流量。您必須建立輸入允許防火牆規則,目標為負載平衡的後端 VM,來源為全域外部應用程式負載平衡器或傳統版應用程式負載平衡器使用的 IP 範圍。這些規則可讓 GFE 和健康狀態檢查系統與後端 VM 通訊。
舉例來說,假設您只想允許 CIDR 範圍 100.1.1.0/24 和 CIDR 範圍 100.1.2.0/24 的流量存取全域外部應用程式負載平衡器或傳統版應用程式負載平衡器,您的目標是禁止流量直接傳送至後端負載平衡執行個體。換句話說,只有透過全域外部應用程式負載平衡器或傳統版應用程式負載平衡器 (具備相關聯的安全性政策) 進行 Proxy 處理的外部流量,才能抵達執行個體。
上圖顯示下列部署設定:
- 建立兩個執行個體群組,分別位於
us-west1
地區和europe-west1
地區。 - 將後端應用程式執行個體部署至執行個體群組中的 VM。
- 在 Premium 層級中建立全域外部應用程式負載平衡器或傳統版應用程式負載平衡器。設定網址對應和單一後端服務,後者後端為上一步建立的兩個執行個體群組。負載平衡器的轉送規則必須使用
120.1.1.1
外部 IP 位址。 - 設定 Cloud Armor 安全性政策,允許來自 100.1.1.0/24 和 100.1.2.0/24 的流量,並拒絕所有其他流量。
- 將這項政策與負載平衡器的後端服務建立關聯。 如需操作說明,請參閱「設定 Cloud Armor 安全性政策」。如果外部 HTTP(S) 負載平衡器的網址對應較為複雜,可以參照多個後端服務。您可以視需要將安全政策與一或多個後端服務建立關聯。
- 設定允許連入的防火牆規則,允許流量從全域外部應用程式負載平衡器或傳統版應用程式負載平衡器傳送。詳情請參閱防火牆規則。
搭配外部應用程式負載平衡器和 IAP 使用 Cloud Armor
Identity-Aware Proxy (IAP) 會驗證使用者身分,然後判斷該使用者是否可以存取應用程式。如要為全域外部應用程式負載平衡器或傳統版應用程式負載平衡器啟用 IAP,請使用負載平衡器的後端服務。同樣地,邊緣 Cloud Armor 安全性政策會附加至全域外部應用程式負載平衡器或傳統版應用程式負載平衡器的後端服務。
如果後端服務同時啟用 Cloud Armor 安全性政策和 IAP,系統會根據負載平衡器類型,依下列順序評估:
如果是全域外部應用程式負載平衡器的後端服務,系統會先進行 Cloud Armor 評估。如果 Cloud Armor 封鎖要求,IAP 就不會評估要求。如果 Cloud Armor 允許要求,IAP 接著會評估要求。如果 IAP 未驗證要求,系統就會封鎖要求。
如果是傳統版應用程式負載平衡器的後端服務,系統會先進行 IAP 評估。如果 IAP 驗證要求,Cloud Armor 就會評估要求。如果要求未通過 IAP 驗證,Cloud Armor 就不會評估要求。
如要進一步瞭解 IAP 和相關設定,請參閱 Identity-Aware Proxy 說明文件。
搭配混合式部署作業使用 Cloud Armor
在混合式部署中,全域外部應用程式負載平衡器或傳統版應用程式負載平衡器需要存取在外部執行的應用程式或內容來源 (例如在其他雲端服務供應商的基礎架構中)。 Google Cloud您可以使用 Cloud Armor 保護這類部署作業。
在下圖中,負載平衡器有兩項後端服務。其中一個的後端是執行個體群組。另一個後端服務的後端是網際網路 NEG,而網際網路 NEG 與在第三方供應商資料中心執行的應用程式相關聯。
將 Cloud Armor 安全性政策附加至以網際網路 NEG 做為後端的後端服務時,Cloud Armor 會檢查傳送至全域外部應用程式負載平衡器或傳統應用程式負載平衡器的每個第 7 層要求,這些要求會導向該後端服務。
混合式部署的 Cloud Armor 保護機制適用於網際網路 NEG 的限制。
搭配 Google Kubernetes Engine (GKE) 使用 Cloud Armor
以下各節說明 Cloud Armor 如何與 GKE 搭配運作。
GKE Ingress
設定 Cloud Armor 安全性政策後,您可以使用 Kubernetes Ingress 在 GKE 中啟用該政策。
您可以將安全性政策名稱新增至 BackendConfig
,藉此參照安全性政策。BackendConfig
下列 BackendConfig
資訊清單會指定名為 example-security-policy
的安全性政策:
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
namespace: cloud-armor-how-to
name: my-backendconfig
spec:
securityPolicy:
name: "example-security-policy"
如要進一步瞭解 Ingress 功能,請參閱「Ingress 設定」。
GKE 閘道
設定 Cloud Armor 安全性政策後,您可以使用 Kubernetes Gateway API,透過 GKE 啟用該政策。
如要參照安全性政策,請將安全性政策名稱新增至 GCPBackendPolicy
政策資源。下列GCPBackendPolicy
政策資源資訊清單會指定名為 example-security-policy
的後端安全政策:
服務
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
securityPolicy: example-security-policy
targetRef:
group: ""
kind: Service
name: lb-service
多叢集服務
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
securityPolicy: example-security-policy
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
如要進一步瞭解如何設定 Cloud Armor 後端安全政策,請參閱「設定 Cloud Armor 後端安全政策,保護後端服務」。
搭配使用 Cloud Armor 與 Cloud CDN
如要保護 CDN 來源伺服器,可以搭配使用 Cloud Armor 和 Cloud CDN。Cloud Armor 可保護 CDN 來源伺服器免於應用程式攻擊,降低 OWASP 前 10 大風險,並強制執行第 7 層篩選政策。有兩種安全性政策會影響 Cloud Armor 與 Cloud CDN 的搭配運作方式:邊緣安全性政策和後端安全性政策。
Edge 安全性政策
您可以為全域外部應用程式負載平衡器或傳統版應用程式負載平衡器後方的 Cloud CDN 啟用後端服務和 Cloud Storage 後端 bucket,套用邊緣安全性政策。在從快取提供內容之前,先使用邊緣安全政策篩選要求。
後端安全性政策
如果已啟用 Cloud CDN,並將 Cloud Armor 後端安全性政策套用至後端服務,則這些政策只會套用至轉送至後端服務的要求。這類要求包括動態內容要求和快取失敗,也就是錯過或略過 Cloud CDN 快取的要求。
如果邊緣安全性政策和後端安全性政策附加至同一個後端服務,系統只會對通過邊緣安全性政策的快取失敗要求強制執行後端安全性政策
下圖僅顯示後端安全政策如何與 Cloud CDN 來源搭配運作,前提是要求已獲邊緣安全政策允許。
如要進一步瞭解 Cloud CDN,請參閱 Cloud CDN 說明文件。
搭配 Cloud Run、App Engine 或 Cloud Run functions 使用 Cloud Armor
您可以搭配無伺服器 NEG 後端使用 Cloud Armor 安全性政策,該後端會指向 Cloud Run、App Engine 或 Cloud Run functions 服務。
不過,如果搭配無伺服器 NEG、Cloud Run 或 Cloud Run 函式使用 Cloud Armor,則必須透過 Cloud Armor 安全性政策篩選所有無伺服器端點的存取權。
如果使用者擁有無伺服器應用程式的預設網址,就能略過負載平衡器,直接前往服務網址。這會略過 Cloud Armor 安全性政策。如要解決這個問題,請停用自動指派給 Cloud Run 服務或 Cloud Run Functions (第 2 代) 函式的預設網址。 Google Cloud 如要保護 App Engine 應用程式,可以使用連入控制項。
如果您使用 Ingress 控制項,將存取權控管套用至所有傳入流量,設定 Cloud Run 函式或 Cloud Run 時,可以使用 internal-and-gclb
Ingress 設定。internal-and-gclb
傳入設定只允許內部流量,以及傳送至全域外部應用程式負載平衡器或傳統版應用程式負載平衡器公開的外部 IP 位址的流量。系統會封鎖來自私人網路外部,傳送至這些預設網址的流量。這可防止使用者規避透過全域外部應用程式負載平衡器或傳統版應用程式負載平衡器設定的任何存取權控管 (例如 Cloud Armor 安全性政策)。
如要進一步瞭解無伺服器 NEG,請參閱無伺服器網路端點群組概念總覽和設定無伺服器 NEG。
搭配 Cloud Service Mesh 使用 Cloud Armor
您可以為服務網格設定內部服務安全政策,對每個用戶端強制執行全域伺服器端速率限制,有助於公平分配服務的可用容量,並降低惡意或行為異常的用戶端造成服務過載的風險。您可以將安全性政策附加至 Cloud Service Mesh 端點政策,在伺服器端對傳入流量強制執行速率限制。不過,如果您使用 TCP 流量路徑,就無法設定 Google Cloud Armor 安全性政策。如要進一步瞭解如何搭配使用 Cloud Armor 與 Cloud Service Mesh,請參閱「使用 Cloud Armor 設定頻率限制」。