Zum Inhalt

WAF-Ausnahmen: Konfiguration, Limits und Validierung

Diese Seite richtet sich an das Plattform-Team. Sie beschreibt, wie das Application-Gateway-Addon der Shared Services Managed-Rule- Ausnahmen in einer WAF-Policy konfiguriert, welche Limits gelten und welche Prüfungen beim plan laufen. Zum Anfrageprozess und zum Review siehe Application Gateway und WAF-Policy-Review.

Referenzdesign, dein Deployment kann abweichen

Diese Seite beschreibt das appgw-Addon des Shared-Services-Codes. Ob das Application-Gateway-Modul deines hubs denselben exceptions-Block unterstützt, ist in den Quellen nicht dokumentiert. Prüfe das Schema deines Gateways, bevor du ein Beispiel kopierst.

Ausschlüsse und Ausnahmen

Eine WAF-Policy im Prevention-Modus blockiert Anfragen, die zu ihren Managed Rules passen (zum Beispiel dem OWASP-Regelsatz). Das Modul bietet zwei Wege, mit einer legitimen Anfrage umzugehen, die blockiert wird:

Ausschluss (Exclusion) Ausnahme (Exception)
Key in der Policy-Datei managed_rules.<name>.exclusions exceptions (oberste Ebene der Policy)
Matcht auf Ein Anfrageattribut (match_variable, selector, selector_match_operator) RemoteAddr, RequestHeader oder RequestURI, mit einer Liste von Werten
Scope Regelsätze und Rule Groups mit den auszuschließenden Regeln (excluded_rule_sets) Ein Managed Rule Set, optional beschränkt auf Rule Groups und Rule IDs
Deployt von Dem azurerm-Provider Einem azapi-Update nach der Policy, weil der azurerm-Provider keine Ausnahmen unterstützt

Bevorzuge die engste Option: eine Rule ID, für einen Wert. Deaktiviere keinen Regelsatz wegen einer einzelnen Anfrage.

Aufbau der Policy-Datei

Policy-Dateien sind JSON, im Ordner, den waf_json_file_relative_path festlegt (Standard waf-definitions/), und werden mit waf_json_file_pattern (Standard *.json) gefunden. Jede Datei hat ein Objekt web_application_firewall_policy mit optionalen Feldern name, custom_rules, policy_settings, managed_rules und exceptions. Ohne name heißt die Policy wafp-shared-hub-<environment>-<location_short>-001. Eine Namensänderung einer bestehenden Policy ersetzt sie.

Eine Ausnahme (anonymisiertes Beispiel):

"exceptions": [
  {
    "match_variable": "RequestHeader",
    "selector": "X-Trusted-Partner",
    "selector_match_operator": "Equals",
    "value_match_operator": "Equals",
    "values": ["true"],
    "exception_managed_rule_sets": [
      {
        "type": "OWASP",
        "version": "3.2",
        "rule_groups": [
          {
            "rule_group_name": "REQUEST-942-APPLICATION-ATTACK-SQLI",
            "rules": [942100, 942110]
          }
        ]
      }
    ]
  }
]
Feld Bedeutung
match_variable RemoteAddr, RequestHeader oder RequestURI
value_match_operator Contains, EndsWith, Equals, IPMatch oder StartsWith
values Die Werte, auf die gematcht wird. Mindestens einer.
selector, selector_match_operator Nur für RequestHeader, und dann sind beide Pflicht. Der Selector ist der Header-Name. Der Operator ist Contains, EndsWith, Equals oder StartsWith.
exception_managed_rule_sets Genau ein Eintrag pro Ausnahme: type, version und rule_groups
rule_groups Liste aus rule_group_name und rules (Rule IDs). Das Repository-Beispiel für eine RemoteAddr-Ausnahme nutzt eine leere Liste, die die Validierung als Scope des gesamten Regelsatzes behandelt.

Ein IPMatch-Wert muss eine einzelne IPv4-Adresse sein. CIDR-Bereiche und IPv6 werden abgelehnt.

Limits

Die Prüfungen erzwingen die Azure-Limits, die zum Zeitpunkt des Schreibens gelten:

Limit Wert
Ausnahmen pro WAF-Policy 60
Ausnahmen insgesamt über die WAF-Policies eines Application Gateways 60
Werte für RemoteAddr-Ausnahmen 600
Werte für RequestURI-Ausnahmen 10
Werte für RequestHeader-Ausnahmen 10

Die Gesamtzahl zählt die Ausnahmen aller Policy-Dateien im Ordner, nicht nur einer. Diese Limits sind Konstanten im Modul: Prüfe sie bei einem Upgrade gegen die aktuellen Azure-Limits.

Validierung beim plan

Alle Prüfungen sind Terraform-Preconditions auf der Ausnahme-Ressource. Ein Problem stoppt den plan, und das ist wichtig: Ein Fehler beim apply, nachdem sich die Managed Rules geändert haben, würde die Policy ohne Ausnahmen zurücklassen. Aus demselben Grund wendet jede Änderung an managed_rules einer Policy ihre Ausnahmen automatisch erneut an (ein Replace-Trigger), weil Azure die Ausnahmen entfernt, wenn die Managed Rules aktualisiert werden.

Prüfung Schlägt fehl, wenn
Match-Variable Nicht RemoteAddr, RequestHeader oder RequestURI
Value-Match-Operator Keiner der erlaubten Operatoren
IP-Werte Ein IPMatch-Wert ist keine einzelne IPv4-Adresse
Selector Einer RequestHeader-Ausnahme fehlt selector oder selector_match_operator, oder eine andere Match-Variable setzt sie
Werte Eine Ausnahme hat keine Werte
Anzahl der Rule Sets Eine Ausnahme hat nicht genau einen exception_managed_rule_sets-Eintrag
Rule Set type und version gehören zu keinem der Managed Rule Sets, die in derselben Policy konfiguriert sind
Rule Group rule_group_name existiert in diesem Rule Set nicht
Rule ID Eine Rule ID existiert in dieser Rule Group nicht
Limits Eines der obigen Limits wird überschritten

Die Prüfungen für Rule Set, Group und Rule nutzen den Katalog der verfügbaren WAF-Regelsätze der subscription (der Azure-Ressourcentyp Microsoft.Network/applicationGatewayAvailableWafRuleSets), der beim plan gelesen wird. Die Identität, die den plan ausführt, braucht Lesezugriff darauf. Die Fehlermeldungen listen die gültigen Werte auf, sodass du die richtige Group oder Rule ID kopieren kannst.

Eine Ausnahme hinzufügen

  1. Sammle die Belege aus dem WAF-Log der blockierten Anfrage: die Rule ID, die Rule Group, die URI und das Argument oder den Header (Application-Gateway-Logs).
  2. Hol dir die Freigabe von Security und halte die Begründung und eine Beispielanfrage im Change Record fest.
  3. Füge die Ausnahme in die Policy-Datei ein. Wähle den engsten Match: Ein Header-Wert oder eine einzelne Adresse ist besser als eine URI, die auf viele Anfragen passt.
  4. Führe den plan aus. Behebe jede Precondition-Meldung.
  5. Review (WAF-Policy-Review) und apply.
  6. Teste die Anfrage erneut und führe eine Liste aller Ausnahmen mit ihrer Begründung für die regelmäßige Überprüfung.