你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Web 应用程序防火墙为 Web 应用程序提供集中保护,使其免受常见攻击和漏洞的侵害。 所有 Azure Web 应用程序防火墙功能都存在于策略中,可在网关 API YAML 配置中的侦听器或基于路径的路由规则中引用。
适用于容器的应用程序网关实现
安全策略
适用于容器的应用程序网关引入了 Azure 资源管理器中调用 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 是侦听器B 的主机名,则可以定义属性 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
将策略限定为特定路径
若要将不同的 WAF 策略应用于同一 Gateway 或网关-> 侦听器 sectionName 的不同路径,可以定义两个 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 规则上的 Captcha 质询操作:不能在 Bot Manager 规则上将该操作设置为 Captcha。
- 智能 Microsoft Security Copilot 副驾驶®:适用于容器的应用程序网关 WAF 不支持 Security Copilot。
- 自定义块响应:容器 WAF 的应用程序网关不支持在 WAF 策略中设置自定义块响应。
- X-Forwarded-For 标头 (XFF):适用于容器的应用程序网关 WAF 不支持自定义规则中的 XFF 变量。
- HTTP DDoS 规则集:容器的应用程序网关不支持此托管规则集。
Pricing
有关定价详细信息,请参阅 了解适用于容器的应用程序网关的定价。