Ti presentiamo una nuova esperienza di console per AWS WAF
Ora puoi utilizzare l'esperienza aggiornata per accedere alle AWS WAF funzionalità da qualsiasi punto della console. Per ulteriori dettagli, consulta Lavorare con la console.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Interpolazione dinamica delle etichette
L'interpolazione dinamica delle etichette consente di incorporare i valori delle etichette direttamente nelle intestazioni di richiesta personalizzate, nelle intestazioni di risposta personalizzate e nei corpi di risposta personalizzati utilizzando la sintassi. ${namespace:}
AWS WAF risolve ogni segnaposto al momento della valutazione rispetto alle etichette allegate alla richiesta, in modo da non dover scrivere una regola separata per ogni valore dell'etichetta.
L'interpolazione funziona all'interno dell' AWS WAF API esistente senza nuovi campi o passaggi di configurazione. La sintassi del segnaposto viene utilizzata nei valori di stringa esistenti. I valori di intestazione statici esistenti continuano a funzionare invariati. L'interpolazione si attiva solo quando un valore contiene clausole. ${namespace:}
Dove è supportata l'interpolazione
È possibile utilizzare l'${namespace:}interpolazione nelle seguenti posizioni:
-
Intestazioni di richiesta personalizzate: inserisci i valori delle etichette risolti nelle intestazioni inoltrate all'origine. Usa la
${namespace:}sintassi nel campo del valore dell'intestazione. -
Corpi di risposta personalizzati: incorpora i valori delle etichette e le etichette sintetiche nelle pagine di blocco, nelle pagine delle sfide e in altre risposte personalizzate. Usa la
${namespace:}sintassi nel campo del contenuto del corpo della risposta. -
Intestazioni di risposta personalizzate: inserisci i valori delle etichette nelle intestazioni di risposta, ad esempio in un'
Locationintestazione per i reindirizzamenti. Usa la${namespace:}sintassi nel campo del valore dell'intestazione della risposta.
Sintassi e risoluzione dell'interpolazione
Per utilizzare l'interpolazione, includi ${namespace:} clausole nei valori dell'intestazione o nel contenuto personalizzato del corpo della risposta. I due punti finali sono significativi. Indica AWS WAF di risolvere tutte le etichette all'interno di quel namespace anziché corrispondere letteralmente a una singola etichetta.
AWS WAF risolve ogni clausola al momento della valutazione utilizzando le seguenti regole:
-
Corrispondenza a etichetta singola: la clausola si risolve nel valore terminale dell'etichetta. Ad esempio, se la richiesta ha l'etichetta
awswaf:managed:aws:bot-control:bot:category:scraping, la clausola${awswaf:managed:aws:bot-control:bot:category:}viene risolta in.scraping -
Etichette multiple: quando più etichette corrispondono allo spazio dei nomi, i valori vengono restituiti come elenco separato da virgole con il prefisso dello spazio dei nomi rimosso. Ad esempio,
scraping,advertising. -
Nessuna corrispondenza: la clausola viene risolta in una stringa vuota.
Nota
Un singolo valore di stringa supporta fino a 10 segnaposto. ${namespace:} Se un valore contiene più di 10 segnaposto, AWS WAF risolve i primi 10 e lascia gli eventuali segnaposto aggiuntivi nell'output come testo letterale. ${namespace:} Questo limite si applica a ogni valore di stringa, non a ogni richiesta. Puoi utilizzare fino a 10 segnaposto in ciascuna delle diverse intestazioni senza problemi.
Importante
Le etichette personalizzate utilizzano un nome breve in. ruleLabels Ad esempio, app:tier:enterprise. Tuttavia, aggiunge AWS WAF automaticamente al nome breve il contesto del Protection Pack (Web ACL), producendo un'etichetta completamente qualificata. Ad esempio, awswaf:. L'istruzione label match funziona con lo spazio dei nomi breve, ma i riferimenti di interpolazione devono sempre utilizzare lo spazio dei nomi completo.ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:enterprise
Etichette sintetiche
L'interpolazione supporta anche etichette sintetiche. Si tratta di valori predefiniti che vengono AWS WAF risolti dal contesto della richiesta anziché dall'archivio di etichette. È possibile combinare etichette sintetiche con etichette basate sullo spazio dei nomi nella stessa stringa di valori.
| Etichetta sintetica | Description |
|---|---|
${awswaf:request_id:} |
L'identificatore univoco della AWS WAF richiesta. |
${awswaf:ip:} |
L'indirizzo IP del client. |
${awswaf:ja3:} |
L'impronta digitale TLS JA3. |
${awswaf:ja4:} |
L'impronta digitale TLS JA4. |
Esempi di interpolazione dinamica delle etichette
Segnalazione delle applicazioni con intestazioni dinamiche
La seguente regola inoltra diversi namespace di segnali Bot Control all'origine come intestazioni separate. Una regola copre l'intero spazio dei nomi, quindi non è necessario aggiornare la regola quando il gruppo di regole gestito aggiunge nuove etichette.
{ "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-signalsintestazione (output:x-amzn-waf-bot-signals) mostra una risoluzione multivalore. Il signal: namespace può contenere più etichette, ad esempio, che si risolvono in un elenco separato da non_browser_user_agent,automated_browser virgole. L'client-ipintestazione (output:x-amzn-waf-client-ip) utilizza un'etichetta sintetica.
Pagina di blocco personalizzata con informazioni di debug
Le etichette sintetiche consentono di creare pagine di blocco che includono un contesto specifico della richiesta. Incorpora l'indirizzo IP del client e l'ID della AWS WAF richiesta direttamente nel corpo della risposta per offrire agli utenti qualcosa da condividere quando segnalano un falso positivo.
{ "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" } } }
Interpolazione di etichette personalizzate
L'interpolazione funziona con qualsiasi spazio dei nomi di etichette, incluse le etichette personalizzate definite dall'utente nelle proprie regole. L'esempio seguente classifica le richieste in base alla chiave API e inoltra il valore del livello all'origine.
Regola 1: classifica il livello in base alla chiave API
Questa regola abbina le richieste con una chiave API aziendale e applica un'etichetta personalizzata.
{ { "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": {} } } }
Regola 2: inoltra il valore del livello risolto
Questa regola corrisponde a qualsiasi etichetta nel app:tier namespace e inoltra il valore risolto come intestazione.
{ { "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 prima regola applica l'etichetta. app:tier:enterprise La seconda regola corrisponde a qualsiasi etichetta nel app:tier namespace e inoltra il valore risolto come intestazione. customer-tier Il nome dell'intestazione di output è. x-amzn-waf-customer-tier È possibile aggiungere altre regole di classificazione per altri livelli, ad esempio app:tier:standard o. app:tier:trial La regola di inoltro le raccoglie senza alcuna modifica.