---
name: azion-aplique-um-rate-limit-aos-enderecos-de-uma-lista
description: >-
  Crie uma network list e uma regra de firewall que limita cada cliente dela a uma taxa de requisições, pelo Azion Console, pela Azion CLI ou pela API.
---

# Aplique um rate limit aos endereços de uma lista

Você pode limitar os clientes de uma [network list](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/) a uma taxa de requisições pelo Azion Console, pela [Azion CLI](/pt-br/documentacao/devtools/cli/) ou pela API. A regra não define nenhum limite para clientes fora da lista. Uma regra de [firewall](/pt-br/documentacao/plataforma/firewall/) combina o critério *Network*, que lê a lista, com o comportamento *Set Rate Limit*. Use-a quando um conjunto de endereços pode continuar usando a sua aplicação, mas apenas em um ritmo que a aplicação consegue atender. Para recusar esses endereços em vez de desacelerá-los, consulte [Bloqueie requisições por IP, ASN ou país](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/blocklists-enderecos-ip-edge/).

---

Selecione a interface deste guia. Os pré-requisitos e cada tarefa desta página mudam para essa interface.

## Pré-requisitos

- Um [workload](/pt-br/documentacao/plataforma/workloads/) vinculado a um firewall. A regra de rate limit fica nesse firewall.
- [Network Shield](/pt-br/documentacao/plataforma/firewall/#network-shield) ativado para esse firewall, porque o critério *Network* vem dele. Ele começa ativado em todo firewall e permanece assim até que alguém o desative.

**Console**

- Uma conta que consegue entrar no [Azion Console](https://console.azion.com/).

**CLI**

- Azion CLI instalada e autenticada com um [personal token](/pt-br/documentacao/fundamentos/personal-tokens/).
- O ID do firewall ao qual o seu workload está vinculado.

**API**

- Um [personal token](/pt-br/documentacao/fundamentos/personal-tokens/). Cada requisição deste guia o envia no lugar de `[TOKEN VALUE]`.
- O ID do firewall ao qual o seu workload está vinculado.

---

## Crie a lista de endereços a limitar

Os endereços a limitar ficam em uma lista do tipo `ip_cidr`, exibida como *IP/CIDR* no Azion Console. Os itens dela são endereços e intervalos, como `203.0.113.0/24` e `198.51.100.7`. A regra armazena o ID da lista, não os itens dela. Por isso, um endereço que você adiciona à lista ou remove dela muda quais clientes são limitados, e a regra não precisa de nenhuma edição. Para todos os campos e tipos que uma lista aceita, consulte [Campos da network list](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#campos-da-network-list) e [Tipos de lista](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#tipos-de-lista).

**Console**

Para criar a lista no Azion Console:

1. **Abra a página Network Lists**

   Acesse [Azion Console](https://console.azion.com/) > **Edge Libraries** > **Network Lists**.

2. **Selecione Network List**

3. **Nomeie a lista**

   Na seção **General**, informe um **Name**. Por exemplo: `Rate-limited addresses`.

4. **Selecione o tipo IP/CIDR**

   Na seção **Network List Settings**, selecione *IP/CIDR*. Quando o formulário abre, *ASN* é o tipo selecionado.

5. **Informe os endereços a limitar**

   No campo **List**, informe cada endereço ou intervalo em uma linha própria. Por exemplo: `203.0.113.0/24` e `198.51.100.7`.

6. **Salve a lista**

   Selecione **Save**.

Azion Console confirma com a mensagem `Your network list has been created`. A lista `Rate-limited addresses` então aparece em **Network Lists**.

**CLI**

Para criar a lista pela Azion CLI, escreva-a em um arquivo chamado `network-list.json`:

```json
{"name":"Rate-limited addresses","type":"ip_cidr","items":["203.0.113.0/24","198.51.100.7"],"active":true}
```

Crie a lista a partir desse arquivo:

```bash
azion create network-list --file network-list.json
```

A saída traz o ID da lista:

```text
Created Network List with ID <network-list-id>
```

Guarde esse ID, porque a regra se refere a `Rate-limited addresses` por ele.

**API**

Para criar a lista pela API, envie-a em uma requisição `POST` para `/v4/workspace/network_lists`. Coloque o seu personal token no lugar de `[TOKEN VALUE]`:

```bash
curl -X POST https://api.azion.com/v4/workspace/network_lists \
  -H "Authorization: Token [TOKEN VALUE]" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Rate-limited addresses","type":"ip_cidr","items":["203.0.113.0/24","198.51.100.7"]}'
```

A API responde `201`. O `state` igual a `executed` indica que a lista foi armazenada imediatamente:

```json
{
  "state": "executed",
  "data": {
    "id": <network-list-id>,
    "name": "Rate-limited addresses",
    "type": "ip_cidr",
    "items": ["203.0.113.0/24", "198.51.100.7"],
    "last_editor": "<your-email>",
    "last_modified": "2026-01-01T12:00:00.000000Z",
    "created_at": "2026-01-01T12:00:00.000000Z",
    "active": true,
    "version_id": null,
    "version_state": null,
    "is_versioned": false,
    "version": null
  }
}
```

Guarde o valor de `data.id`. A regra o recebe como o argumento do critério dela.

---

## Crie a regra que aplica o rate limit à lista

A regra combina o critério *Network*, com o operador *matches*, ao comportamento *Set Rate Limit*. Apenas um cliente da lista torna esse critério verdadeiro, então apenas esses clientes são limitados. Uma requisição de qualquer outro cliente deixa o critério falso: a regra não executa nada, e o firewall passa para a regra seguinte. O comportamento deste guia permite a cada endereço IP de cliente uma média de `10` requisições por segundo, com um burst de `10`. *Set Rate Limit* é um comportamento do próprio Firewall, e Network Shield acrescenta apenas o critério. Para o que cada campo do comportamento conta, consulte [Set Rate Limit](/pt-br/documentacao/plataforma/firewall/rules-engine/#set-rate-limit).

**Console**

Para criar a regra que aplica o rate limit à lista no Azion Console:

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

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

2. **Selecione a aba Rules Engine**

3. **Selecione Rule**

   Azion Console abre o drawer **Create Rule**.

4. **Nomeie a regra**

   Na seção **General**, informe um **Name**. Por exemplo: `Rate-limit listed addresses`.

5. **Defina o critério Network**

   Na seção **Criteria**, selecione a variável *Network* e o operador *matches*.

   Uma variável que aparece como *Network - required Network Shield* indica que Network Shield está desativado neste firewall. Ative-o em **Main Settings** > **Modules** e salve o firewall, e a variável fica selecionável.

6. **Selecione a sua lista**

   No dropdown **Select a Network**, selecione a lista de endereços a limitar. Por exemplo: `Rate-limited addresses`.

7. **Adicione o comportamento Set Rate Limit**

   Na seção **Behaviors**, selecione *Set Rate Limit*. **Rate Limit Type** começa em *Req/s* e **Limit By** em *Client IP address*. Mantenha os dois valores.

8. **Defina a taxa média**

   Em **Average Rate Limit**, informe `10`.

9. **Defina o tamanho do burst**

   Em **Maximum Burst Size**, informe `10`.

10. **Salve a regra**

    Selecione **Save**.

Azion Console confirma com a mensagem `Rule successfully created`. Na aba **Rules Engine**, a coluna **Status** da regra mostra *Active*.

**CLI**

`azion create firewall-rule` recebe a regra apenas como um arquivo JSON, por meio de `--file`, ao lado de `--firewall-id`. Para criá-la pela Azion CLI, escreva-a em um arquivo chamado `rule.json`. Coloque o ID da sua lista no lugar de `<network-list-id>`, como um número sem aspas:

```json
{
  "name": "Rate-limit listed addresses",
  "active": true,
  "criteria": [
    [
      { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> }
    ]
  ],
  "behaviors": [
    {
      "type": "set_rate_limit",
      "attributes": {
        "type": "second",
        "limit_by": "client_ip",
        "average_rate_limit": 10,
        "maximum_burst_size": 10
      }
    }
  ]
}
```

Crie a regra a partir desse arquivo no firewall vinculado ao seu workload. Coloque o ID desse firewall no lugar de `<firewall-id>`:

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

A saída traz o ID da regra:

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

A regra fica ativa no firewall e limita os clientes de `Rate-limited addresses` assim que chega ao tráfego.

**API**

Para criar a regra de rate limit pela API, envie uma requisição `POST` para `/v4/workspace/firewalls/{firewall_id}/request_rules`. Escreva o ID do firewall vinculado ao seu workload no lugar de `<firewall-id>`. Coloque o `data.id` da resposta da lista no lugar de `<network-list-id>`, como um número sem aspas:

```bash
curl -X POST https://api.azion.com/v4/workspace/firewalls/<firewall-id>/request_rules \
  -H "Authorization: Token [TOKEN VALUE]" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Rate-limit listed addresses",
  "active": true,
  "criteria": [
    [
      { "variable": "${network}", "conditional": "if", "operator": "is_in_list", "argument": <network-list-id> }
    ]
  ],
  "behaviors": [
    {
      "type": "set_rate_limit",
      "attributes": {
        "type": "second",
        "limit_by": "client_ip",
        "average_rate_limit": 10,
        "maximum_burst_size": 10
      }
    }
  ]
}'
```

A API responde `202`, com um `state` igual a `pending` e o `id` da regra que ela criou.

> **nota**
>
> No corpo JSON da CLI e da API, `${network}` nomeia o critério *Network*, e `is_in_list` o operador *matches* dele. Os `attributes` de `set_rate_limit` definem `type` como `second`, que é *Req/s* no Azion Console, e `limit_by` como `client_ip`, que é *Client IP address*. Tanto `average_rate_limit` quanto `maximum_burst_size` valem `10`. Um ID de lista enviado como string, como `"<network-list-id>"` entre aspas, é recusado com `400` e `25042 Invalid Operator Argument Type`. Um firewall com Network Shield desativado recusa a regra com `25047 Missing Required Modules`, por causa do critério *Network* dela: *Set Rate Limit* sozinho não precisa de Network Shield. Para os operadores do critério, consulte [O critério Network](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/#o-criterio-network).

---

## Confirme que o rate limit se aplica aos clientes listados

Uma regra que você adiciona pode levar de 6 minutos e 29 segundos a 9 minutos e 18 segundos para chegar ao tráfego em toda a infraestrutura distribuída da Azion. Até lá, a regra não limita nenhum cliente. Envie as requisições de novo até que respondam como esperado.

*Set Rate Limit* não recusa imediatamente uma requisição que excede a taxa. Por exemplo, considere uma regra com uma taxa de uma requisição por segundo e um burst de `1`. Requisições que correspondem a ela uma após a outra ficam retidas por cerca de um segundo cada e depois são servidas. Apenas requisições simultâneas além do burst recebem `429`. Por isso, uma verificação que envia uma requisição por vez pode não receber nenhum `429`. Para saber como o burst coloca as requisições em fila, consulte [Rate limits](/pt-br/documentacao/plataforma/firewall/como-funciona/#rate-limits).

Uma requisição recusada de um cliente listado recebe `HTTP 429` e a página de erro padrão da Azion, encabeçada por **Too Many Requests**. Nenhum header de rate limit volta, então o cliente não recebe nenhum sinal de quando tentar de novo. A resposta tem esta forma:

```text
HTTP/2 429
server: nginx
content-type: text/html; charset=utf-8
x-content-type-options: nosniff
x-azion-request-id: <request-id>
x-azion-edge-location: <edge-location>

<title>Azion - Default error page</title> ... Too Many Requests ... Status Code 429
```

A regra limita os clientes que a lista contém no momento em que uma requisição chega. Uma mudança nos itens da lista chega ao tráfego entre 46 segundos e cerca de 100 segundos, antes de uma regra que você adiciona. Até ela se estabilizar, as respostas podem alternar entre os itens antigos e os atualizados. Repita uma requisição até que as respostas concordem.

---

## Próximos passos

- [Bloqueie endereços até uma data](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/bloqueio-temporario.md): Dê uma data de expiração a um endereço de uma lista e remova-o com uma gravação quando a data passar.
- [Proteja um caminho com uma network list](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/proteger-um-caminho.md): Encadeie um critério Request Uri no mesmo bloco, para que uma regra de lista se aplique a apenas um caminho.
- [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists.md): Cada tipo de lista, cada formato de item e todo erro que uma lista ou um critério Network retorna.
- [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona.md#network-shield): A seção Network Shield explica como uma lista corresponde ao endereço de um cliente e por que uma mudança de lista chega ao tráfego antes de uma regra.
- [Boas práticas de Firewall](/pt-br/documentacao/plataforma/firewall/boas-praticas.md#mantenha-o-burst-de-um-rate-limit-em-ate-dez-vezes-a-taxa-media): Dimensione o burst de um rate limit em relação à taxa média dele antes que a regra chegue ao tráfego.
- [Guias e tutoriais de Firewall](/pt-br/documentacao/plataforma/firewall/guias.md): Todos os guias de um firewall, entre eles as outras configurações de network list.
