你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

用于容器的应用程序网关上的 Azure Web 应用程序防火墙

Azure Web 应用程序防火墙为 Web 应用程序提供集中保护,使其免受常见攻击和漏洞的侵害。 所有 Azure Web 应用程序防火墙功能都存在于策略中,可在网关 API YAML 配置中的侦听器或基于路径的路由规则中引用。

显示阻止请求的 Azure Web 应用程序防火墙规则的关系图。

适用于容器的应用程序网关实现

安全策略

适用于容器的应用程序网关引入了 Azure 资源管理器中调用 SecurityPolicy 的新子资源。 资源 SecurityPolicy 提供了 ALB 控制器可以引用的 Azure Web 应用程序防火墙策略的范围。

Kubernetes 自定义资源

用于容器的应用程序网关引入了名为 WebApplicationFirewallPolicy 的新自定义资源。 自定义资源负责定义应在哪个范围内使用哪个 Azure Web 应用程序防火墙策略。

WebApplicationFirewallPolicy 资源可以面向以下 Kubernetes 资源:

  • Gateway
  • HTTPRoute

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 应用程序防火墙策略不支持以下功能:

  • 在 Microsoft Security Copilot 中的 Azure Web 应用防火墙集成
  • JavaScript 质询操作
  • 核心规则集 (CRS) 3.2 和更早的规则集

注释

用于容器的应用程序网关与 Azure Web 应用程序防火墙的关联为预览版。 有关 beta 版、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款