Azure Web 應用程式防火牆提供對 Web 應用程式的集中式保護,以防範常見的漏洞利用和漏洞。 所有 Azure Web 應用程式防火牆功能都存在於原則內,您可以在閘道 API YAML 設定內的接聽程式或路徑型路由規則中參考。
適用於容器的應用程式閘道實作
安全性原則
容器的應用程式閘道會在 Azure Resource Manager 中引進名為 SecurityPolicy 的新子資源。 資源 SecurityPolicy 會提供 ALB 控制器可以參考的 Azure Web 應用程式防火牆原則範圍。
Kubernetes 自定義資源
適用於容器的應用程式閘道引進名為 的新自訂資源 WebApplicationFirewallPolicy。 自定義資源負責定義哪些 Azure Web 應用程式防火牆原則應該用於哪個範圍。
WebApplicationFirewallPolicy 資源可針對以下 Kubernetes 資源:
GatewayHTTPRoute
WebApplicationFirewallPolicy 資源也可以按名稱參考以下各節,以實現更精細的控制:
-
Gateway:Listener
範例實作
將原則範圍限定到閘道資源
以下是一個示範如何將目標設為閘道資源的範例 YAML 設定,該設定會套用至指定「適用於容器的應用程式閘道」的前端資源上的所有接聽程式。
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: contoso-waf-route
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
將原則範圍限定到閘道資源的特定接聽程式
在 Gateway 資源中,您可能具有不同接聽程式所定義的不同主機名稱 (例如 contoso.com 和 fabrikam.com)。 如果 contoso.com 是 listenerA 的主機名稱,而 fabrikam.com 是 listenerB 的主機名稱,則您可以定義 sectionNames 屬性以選取適當的接聽器 (例如,對 contoso.com 使用 listenerA)。
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: contoso-waf-route
namespace: test-infra
sectionNames: ["contoso-listener"]
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
在所有的路由和路徑當中限定原則的範圍
此範例示範如何針對已定義的 HTTPRoute 資源,將原則套用至給定 HTTPRoute 資源中的所有路由規則和路徑。
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: contoso-pathA
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
將原則範圍限定到特定的路徑
若要對相同 Gateway 或閘道 -> 接聽程式 sectionName 的不同路徑使用不同的 WAF 原則,則您可以定義兩個 HTTPRoute 資源,每個資源具有唯一的路徑,並且每個資源都參考其適用的 WAF 原則。
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy-A
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: contoso-pathA
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
---
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy-B
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: contoso-pathB
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-1
局限性
與適用於容器的應用程式閘道相關聯的 Azure Web 應用程式防火牆原則不支援下列功能:
- 跨區域、跨訂用帳戶原則:您的 WAF 原則必須與適用於容器的應用程式閘道資源位於相同的訂用帳戶和區域中。
- 核心規則集 (CRS) 受控規則:適用於容器 WAF 的應用程式閘道僅支援預設規則集 (DRS) 受控規則集。
- 舊版 Bot Manager 規則集:不支援 Bot Manager 規則集 0.1,但支援 Bot Manager 規則集 1.0 版和 1.1 版。
- Bot Manager 規則上的 JavaScript 挑戰動作:您無法將 Bot Manager 規則上的動作設定為 JavaScript 挑戰。
- Bot Manager 規則上的驗證碼挑戰動作:您無法將 Bot Manager 規則上的動作設定為驗證碼。
- Microsoft Security Copilot:該 Security Copilot 在「適用於容器的應用程式閘道」WAF 上不受支援。
- 自訂封鎖回應:適用於容器的應用程式入口 WAF 不支援在 WAF 原則中設定自訂封鎖回應。
- X-Forwarded-For 標頭 (XFF):適用於容器的應用程式閘道 WAF 不支援自訂規則中的 XFF 變數。
- HTTP DDoS 規則集:此管理規則集目前不在容器應用閘道(Application Gateway for Containers)中支援。
Pricing
如需定價詳細資料,請參閱 瞭解適用於容器的應用程式閘道定價。