Présentation d'une nouvelle expérience de console pour AWS WAF
Vous pouvez désormais utiliser l'expérience mise à jour pour accéder aux AWS WAF fonctionnalités n'importe où dans la console. Pour plus de détails, consultez la section Utilisation de la console.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Interpolation dynamique des étiquettes
L'interpolation dynamique des étiquettes vous permet d'intégrer les valeurs des étiquettes directement dans des en-têtes de demande personnalisés, des en-têtes de réponse personnalisés et des corps de réponse personnalisés à l'aide de la syntaxe. ${namespace:}
AWS WAF résout chaque espace réservé au moment de l'évaluation par rapport aux étiquettes jointes à la demande, de sorte que vous n'avez pas à écrire une règle distincte pour chaque valeur d'étiquette.
L'interpolation fonctionne au sein de l' AWS WAF API existante sans nouveaux champs ni étapes de configuration. Vous utilisez la syntaxe de l'espace réservé dans les valeurs de chaîne existantes. Les valeurs d'en-tête statiques existantes continuent de fonctionner sans modification. L'interpolation ne s'active que lorsqu'une valeur contient des ${namespace:} clauses.
Où l'interpolation est prise en charge
Vous pouvez utiliser l'${namespace:}interpolation aux emplacements suivants :
-
En-têtes de demande personnalisés : insérez les valeurs d'étiquette résolues dans les en-têtes transmis à votre origine. Utilisez la
${namespace:}syntaxe du champ de valeur d'en-tête. -
Corps de réponse personnalisés : intégrez des valeurs d'étiquette et des étiquettes synthétiques dans les pages de bloc, les pages de défi et les autres réponses personnalisées. Utilisez la
${namespace:}syntaxe du champ de contenu du corps de la réponse. -
En-têtes de réponse personnalisés : insérez des valeurs d'étiquette dans les en-têtes de réponse, par exemple dans un
Locationen-tête pour les redirections. Utilisez la${namespace:}syntaxe du champ de valeur d'en-tête de réponse.
Syntaxe et résolution d'interpolation
Pour utiliser l'interpolation, incluez des ${namespace:} clauses dans les valeurs de vos en-têtes ou dans le contenu du corps de réponse personnalisé. Les deux points situés à la fin sont importants. Il indique AWS WAF de résoudre toutes les étiquettes de cet espace de noms plutôt que de correspondre littéralement à une seule étiquette.
AWS WAF résout chaque clause au moment de l'évaluation en utilisant les règles suivantes :
-
Correspondance d'étiquette unique : la clause est résolue à la valeur terminale de l'étiquette. Par exemple, si la demande possède l'étiquette
awswaf:managed:aws:bot-control:bot:category:scraping, la clause est${awswaf:managed:aws:bot-control:bot:category:}résolue àscraping. -
Libellés multiples : lorsque plusieurs libellés correspondent à l'espace de noms, les valeurs sont renvoyées sous forme de liste séparée par des virgules, le préfixe de l'espace de noms étant supprimé. Par exemple,
scraping,advertising. -
Aucune correspondance — La clause est résolue en une chaîne vide.
Note
Une seule valeur de chaîne prend en charge jusqu'à 10 ${namespace:} espaces réservés. Si une valeur contient plus de 10 espaces réservés, AWS WAF résout les 10 premiers et laisse les espaces réservés supplémentaires dans la sortie sous forme de texte littéral${namespace:}. Cette limite s'applique à chaque valeur de chaîne, et non à chaque demande. Vous pouvez utiliser jusqu'à 10 espaces réservés dans chacun des en-têtes sans problème.
Important
Les étiquettes personnalisées utilisent un nom abrégé dansruleLabels. Par exemple, app:tier:enterprise. Cependant, le nom abrégé est AWS WAF automatiquement préfixé par le contexte du pack de protection (ACL Web), produisant ainsi une étiquette entièrement qualifiée. Par exemple, awswaf:. L'instruction label match fonctionne avec l'espace de noms court, mais les références d'interpolation doivent toujours utiliser l'espace de noms complet.ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:enterprise
Étiquettes synthétiques
L'interpolation prend également en charge les étiquettes synthétiques. Il s'agit de valeurs intégrées qui sont AWS WAF résolues à partir du contexte de la demande plutôt qu'à partir du magasin d'étiquettes. Vous pouvez combiner des étiquettes synthétiques avec des étiquettes basées sur des espaces de noms dans la même chaîne de valeurs.
| Étiquette synthétique | Description |
|---|---|
${awswaf:request_id:} |
L'identifiant unique AWS WAF de la demande. |
${awswaf:ip:} |
Adresse IP du client. |
${awswaf:ja3:} |
L'empreinte TLS du JA3. |
${awswaf:ja4:} |
L'empreinte TLS du JA4. |
Exemples d'interpolation d'étiquettes dynamiques
Signalisation d'application avec en-têtes dynamiques
La règle suivante transmet plusieurs espaces de noms de signaux Bot Control à votre origine sous forme d'en-têtes distincts. Une règle couvre l'ensemble de l'espace de noms. Il n'est donc pas nécessaire de la mettre à jour lorsque le groupe de règles géré ajoute de nouvelles étiquettes.
{ "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:}" } ] } } } }
L'bot-signalsen-tête (output :x-amzn-waf-bot-signals) illustre la résolution à valeurs multiples. L'espace de signal: noms peut contenir plusieurs étiquettes, par exemplenon_browser_user_agent,automated_browser, qui se traduisent par une liste séparée par des virgules. L'client-ipen-tête (output :x-amzn-waf-client-ip) utilise une étiquette synthétique.
Page de blocage personnalisée avec informations de débogage
Les étiquettes synthétiques vous permettent de créer des pages de blocs qui incluent un contexte spécifique à la demande. Intégrez l'adresse IP du client et l'ID de AWS WAF demande directement dans le corps de la réponse pour donner aux utilisateurs quelque chose à partager lorsqu'ils signalent un faux positif.
{ "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 d'étiquettes personnalisée
L'interpolation fonctionne avec n'importe quel espace de noms d'étiquettes, y compris les étiquettes personnalisées que vous définissez dans vos propres règles. L'exemple suivant classe les demandes par clé d'API et transmet la valeur du niveau à l'origine.
Règle 1 : Classer le niveau en fonction de la clé d'API
Cette règle associe les demandes à une clé d'API d'entreprise et applique une étiquette personnalisée.
{ { "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": {} } } }
Règle 2 : Transférer la valeur de niveau résolue
Cette règle correspond à n'importe quelle étiquette de l'app:tierespace de noms et transmet la valeur résolue sous forme d'en-tête.
{ { "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:}" }] } } } }
La première règle applique l'étiquetteapp:tier:enterprise. La deuxième règle correspond à n'importe quelle étiquette de l'app:tierespace de noms et transmet la valeur résolue sous forme d'customer-tieren-tête. Le nom de l'en-tête de sortie estx-amzn-waf-customer-tier. Vous pouvez ajouter d'autres règles de classification pour d'autres niveaux, telles que app:tier:standard ouapp:tier:trial. La règle de transfert les récupère sans aucune modification.
Pour un exemple déployable illustrant tous ces modèles, consultez l'exemple d'interpolation d'étiquettes AWS WAF dynamiques sur