---
name: azion-aplique-um-rule-set-a-toda-requisicao
description: >-
  Crie a regra de firewall cujo behavior Set WAF entrega toda requisição a um rule set, pelo Azion Console, pela Azion CLI ou pela API.
---

# Aplique um rule set a toda requisição

Você pode criar a regra do [Rules Engine for Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/) que aplica um rule set a toda requisição pelo Azion Console, pela Azion CLI ou pela API. Um rule set não pontua nada até que uma regra o nomeie, e o critério abaixo não pula nenhuma requisição.

---

## Pré-requisitos

- Um firewall vinculado ao seu workload, com o WAF ativado nas main settings dele.
- Um rule set a aplicar, como `storefront-waf`. Para criar um, consulte [Crie um rule set em sensibilidade média](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/rule-set-medio/).
- A [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e um personal token configurado, para o procedimento da CLI.
- Um personal token, para a requisição à API.

---

## Crie a regra

**Console**

Para criar a regra pelo Azion Console:

1. **Abra o firewall vinculado ao seu workload**

   Acesse o [Azion Console](https://console.azion.com/) > **Firewalls** e selecione esse firewall.

2. **Selecione a aba Rules Engine**

3. **Selecione + Rule**

4. **Nomeie a regra**

   Informe `Apply storefront-waf` como o nome.

5. **Defina o critério**

   Na seção **Criteria**, selecione a variável `Request Uri`, o operador *starts with* e `/` como argumento.

6. **Adicione o behavior Set WAF**

   Na seção **Behaviors**, selecione **Set WAF** e então `storefront-waf` como o rule set e *Blocking* como o modo.

7. **Salve a regra**

A regra entrega toda requisição que o firewall recebe a `storefront-waf` em modo blocking.

Para a mesma regra com as famílias de ameaças e o modo em aberto, consulte [Crie e aplique um WAF rule set](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/criar-waf-rule-set/).

**CLI**

Para criar a regra com a Azion CLI, salve-a como `rule.json`, com o id do seu rule set em `waf_id`:

```json
{
  "name": "Apply storefront-waf",
  "active": true,
  "criteria": [
    [
      {
        "conditional": "if",
        "variable": "${request_uri}",
        "operator": "starts_with",
        "argument": "/"
      }
    ]
  ],
  "behaviors": [
    {
      "type": "set_waf",
      "attributes": {
        "waf_id": 12349,
        "mode": "blocking"
      }
    }
  ]
}
```

Depois, crie a regra a partir do arquivo:

```bash
azion create firewall-rule --firewall-id <firewall-id> --file rule.json
```

```text
Created Firewall Rule with ID 123457
```

A saída informa o id da nova regra.

**API**

Salve a regra como `rule.json`, com o id do seu rule set em `waf_id`:

```json
{
  "name": "Apply storefront-waf",
  "active": true,
  "criteria": [
    [
      {
        "conditional": "if",
        "variable": "${request_uri}",
        "operator": "starts_with",
        "argument": "/"
      }
    ]
  ],
  "behaviors": [
    {
      "type": "set_waf",
      "attributes": {
        "waf_id": 12349,
        "mode": "blocking"
      }
    }
  ]
}
```

Envie uma requisição `POST` para o endpoint de request rules do firewall, com o arquivo como corpo:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/firewalls/<firewall-id>/request_rules \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data @rule.json
```

A API responde `202` e retorna a regra com duas chaves que ela atribuiu: um `description` vazio e a `order` que a regra ocupa entre as regras daquele firewall.

> **nota**
>
> `criteria` é uma lista de listas, e uma regra carrega no máximo um behavior `Set WAF`. `mode` é obrigatório nesse behavior: um behavior `set_waf` enviado sem ele é recusado com `400` e o erro `10059 Required Field`, apontando para `/data/behaviors/0/attributes/mode`. Baseie o critério em `${request_uri}`, não na query string. Uma variável vazia não corresponde, então `${request_args}` com o operator `matches` e `.*` pula toda requisição sem query string, incluindo um `POST` cujo payload está inteiramente no corpo.

---

## Próximos passos

- [Mude um rule set para blocking](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/mudar-para-blocking.md): Altere o modo neste behavior depois que a regra já estiver no lugar.
- [Score e modos](/pt-br/documentacao/plataforma/firewall/waf/score-e-modos.md): Onde esta regra fica no caminho que uma requisição percorre, e o que acontece depois que ela corresponde.
