Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Web Application Firewall für Azure Application Gateway für Container bietet umfassenden Schutz für Ihre Kubernetes-Workloads vor allgemeinen Web-Sicherheitslücken und Angriffen. Beispielsweise behandelt es SQL-Einschleusung, Cross-Site-Scripting (XSS) und andere der zehn größten Bedrohungen laut Open Web Application Security Project (OWASP).
Das Application Gateway für Container ist eine Lösung auf Anwendungsebene (Layer 7) für Lastenausgleich und die dynamische Datenverkehrsverwaltung. Sie wurde speziell für Workloads entwickelt, die in Kubernetes-Clustern ausgeführt werden. Es stellt die Entwicklung des Application Gateway Ingress Controller (AGIC) dar.
Azure Web Application Firewall bietet Echtzeitschutz für diese Anwendungsschichtworkloads durch eine Reihe proprietärer verwalteter Regelsätze und eines Frameworks für die Erstellung von benutzerdefinierten Benutzerregeln. Alle diese Schutzmaßnahmen sind Teil einer WAF (Web Application Firewall)-Richtlinie, die über eine Ressource SecurityPolicy an Ihr Application Gateway für Container-Bereitstellung angefügt ist.
Erforderliche Konfigurationsschritte
Das Aktivieren von WAF auf Application Gateway für Container erfordert zwei separate Konfigurationen. WAF überprüft den Datenverkehr erst, wenn Sie beide Schritte abgeschlossen haben:
-
Azure-Konfiguration: Erstellen Sie eine
SecurityPolicyuntergeordnete Ressource, die auf Ihre WAF-Richtlinie verweist. Sie können diese Ressource mit dem Azure-Portal, der Azure CLI, Azure PowerShell oder einem Infrastructure-as-Code-Tool wie Bicep oder Terraform erstellen. -
Kubernetes-Konfiguration: Wenden Sie eine benutzerdefinierte
WebApplicationFirewallPolicyRessource in Ihrem Cluster an. Diese Ressource verweist auf dieselbe WAF-Richtlinie und zielt auf die Kubernetes-Ressource ab, die du schützen möchtest.
Important
Die Azure-Ressource SecurityPolicy allein aktiviert keinen WAF-Schutz. Wenn Sie die Ressource SecurityPolicy erstellen, aber keine passende benutzerdefinierte Ressource WebApplicationFirewallPolicy anwenden, wird die WAF-Richtlinie im Azure-Portal und in Microsoft Defender for Cloud als zugeordnet angezeigt, aber Application Gateway for Containers prüft keinen Datenverkehr. Da WAF den Datenverkehr nie auswertet, generiert es auch keine Firewall-Logs. Führen Sie beide Schritte durch und vergewissern Sie sich anschließend, dass WAF den Datenverkehr überprüft, bevor Sie sich zum Schutz auf die Richtlinie verlassen.
Die folgende Tabelle fasst zusammen, was jede Konfiguration steuert.
| Konfiguration | Wo man es erschafft | Was sie steuert |
|---|---|---|
SecurityPolicy Ressource |
Azure | Auf welche WAF-Richtlinien der ALB-Controller verweisen kann. |
WebApplicationFirewallPolicy Benutzerdefinierte Ressource |
Kubernetes-Cluster | Welche WAF-Richtlinie angewendet wird und in welchem Umfang sie durchgesetzt wird. |
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. Diese benutzerdefinierte Ressource definiert, welche Azure Web Application Firewall-Richtlinie verwendet werden soll und in welchem Umfang.
Die Ressource WebApplicationFirewallPolicy kann folgende Kubernetes-Ressourcen ansprechen:
GatewayHTTPRoute
Es kann auch die folgenden Abschnitte namensgemäß für weitere Granularität referenzieren:
-
Gateway:Listener
Geltungsbereich der Richtlinie
Die Eigenschaft targetRef in der benutzerdefinierten WebApplicationFirewallPolicy Ressource bestimmt den Umfang, in dem WAF durchgesetzt wird. Die Azure-Ressource SecurityPolicy legt diesen Umfang nicht fest.
targetRef.kind |
Umfang der Durchsetzung |
|---|---|
Gateway |
Alle Listener und Routen der Zielressource Gateway. |
Gateway mit sectionNames |
Nur die benannten Zuhörer auf der Zielressource Gateway . |
HTTPRoute |
Nur die Routing-Regeln und Pfade, die in der angestrebten Ressource HTTPRoute definiert sind. |
Hinweis
Eine Gateway Ressource als Ziel festzulegen, ist der größtmögliche verfügbare Umfang. Um WAF auf eine einzelne Route anzuwenden, setzen Sie targetRef.kind auf HTTPRoute und geben Sie die spezifische Route an. Wenn Sie eine Gateway Ressource anvisieren, obwohl Sie den Schutz auf Routenebene beabsichtigt haben, gilt die Richtlinie für den gesamten Datenverkehr, den die Ressource Gateway bearbeitet.
Beispielimplementierungen
Ausrichten einer Richtlinie auf eine Gatewayressource
Hier finden Sie ein Beispiel für eine YAML-Konfiguration, die die Zuordnung zu einer Gateway-Ressource zeigt und für alle Listener einer bestimmten Frontend-Ressource von Application Gateway for Containers gilt.
Hinweis
Dieses Beispiel wendet die WAF-Richtlinie auf jeden Hörer und jede Route auf der Zielressource Gateway an. Wenn du eine einzelne Route schützen musst, verwende stattdessen das Beispiel Scope-Policy für alle Routen und Wege .
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 Gateway Ressource können Sie verschiedene Hostnamen definieren, indem Sie unterschiedliche Zuhörer verwenden (zum Beispiel contoso.com und fabrikam.com). Wenn contoso.com ein Hostname von listenerA ist und fabrikam.com ein Hostname von listenerB, definieren Sie die sectionNames Eigenschaft, um den richtigen Listener auszuwählen (zum Beispiel 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
Um verschiedene WAF-Richtlinien für verschiedene Pfade desselben Gateway oder Gateway -> Listener sectionName zu verwenden, definieren Sie zwei HTTPRoute-Ressourcen, jeweils mit einem einzigartigen Pfad, die jeweils auf ihre zutreffende 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
Überprüfen Sie, ob WAF aktiv ist
Nachdem Sie beide Konfigurationsschritte abgeschlossen haben, bestätigen Sie, dass WAF den Verkehr inspiziert, bevor Sie die Richtlinie in den Präventionsmodus stellen.
Überprüfen Sie den Status der benutzerdefinierten
WebApplicationFirewallPolicyRessource in Ihrem Cluster:kubectl get webapplicationfirewallpolicy -n <namespace> -o yamlÜberprüfen Sie die Statusbedingungen der Ressource und bestätigen Sie, dass die Richtlinie akzeptiert wurde und die Referenzen erfolgreich behoben wurden. Wenn
targetRefeine Ressource oder einen Abschnitt benennt, der nicht existiert, kann die Richtlinie nicht zugeordnet werden, und im Status wird der Grund dafür gemeldet.Senden Sie den Testverkehr auf eine geschützte Route und überprüfen Sie dann die WAF-Protokolle. Bestätigen Sie, dass Logeinträge angezeigt werden und dass der Umfang mit dem übereinstimmt, was Sie konfiguriert haben:
-
policyScopeNamegibt den Typ des Bereichs an, dem die WAF-Richtlinie zugeordnet ist, z. B.Route. -
policyScopegibt die Kubernetes-Ressourcenreferenz an, auf die sich der Bereich bezieht.
Weitere Informationen zu diesen Feldern finden Sie unter Application Gateway für Container-Logs.
-
Wenn für den Datenverkehr, den Sie zu überprüfen erwarten, überhaupt keine WAF-Logeinträge erscheinen, ist die Kubernetes-Konfiguration wahrscheinlich unvollständig. Eine WAF-Richtlinie, die nicht angehängt ist, bewertet den Verkehr nicht, sodass keine Logbucheinträge erstellt werden. Bestätige, dass du die benutzerdefinierte WebApplicationFirewallPolicy Ressource angewendet hast und dass sie targetRef eine bestehende Ressource nennt.
Einschränkungen
Die folgende Funktionalität wird für eine WAF-Richtlinie, die einer Application Gateway für Container-Instanz 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: Der Security Copilot wird auf Application Gateway for Containers WAF nicht unterstützt.
- Benutzerdefinierte Blockantwort: Das Einrichten einer benutzerdefinierten Blockantwort in Ihrer WAF-Richtlinie wird auf Application Gateway for Containers 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 Regelsystem wird auf Application Gateway for Containers nicht unterstützt.
Pricing
Details zu den Preisen finden Sie unter Application Gateway for Containers pricing.