Wir stellen vor: ein neues Konsolenerlebnis für AWS WAF
Sie können das aktualisierte Erlebnis jetzt verwenden, um überall in der Konsole auf AWS WAF Funktionen zuzugreifen. Weitere Informationen finden Sie unter Arbeiten mit der Konsole.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Dynamische Labelinterpolation
Mit der dynamischen Labelinterpolation können Sie Labelwerte mithilfe von Syntax direkt in benutzerdefinierte Anforderungsheader, benutzerdefinierte Antwortheader und benutzerdefinierte Antworttexte einbetten. ${namespace:}
AWS WAF löst jeden Platzhalter bei der Auswertung anhand der der Anfrage beigefügten Labels auf, sodass Sie nicht für jeden Labelwert eine separate Regel schreiben müssen.
Die Interpolation funktioniert innerhalb der bestehenden AWS WAF API ohne neue Felder oder Konfigurationsschritte. Sie verwenden die Platzhaltersyntax in Ihren vorhandenen Zeichenkettenwerten. Bestehende statische Header-Werte funktionieren weiterhin unverändert. Die Interpolation wird nur aktiviert, wenn ein Wert Klauseln enthält${namespace:}.
Wo Interpolation unterstützt wird
Sie können die ${namespace:} Interpolation an den folgenden Stellen verwenden:
-
Benutzerdefinierte Anforderungsheader — Fügen Sie aufgelöste Labelwerte in Header ein, die an Ihren Absender weitergeleitet wurden. Verwenden Sie die
${namespace:}Syntax im Header-Wertfeld. -
Benutzerdefinierte Antworttexte — Betten Sie Labelwerte und synthetische Labels in Blockseiten, Challenge-Seiten und andere benutzerdefinierte Antworten ein. Verwenden Sie die
${namespace:}Syntax im Inhaltsfeld für den Antworttext. -
Benutzerdefinierte Antwort-Header — Fügen Sie Labelwerte in Antwort-Header ein, z. B. in einen
LocationHeader für Weiterleitungen. Verwenden Sie die${namespace:}Syntax im Wertefeld für den Antwort-Header.
Syntax und Auflösung der Interpolation
Um Interpolation zu verwenden, fügen Sie ${namespace:} Klauseln in Ihre Header-Werte oder den Inhalt des benutzerdefinierten Antworttexts ein. Der abschließende Doppelpunkt ist signifikant. Es weist darauf AWS WAF hin, dass alle Labels in diesem Namespace aufgelöst werden sollen, anstatt einem einzigen Label wortwörtlich zu entsprechen.
AWS WAF löst jede Klausel bei der Auswertung anhand der folgenden Regeln auf:
-
Single Label Match — Die Klausel wird in den Endwert des Labels aufgelöst. Wenn die Anforderung beispielsweise das Label hat
awswaf:managed:aws:bot-control:bot:category:scraping, wird die Klausel wie folgt${awswaf:managed:aws:bot-control:bot:category:}aufgelöst.scraping -
Mehrere Labels — Wenn mehrere Labels mit dem Namespace übereinstimmen, werden die Werte als kommagetrennte Liste zurückgegeben, wobei das Namespace-Präfix entfernt wird. Beispiel,
scraping,advertising. -
Keine Übereinstimmung — Die Klausel wird in eine leere Zeichenfolge aufgelöst.
Anmerkung
Ein einzelner Zeichenkettenwert unterstützt bis zu 10 ${namespace:} Platzhalter. Wenn ein Wert mehr als 10 Platzhalter enthält, werden die ersten 10 Platzhalter AWS WAF aufgelöst und alle weiteren Platzhalter bleiben in der Ausgabe als Literaltext erhalten. ${namespace:} Dieses Limit gilt für jeden Zeichenkettenwert, nicht für jede Anfrage. Sie können problemlos bis zu 10 Platzhalter in jeder von mehreren Kopfzeilen verwenden.
Wichtig
Benutzerdefinierte Beschriftungen verwenden einen Kurznamen in. ruleLabels Beispiel, app:tier:enterprise. Dem Kurznamen AWS WAF wird jedoch automatisch der Kontext des Schutzpakets (Web-ACL) vorangestellt, sodass ein vollständig qualifiziertes Label entsteht. Beispiel, awswaf:. Die Anweisung label match funktioniert mit dem kurzen Namespace, Interpolationsverweise müssen jedoch immer den vollständig qualifizierten Namespace verwenden.ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:enterprise
Synthetische Labels
Die Interpolation unterstützt auch synthetische Labels. Dies sind integrierte Werte, die aus dem Anforderungskontext und nicht aus dem Labelspeicher AWS WAF aufgelöst werden. Sie können synthetische Labels mit Namespace-basierten Labels in derselben Wertezeichenfolge kombinieren.
| Synthetisches Etikett | Description |
|---|---|
${awswaf:request_id:} |
Die eindeutige AWS WAF Anforderungs-ID. |
${awswaf:ip:} |
Die Client-IP-Adresse. |
${awswaf:ja3:} |
Der JA3-TLS-Fingerabdruck. |
${awswaf:ja4:} |
Der JA4-TLS-Fingerabdruck. |
Beispiele für dynamische Label-Interpolation
Anwendungssignalisierung mit dynamischen Headern
Die folgende Regel leitet mehrere Bot Control-Signal-Namespaces als separate Header an Ihren Ursprung weiter. Eine Regel deckt den gesamten Namespace ab, sodass Sie die Regel nicht aktualisieren müssen, wenn die verwaltete Regelgruppe neue Labels hinzufügt.
{ "Name": "forward-waf-signals", "Statement": { "LabelMatchStatement": { "Scope": "NAMESPACE", "Key": "awswaf:managed:aws:bot-control:bot:category:" } }, "RuleAction": { "Count": { "CustomRequestHandling": { "InsertHeaders": [ { "Name": "bot-category", "Value": "${awswaf:managed:aws:bot-control:bot:category:}" }, { "Name": "bot-name", "Value": "${awswaf:managed:aws:bot-control:bot:name:}" }, { "Name": "bot-signals", "Value": "${awswaf:managed:aws:bot-control:signal:}" }, { "Name": "client-ip", "Value": "${awswaf:ip:}" } ] } } } }
Der bot-signals Header (output:x-amzn-waf-bot-signals) zeigt die Auflösung mehrerer Werte. Der signal: Namespace kann beispielsweise mehrere Labels enthaltennon_browser_user_agent,automated_browser, die in eine durch Kommas getrennte Liste aufgelöst werden. Der client-ip Header (output:x-amzn-waf-client-ip) verwendet ein synthetisches Label.
Benutzerdefinierte Blockseite mit Debug-Informationen
Mit synthetischen Labels können Sie Blockseiten erstellen, die anforderungsspezifischen Kontext enthalten. Betten Sie die IP-Adresse des Clients und die AWS WAF Anfrage-ID direkt in den Antworttext ein, damit Benutzer sie teilen können, wenn sie ein falsches Positiv melden.
{ "CustomResponseBodies": { "BlockPage": { "Content": "Your request was blocked.\n\nIP: ${awswaf:ip:}\nRequest ID: ${awswaf:request_id:}\n\nIf you believe this is an error, contact support with the Request ID above.", "ContentType": "TEXT_PLAIN" } } }
Interpolation benutzerdefinierter Etiketten
Die Interpolation funktioniert mit jedem Label-Namespace, einschließlich benutzerdefinierter Labels, die Sie in Ihren eigenen Regeln definieren. Das folgende Beispiel klassifiziert Anfragen nach API-Schlüssel und leitet den Tierwert an den Ursprung weiter.
Regel 1: Klassifizieren Sie die Stufe anhand des API-Schlüssels
Diese Regel ordnet Anfragen einem Unternehmens-API-Schlüssel zu und wendet ein benutzerdefiniertes Label an.
{ { "Name": "classify-tier", "Priority": 100, "Statement": { "ByteMatchStatement": { "SearchString": "pk_enterprise_", "FieldToMatch": { "SingleHeader": { "Name": "x-api-key" } }, "PositionalConstraint": "STARTS_WITH", "TextTransformations": [{ "Priority": 0, "Type": "NONE" }] } }, "RuleLabels": [{ "Name": "app:tier:enterprise" }], "Action": { "Count": {} } } }
Regel 2: Den aufgelösten Tierwert weiterleiten
Diese Regel entspricht einem beliebigen Label im app:tier Namespace und leitet den aufgelösten Wert als Header weiter.
{ { "Name": "forward-tier", "Priority": 200, "Statement": { "LabelMatchStatement": { "Scope": "NAMESPACE", "Key": "app:tier:" } }, "Action": { "Count": { "CustomRequestHandling": { "InsertHeaders": [{ "Name": "customer-tier", "Value": "${awswaf:ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:}" }] } } } }
Die erste Regel wendet das Label an. app:tier:enterprise Die zweite Regel entspricht einem beliebigen Label im app:tier Namespace und leitet den aufgelösten Wert als Header weiter. customer-tier Der Name des Ausgabe-Headers lautet. x-amzn-waf-customer-tier Sie können weitere Klassifizierungsregeln für andere Ebenen hinzufügen, z. B. app:tier:standard oderapp:tier:trial. Die Weiterleitungsregel übernimmt sie ohne Änderungen.
Ein einsatzfähiges Beispiel, das all diese Muster demonstriert, finden Sie im Beispiel AWS WAF Dynamic Label Interpolation