---
name: azion-crie-uma-regra-de-firewall
description: >-
  Adicione uma regra ao Rules Engine de um firewall pelo Azion Console, pela Azion CLI ou pela API, e confirme que ela nega uma requisição.
---

# Crie uma regra de firewall

Você pode criar uma regra de [firewall](/pt-br/documentacao/plataforma/firewall/) no [Rules Engine](/pt-br/documentacao/plataforma/firewall/rules-engine/) pelo Azion Console, pela Azion CLI ou pela API. A primeira regra desta página nega um caminho de teste, então uma única requisição confirma que o firewall a aplica. A segunda, criada no Azion Console, recusa um cliente que não apresenta certificado.

Uma aplicação tem um Rules Engine próprio. Uma regra que adiciona um header de requisição para a sua origem pertence ao [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine/).

---

Selecione a interface em que você trabalha. Os pré-requisitos e os passos que criam a primeira regra mudam conforme a sua seleção.

## Pré-requisitos

- Um firewall vinculado ao seu [workload](/pt-br/documentacao/plataforma/workloads/). Para criar um firewall e vinculá-lo, consulte [Primeiros passos com Firewall](/pt-br/documentacao/plataforma/firewall/primeiros-passos/).
- Para a regra de certificado de cliente, mutual TLS (mTLS) ativado nesse workload. Para mais informações, consulte [Suporte para mTLS para Secure](/pt-br/documentacao/plataforma/workloads/mtls/).

**Console**

- Acesso ao Azion Console. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).

**CLI**

- Azion CLI instalada e autorizada com a sua conta. Os comandos desta página correspondem à Azion CLI 4.23.0.
- O ID do firewall. Azion Console mostra o ID no endereço da página do firewall, depois de `/firewalls/edit/`.

**API**

- Um personal token, enviado no header `Authorization` como `Token [TOKEN VALUE]`. Para criar um, consulte [Como criar um personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- `curl` ou outro cliente HTTP.
- O ID do firewall. Azion Console mostra o ID no endereço da página do firewall, depois de `/firewalls/edit/`.

---

## Negue requisições a um caminho

A regra desta seção corresponde às requisições cujo caminho começa com `/deny-test` e as recusa com `403`. As requisições para qualquer outro caminho continuam chegando à sua aplicação. O critério também corresponde a caminhos mais longos que começam com os mesmos caracteres, como `/deny-test-old`.

Nem o critério *Request Uri* nem o behavior *Deny (403 Forbidden)* precisam de um produto no firewall. Outros critérios e comportamentos precisam de [Web Application Firewall (WAF)](/pt-br/documentacao/plataforma/firewall/como-funciona/#waf), [Network Shield](/pt-br/documentacao/plataforma/firewall/como-funciona/#network-shield) ou Functions habilitado no firewall. Para a lista completa, consulte [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/#criterios).

**Console**

Para criar a regra no Azion Console:

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

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

2. **Selecione a aba Rules Engine**

3. **Inicie uma nova regra**

   Selecione **Rule**. O drawer **Create Rule** abre.

4. **Nomeie a regra**

   Na seção **General**, informe um **Name**, como `deny-test-path`.

5. **(Opcional) Descreva a regra**

   Em **Description**, informe uma nota curta sobre o que a regra faz.

6. **Defina o critério**

   Na seção **Criteria**, a primeira condição abre com a variável *Request Uri* e o operador *starts with*. Informe `/deny-test` como argumento.

7. **Adicione o comportamento**

   Na seção **Behaviors**, selecione *Deny (403 Forbidden)*.

8. **Salve a regra**

   Selecione **Save**.

Azion Console mostra `Rule successfully created`. A regra aparece na aba **Rules Engine** com *Active* na coluna **Status**.

**CLI**

Para criar a regra pela Azion CLI, salve a definição dela como `rule.json`. O arquivo traz o `name` da regra, se ela está `active`, os `criteria` e os `behaviors` dela:

```json
{
  "name": "deny-test-path",
  "active": true,
  "criteria": [
    [
      {
        "variable": "${request_uri}",
        "conditional": "if",
        "operator": "starts_with",
        "argument": "/deny-test"
      }
    ]
  ],
  "behaviors": [
    {
      "type": "deny"
    }
  ]
}
```

`criteria` é uma lista de grupos, e cada grupo é uma lista de condições. A primeira condição recebe `"conditional": "if"`, e cada condição seguinte recebe `and` ou `or`.

Depois, crie a regra no seu firewall, com o ID dele no lugar de `<firewall-id>`:

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

O comando imprime o ID da nova regra:

```text
Created Firewall Rule with ID <rule-id>
```

A regra fica ativa no firewall, porque o arquivo define `"active": true`. `azion create firewall-rule` aceita apenas `--firewall-id` e `--file`. O arquivo contém o mesmo corpo que a API aceita.

**API**

Para criar a regra pela API, envie uma requisição `POST` para o endpoint `request_rules` do seu firewall. O corpo traz o `name` da regra, se ela está `active`, os `criteria` e os `behaviors` dela:

```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 '{
  "name": "deny-test-path",
  "active": true,
  "criteria": [
    [
      {
        "variable": "${request_uri}",
        "conditional": "if",
        "operator": "starts_with",
        "argument": "/deny-test"
      }
    ]
  ],
  "behaviors": [
    {
      "type": "deny"
    }
  ]
}'
```

`criteria` é uma lista de grupos, e cada grupo é uma lista de condições. A primeira condição recebe `"conditional": "if"`, e cada condição seguinte recebe `and` ou `or`. Uma chave opcional `description` contém uma nota sobre a regra.

A API responde `202` e retorna a regra:

```text
{"state":"pending","data":{"id":<rule-id>,…,"behaviors":[{"type":"deny"}],"description":"","order":0}}
```

A resposta acrescenta o `id` da regra, uma `description` vazia e a `order` dela. A `order` é a posição da regra entre as regras do firewall, contada a partir de `0`. Envie o corpo como `application/json`: qualquer outro `Content-Type` é recusado com `415` e o erro `10009 Unsupported Media Type`.

Para cada variável, operador e comportamento que o corpo aceita, consulte [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/#api) e a [referência da Azion API](https://api.azion.com/).

O firewall processa as regras na ordem da lista, e um behavior `deny` encerra esse processamento para a requisição que ele recusa. Para mais informações, consulte [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona/#ordem-das-regras).

---

## Confirme que a regra nega o caminho

Uma regra nova entra em vigor de 6 min 29 s a 9 min 18 s depois que você a cria. Até lá, `/deny-test` responde como antes. Enquanto a mudança se propaga, as requisições podem receber a resposta antiga e a nova, alternadamente. Um workload recém-vinculado a um firewall pode levar vários minutos para aplicar a primeira regra, e nenhuma duração é garantida.

Para confirmar a regra, envie uma requisição para o caminho de teste, com o domínio do seu workload no lugar de `<your-domain>`:

```bash
curl -i https://<your-domain>/deny-test
```

O firewall recusa a requisição com `403`:

```text
HTTP/2 403
server: nginx
date: Thu, 01 Jan 2026 12:00:00 GMT
content-type: text/html; charset=utf-8
x-content-type-options: nosniff
x-azion-request-id: 0123456789abcdef0123456789abcdef
x-azion-edge-location: <edge-location>
alt-svc: h3=":443"; ma=86400
```

O corpo é a página de erro padrão da Azion. Ele mostra `Forbidden` e o mesmo ID de requisição do header `x-azion-request-id`. Uma requisição para qualquer outro caminho continua chegando à sua aplicação.

Se `/deny-test` ainda responder depois de 9 min 18 s, consulte [Solucionar problemas de Firewall](/pt-br/documentacao/plataforma/firewall/solucao-de-problemas/). Para mais informações sobre propagação, consulte [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona/#propagacao).

---

## Exija um certificado de cliente

A regra desta seção corresponde a uma requisição cujo cliente não apresenta certificado e a responde com `401` e um corpo JSON. Use-a para aplicar uma política de mTLS, como a que o compliance do BACEN exige. O critério *Ssl Verification Status* e o behavior *Set Custom Response* não precisam de produto no firewall.

Para criar a regra no Azion Console:

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

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

2. **Selecione a aba Rules Engine**

3. **Inicie uma nova regra**

   Selecione **Rule**.

4. **Nomeie a regra**

   Na seção **General**, informe um **Name**, como `require-client-certificate`.

5. **Defina o critério**

   Na seção **Criteria**, selecione *Ssl Verification Status* como a variável e *is equal* como o operador. Em **Select an SSL Status**, selecione *Missing Client Certificate*.

6. **Adicione o comportamento**

   Na seção **Behaviors**, selecione *Set Custom Response* como o behavior.

7. **Informe o código de status**

   Em **Status code**, informe `401`.

8. **Informe o tipo de conteúdo**

   Em **Content Type**, informe o tipo MIME do corpo da resposta, como `application/json`.

9. **Informe o corpo da resposta**

   Em **Content Body**, informe a mensagem que o cliente recebe, como `{}`.

10. **Salve a regra**

    Selecione **Save**.

Azion Console mostra `Rule successfully created`. Quando a regra entrar em vigor, uma requisição sem certificado de cliente recebe `401` e o corpo que você informou.

Para cada opção deste critério e deste comportamento, consulte [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/#set-custom-response).

Para encaminhar à sua origem o Common Name (CN) do certificado do cliente, use [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine/) em vez disso. Lá, um behavior que adiciona um header de requisição, como `client_cn`, envia a variável `${ssl_client_s_dn_parsed}`. Para a configuração completa, consulte [Passe os detalhes do certificado de cliente para a origem](/pt-br/documentacao/guias/seguranca-de-aplicacoes/tls-e-certificados/associar-um-certificado-mtls/#passe-os-detalhes-do-certificado-de-cliente-para-a-origem).

---

## Próximos passos

- [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine.md): Cada critério, operador e comportamento que uma regra de firewall aceita, e os erros que a API retorna.
- [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona.md#como-as-regras-sao-executadas): Como um firewall executa as regras em ordem, e quais comportamentos encerram a lista.
- [Aplique um rule set a toda requisição](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/aplicar-rule-set.md): Adicione uma regra cujo behavior Set WAF entrega toda requisição a um WAF rule set.
- [Bloqueie requisições por IP, ASN ou país](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/blocklists-enderecos-ip-edge.md): Negue os endereços, sistemas autônomos ou países que uma network list contém.
