Freigeben über


Azure Web Application Firewall auf Application Gateway for Containers

Azure Web Application Firewall bietet einen zentralen Schutz Ihrer Webanwendungen vor gängigen Exploits und Sicherheitsrisiken. Alle Azure Web Application Firewall Funktionen sind innerhalb einer Richtlinie vorhanden, auf die in Listener- oder pfadbasierten Routingregeln innerhalb der YAML-Konfiguration der Gateway-API verwiesen werden kann.

Diagramm mit einer Azure Web Application Firewall Regel, die eine Anforderung blockiert.

Implementierung von Application Gateway für Container

Sicherheitsrichtlinie

Das Anwendungsgateway für Container führt eine neue untergeordnete Ressource namens SecurityPolicy in Azure Resource Manager ein. Die Ressource SecurityPolicy bietet den Umfang, auf den sich Azure Web Application Firewall-Richtlinien beziehen können, auf die der ALB-Controller verweisen kann.

Benutzerdefinierte Kubernetes-Ressource

Das Anwendungsgateway für Container führt eine neue benutzerdefinierte Ressource mit dem Namen WebApplicationFirewallPolicy ein. Die benutzerdefinierte Ressource ist dafür verantwortlich, zu definieren, welche Azure Web Application Firewall Richtlinie zu welchem Bereich verwendet werden soll.

Die WebApplicationFirewallPolicy-Ressource kann auf die folgenden Kubernetes-Ressourcen abzielen:

  • Gateway
  • HTTPRoute

Die WebApplicationFirewallPolicy-Ressource kann zur weiteren Granularität auch auf die folgenden Abschnitte anhand ihres Namens verweisen:

  • Gateway: Listener

Beispielimplementierungen

Ausrichten einer Richtlinie auf eine Gatewayressource

Hier ist ein Beispiel für eine YAML-Konfiguration, die auf eine Gatewayressource abzielt, die für alle Listener auf einer bestimmten Front-End-Ressource des Application Gateway für Container gelten würde.

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

Ausrichten der Richtlinie auf einen bestimmten Listener einer Gatewayressource

Innerhalb einer Ressource Gateway haben Sie möglicherweise unterschiedliche Hostnamen, die von verschiedenen Listenern (z. B. contoso.com und fabrikam.com) definiert wurden. Wenn contoso.com ein Hostname von listenerA und fabrikam.com ein Hostname von listenerB ist, können Sie die Eigenschaft sectionNames definieren, um den richtigen Listener auszuwählen (z. B. listenerA für contoso.com).

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

Ausrichten der Richtlinie für alle Routen und Pfade

In diesem Beispiel wird gezeigt, wie auf eine definierte HTTPRoute-Ressource abgezielt wird, um die Richtlinie auf alle Routingregeln und Pfade innerhalb einer bestimmten HTTPRoute-Ressource anzuwenden.

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

Ausrichten der Richtlinie auf einen bestimmten Pfad

Wenn Sie unterschiedliche WAF-Richtlinien für unterschiedliche Pfade desselben Gateway oder Gateway –> Listener-sectionName, können Sie zwei HTTPRoute-Ressourcen definieren, jeweils mit einem eindeutigen Pfad, die auf die entsprechende WAF-Richtlinie verweisen.

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

Einschränkungen

Die folgende Funktionalität wird für eine Azure Web Application Firewall Richtlinie, die dem Anwendungsgateway für Container zugeordnet ist, nicht unterstützt:

  • Regionsübergreifende, abonnementübergreifende Richtlinie: Ihre WAF-Richtlinie muss sich im gleichen Abonnement und in der gleichen Region befinden wie Ihre Application Gateway für Container-Ressource.
  • Verwaltete Regelsätze (Core Rule Set, CRS): Ein Anwendungsgateway für Container-WAF unterstützt nur einen verwalteten Regelsatz (Default Rule Set, DRS) 2.1.
  • Legacy Bot Manager Rule Set: Bot Manager Ruleset 0.1 wird nicht unterstützt, aber Bot Manager Ruleset-Versionen 1.0 und 1.1 werden unterstützt.
  • JavaScript-Herausforderungsaktionen bei Bot-Manager-Regeln: Sie können die Aktion bei einer Bot-Manager-Regel nicht auf JavaScript-Herausforderung festlegen.
  • Captcha-Challenge-Aktionen bei Bot Manager-Regeln: Sie können die Aktion bei einer Bot Manager-Regel nicht auf Captcha festlegen.
  • Microsoft Security Copilot: Security Copilot wird auf dem Application Gateway for Containers WAF nicht unterstützt.
  • Benutzerdefinierte Blockantwort: Das Festlegen einer benutzerdefinierten Blockantwort in Ihrer WAF-Richtlinie wird für das Anwendungsgateway für Container WAF nicht unterstützt.
  • X-Forwarded-For Header (XFF): Application Gateway for Containers WAF unterstützt die XFF-Variable in angepassten Regeln nicht.
  • HTTP-DDoS-Regelsatz: Dieses verwaltete Regelsatz wird derzeit für das Anwendungsgateway für Container nicht unterstützt.

Pricing

Details zu den Preisen finden Sie unter Grundlegendes zu den Preisen für das Anwendungsgateway für Container.