

**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](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html). 

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 name="waf-dynamic-label-interpolation"></a>

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
<a name="waf-interpolation-where-supported"></a>

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 `Location` cabeçalho para redirecionamentos. Use a `${namespace:}` sintaxe no campo de valor do cabeçalho de resposta.

## Sintaxe e resolução de interpolação
<a name="waf-interpolation-syntax"></a>

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:

1. **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`

1. **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`

1. **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 em`ruleLabels`. 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:{{ACCOUNT_ID}}:webacl:{{WEBACL_NAME}}:app:tier:enterprise` A instrução label match funciona com o namespace curto, mas as referências de interpolação devem sempre usar o namespace totalmente qualificado.

## Etiquetas sintéticas
<a name="waf-interpolation-synthetic-labels"></a>

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
<a name="waf-interpolation-examples"></a>

**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 exemplo`non_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ótulo`app: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` ou`app: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](https://github.com/aws-samples/sample-aws-waf-dynamic-labels) em. GitHub