Apresentando uma nova experiência de console para AWS WAF
Agora você pode usar a experiência atualizada para acessar a AWS WAF funcionalidade em qualquer lugar do console. Para obter mais detalhes, consulte Trabalhando com o console.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Interpolação dinâmica de rótulos
A interpolação dinâmica de rótulos permite incorporar valores de rótulos diretamente em cabeçalhos de solicitação personalizados, cabeçalhos de resposta personalizados e corpos de resposta personalizados usando a sintaxe. ${namespace:}
AWS WAF resolve cada espaço reservado no momento da avaliação em relação aos rótulos anexados à solicitação, para que você não precise escrever uma regra separada para cada valor de rótulo.
A interpolação funciona dentro da AWS WAF API existente sem novos campos ou etapas de configuração. Você usa a sintaxe de espaço reservado em seus valores de string existentes. Os valores de cabeçalho estático existentes continuam funcionando inalterados. A interpolação só é ativada quando um valor contém cláusulas. ${namespace:}
Onde a interpolação é suportada
Você pode usar a ${namespace:} interpolação nos seguintes locais:
-
Cabeçalhos de solicitação personalizados — insira valores de rótulos resolvidos nos cabeçalhos encaminhados para sua origem. Use a
${namespace:}sintaxe no campo de valor do cabeçalho. -
Corpos de resposta personalizados — Incorpore valores de rótulos e rótulos sintéticos em páginas de blocos, páginas de desafios e outras respostas personalizadas. Use a
${namespace:}sintaxe no campo de conteúdo do corpo da resposta. -
Cabeçalhos de resposta personalizados — insira valores de rótulo em cabeçalhos de resposta, por exemplo, em um
Locationcabeçalho para redirecionamentos. Use a${namespace:}sintaxe no campo de valor do cabeçalho de resposta.
Sintaxe e resolução de interpolação
Para usar a interpolação, inclua ${namespace:} cláusulas nos valores do cabeçalho ou no conteúdo personalizado do corpo da resposta. O cólon posterior é significativo. Ele diz AWS WAF para resolver todos os rótulos dentro desse namespace em vez de corresponder literalmente a um único rótulo.
AWS WAF resolve cada cláusula no momento da avaliação usando as seguintes regras:
-
Correspondência de rótulo único — A cláusula é resolvida para o valor terminal do rótulo. Por exemplo, se a solicitação tiver o rótulo
awswaf:managed:aws:bot-control:bot:category:scraping, a cláusula será${awswaf:managed:aws:bot-control:bot:category:}resolvida para.scraping -
Vários rótulos — Quando vários rótulos correspondem ao namespace, os valores são retornados como uma lista separada por vírgulas com o prefixo do namespace removido. Por exemplo, .
scraping,advertising -
Sem correspondência — A cláusula é resolvida em uma string vazia.
nota
Um único valor de string suporta até 10 ${namespace:} espaços reservados. Se um valor contiver mais de 10 espaços reservados, AWS WAF resolverá os 10 primeiros e deixará quaisquer espaços reservados adicionais na saída como texto literal. ${namespace:} Esse limite se aplica a cada valor de string, não a cada solicitação. Você pode usar até 10 espaços reservados em cada um dos vários cabeçalhos sem problemas.
Importante
As etiquetas personalizadas usam um nome curto emruleLabels. Por exemplo, .app:tier:enterprise No entanto, prefixa AWS WAF automaticamente o nome curto com o contexto do pacote de proteção (Web ACL), produzindo um rótulo totalmente qualificado. Por exemplo, .awswaf: A instrução label match funciona com o namespace curto, mas as referências de interpolação devem sempre usar o namespace totalmente qualificado.ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:enterprise
Etiquetas sintéticas
A interpolação também suporta rótulos sintéticos. Esses são valores incorporados que são AWS WAF resolvidos a partir do contexto da solicitação e não do armazenamento de etiquetas. Você pode combinar rótulos sintéticos com rótulos baseados em namespace na mesma cadeia de valores.
| Etiqueta sintética | Description |
|---|---|
${awswaf:request_id:} |
O identificador exclusivo da AWS WAF solicitação. |
${awswaf:ip:} |
O endereço IP do cliente. |
${awswaf:ja3:} |
A impressão digital JA3 TLS. |
${awswaf:ja4:} |
A impressão digital JA4 TLS. |
Exemplos de interpolação dinâmica de rótulos
Sinalização de aplicativos com cabeçalhos dinâmicos
A regra a seguir encaminha vários namespaces de sinais do Bot Control para sua origem como cabeçalhos separados. Uma regra cobre todo o namespace, então você não precisa atualizar a regra quando o grupo de regras gerenciadas adiciona novos rótulos.
{ "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:}" } ] } } } }
O bot-signals cabeçalho (output:x-amzn-waf-bot-signals) demonstra a resolução de vários valores. O signal: namespace pode conter vários rótulos, por exemplonon_browser_user_agent,automated_browser, que se resolvem em uma lista separada por vírgulas. O client-ip cabeçalho (saída:x-amzn-waf-client-ip) usa um rótulo sintético.
Página de bloqueio personalizada com informações de depuração
Os rótulos sintéticos permitem criar páginas em bloco que incluem contexto específico da solicitação. Incorpore o endereço IP do cliente e o ID da AWS WAF solicitação diretamente no corpo da resposta para dar aos usuários algo para compartilhar quando denunciarem um 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" } } }
Interpolação de etiquetas personalizadas
A interpolação funciona com qualquer namespace de rótulo, incluindo rótulos personalizados que você define em suas próprias regras. O exemplo a seguir classifica as solicitações por chave de API e encaminha o valor do nível para a origem.
Regra 1: classifique o nível com base na chave da API
Essa regra combina solicitações com uma chave de API corporativa e aplica um rótulo personalizado.
{ { "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": {} } } }
Regra 2: Encaminhar o valor do nível resolvido
Essa regra corresponde a qualquer rótulo no app:tier namespace e encaminha o valor resolvido como um cabeçalho.
{ { "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:}" }] } } } }
A primeira regra aplica o rótuloapp:tier:enterprise. A segunda regra corresponde a qualquer rótulo no app:tier namespace e encaminha o valor resolvido como cabeçalho. customer-tier O nome do cabeçalho de saída éx-amzn-waf-customer-tier. Você pode adicionar mais regras de classificação para outros níveis, como app:tier:standard ouapp:tier:trial. A regra de encaminhamento os seleciona sem nenhuma alteração.
Para obter uma amostra implantável que demonstra todos esses padrões, consulte a amostra de interpolação AWS WAF dinâmica de rótulos