View a markdown version of this page

Dynamische Labelinterpolation - AWS WAF, AWS Firewall Manager, AWS Shield Advanced, und AWS Shield Direktor für Netzwerksicherheit

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 Location Header 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:

  1. Single Label Match — Die Klausel wird in den Endwert des Labels aufgelöst. Wenn die Anforderung beispielsweise das Label hatawswaf:managed:aws:bot-control:bot:category:scraping, wird die Klausel wie folgt ${awswaf:managed:aws:bot-control:bot:category:} aufgelöst. scraping

  2. 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.

  3. 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:ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:enterprise. Die Anweisung label match funktioniert mit dem kurzen Namespace, Interpolationsverweise müssen jedoch immer den vollständig qualifizierten Namespace verwenden.

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 unter. GitHub