# Limites de Firewall

Um [firewall](/pt-br/documentacao/plataforma/firewall/) guarda [regras](/pt-br/documentacao/plataforma/firewall/rules-engine/) e [instâncias de função](/pt-br/documentacao/plataforma/firewall/functions-instances/). Cada produto habilitado nele acrescenta objetos próprios: [rule sets](/pt-br/documentacao/plataforma/firewall/waf/rule-sets/) e [exceções](/pt-br/documentacao/plataforma/firewall/waf/custom-allowed-rules/) para Web Application Firewall (WAF), [network lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/) para Network Shield e uma instância de função para Bot Manager. Esta página informa o limite que a Azion aplica a cada um desses objetos, a resposta que uma chamada recebe ao ultrapassá-lo e o uso que cada plano de serviço inclui.

Os dois tipos de valor são coisas diferentes. Um limite padrão é verificado em toda chamada, e a chamada falha quando ele é ultrapassado. Uma quantidade incluída é um valor de cobrança, e ultrapassá-la muda o valor cobrado da conta, e não o que a chamada retorna.

---

## Regras e instâncias de função

Um firewall executa as regras no Rules Engine e executa uma função por meio de uma instância de função que uma regra invoca. Os limites desta seção se aplicam às regras e às instâncias de função de todo firewall, quaisquer que sejam os produtos habilitados nele.

### Limites padrão

Cada linha indica o que é limitado, o limite e o que recebe uma chamada que o ultrapassa.

| Escopo                                                                   | Limite                                     | Ao ultrapassar o limite                                                                                                                                                                    |
| ------------------------------------------------------------------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `description` da regra                                                   | Até 1.000 caracteres                       | Azion Console mostra `Description should not exceed 1000 characters`.                                                                                                                      |
| Grupos de critérios por regra                                            | 1 a 5                                      | Azion Console desativa **Add Criteria** ao chegar a 5 grupos.                                                                                                                              |
| Critérios por grupo                                                      | 1 a 10                                     | Azion Console desativa **And** e **Or** ao chegar a 10 critérios em um grupo.                                                                                                              |
| **Average Rate Limit** em um comportamento *Set Rate Limit*              | No mínimo 1                                | Azion Console rejeita um valor menor.                                                                                                                                                      |
| **Maximum Burst Size** em um comportamento *Set Rate Limit*              | No mínimo 1, somente com o tipo *Req/s*    | Azion Console rejeita um valor menor e não envia o campo com o tipo *Req/min*.                                                                                                             |
| `name` da instância de função                                            | Até 100 caracteres                         | `400` e `["Ensure this field has no more than 100 characters."]`                                                                                                                           |
| Payload de argumentos, o objeto JSON que uma instância de função carrega | 100.000 bytes                              | `400` e `["Value size (in bytes) is too big. Maximum size allowed is 100000 bytes."]`                                                                                                      |
| Requisições à Azion API                                                  | 200 por minuto, no escopo `global-default` | Uma resposta carrega `x-ratelimit-limit`, `x-ratelimit-remaining`, `x-ratelimit-reset` e `x-ratelimit-scope`, que informam o saldo restante na janela e o momento em que ela é reiniciada. |

Mais três limites se aplicam: o `name` de uma regra aceita de 1 a 250 caracteres, um log de **Debug Rules** carrega 1,5 kB, e um firewall cobre até 200 domínios.

O limite do payload de argumentos é decimal: 100 KB significa 100.000 bytes, e não 100 KiB. Um payload de 100.000 bytes é aceito, e um payload de 102.400 bytes, que são 100 KiB, é rejeitado. Por isso, dimensione o objeto de argumentos pelo valor decimal. A Azion pode aumentar, mediante solicitação e de acordo com o seu plano, o limite do payload de argumentos e os outros limites padrão de uma função em um firewall. Para solicitar um aumento, entre em contato com o time de [suporte técnico](/pt-br/documentacao/suporte/).

O tamanho é a única propriedade do objeto de argumentos que a API verifica. Toda chave que uma instância envia é armazenada e retornada como foi enviada, qualquer que seja o nome. Por exemplo, um argumento com erro de digitação passa na chamada, e a função nunca o lê.

O número de instâncias de função que um firewall carrega não tem limite. A quantidade que um firewall alcança é uma escolha operacional, e não um valor que a plataforma verifica.

Uma função executada em um firewall compartilha os limites de memória, de variáveis de ambiente, de sub-requisições e de tempo de CPU de toda função. Esses limites e o tamanho do código da função pertencem à função, e não ao firewall. Para os valores, consulte [Limites de Functions](/pt-br/documentacao/plataforma/functions/limites/).

O rate limit é o valor que os cabeçalhos de resposta anunciam. Uma resposta da Azion API carrega `x-ratelimit-limit: 200`, `x-ratelimit-scope: global-default` e um timestamp em `x-ratelimit-reset` cerca de 60 segundos depois da chamada. `x-ratelimit-remaining` fica uma ou duas unidades abaixo do limite e não diminui durante uma rajada de chamadas em um minuto.

Uma chamada que a API aceita não entra em vigor de imediato. Uma regra nova em um firewall que já recebe tráfego chega a ele de 6 min 29 s a 9 min 18 s depois da chamada. Um workload vinculado recentemente a um firewall pode levar vários minutos para aplicar a primeira regra, e nenhuma duração é garantida. Enquanto uma alteração se propaga, requisições sucessivas podem receber alternadamente a resposta anterior e a nova, portanto envie a requisição de novo até que ela responda como esperado. Para saber como uma alteração chega ao tráfego, consulte [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona/).

### Uso incluído por plano

A Azion oferece três planos de serviço: Hobby, Pro e Enterprise. Firewall é cobrado por duas métricas, Requests e Rules, e cada plano inclui uma quantidade de cada uma antes que uma tarifa se aplique.

| Métrica                 | Hobby       | Pro         | Enterprise |
| ----------------------- | ----------- | ----------- | ---------- |
| Requisições do Firewall | 10M por mês | 20M por mês | Custom     |
| Regras por firewall     | 10          | 20          | Custom     |

Firewall mede toda requisição que passa por um firewall, inclusive as requisições que uma regra de Network Shield avalia. O Enterprise carrega uma quantidade personalizada de requisições do Firewall e de regras por firewall. Para solicitar uma quantidade personalizada, entre em contato com o time de [suporte técnico](/pt-br/documentacao/suporte/).

Para a tarifa que se aplica além de uma quantidade incluída, consulte [Preços](/pt-br/documentacao/fundamentos/precos/#firewall).

---

## WAF

WAF limita o nome que um rule set recebe, as condições que uma exceção carrega, o tamanho do corpo da requisição que ele inspeciona e o que uma requisição de listagem retorna. Os limites padrão dele se aplicam em toda chamada, e as quantidades incluídas são valores de cobrança.

### Limites padrão

WAF aplica cada limite desta tabela em todos os planos de serviço. A API responde a uma chamada rejeitada com um `code` numérico, um `title`, um `detail` e um ponteiro `source` que indica o campo que falhou. A coluna Ao ultrapassar o limite traz o status, o código e o título, e o texto que chega com eles.

| Escopo                                           | Limite                                     | Ao ultrapassar o limite                                                                                                                                                                    |
| ------------------------------------------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `name` do rule set                               | Até 250 caracteres                         | `400` `10046 Max Length`, `Ensure this field has no more than 250 characters.`                                                                                                             |
| `name` da exceção                                | Até 255 caracteres                         | `400` `10046 Max Length`, `Ensure this field has no more than 255 characters.`                                                                                                             |
| `name` e `value` da condição de uma exceção      | 1 a 255 caracteres                         | Um valor vazio retorna `400` `10018 Blank Field`, `This field may not be blank.`                                                                                                           |
| Condições por exceção                            | No mínimo 1; mais de uma é aceita          | Um array vazio retorna `400` `10049 Min Length List Field`, `Ensure this field has at least 1 elements.`                                                                                   |
| Registros por resposta de listagem (`page_size`) | 100 no máximo, padrão 10                   | `400` `10097 Invalid Page Size`, `Page size must be between 0 and 100.`                                                                                                                    |
| Requisições à Azion API                          | 200 por minuto, no escopo `global-default` | Uma resposta carrega `x-ratelimit-limit`, `x-ratelimit-remaining`, `x-ratelimit-reset` e `x-ratelimit-scope`, que informam o saldo restante na janela e o momento em que ela é reiniciada. |
| Entradas de `thresholds` em um rule set          | 1 a 8, uma por família de ameaças          | Um `threat` repetido retorna `500` `10067 Internal Server Error`, `A server error occurred.`                                                                                               |
| `rulesets`                                       | `[1]`                                      | `400` `10039 Invalid Choice`, `"<value>" is not a valid choice.`                                                                                                                           |
| `engine_version`                                 | `2021-Q3`                                  | `400` `10039 Invalid Choice`                                                                                                                                                               |
| `engine_settings.type`                           | `score`                                    | `400` `10039 Invalid Choice`                                                                                                                                                               |
| `operator` em uma exceção                        | `contains` ou `regex`, padrão `contains`   | `400` `10039 Invalid Choice`                                                                                                                                                               |
| `mode` em um comportamento `set_waf`             | `logging` ou `blocking`, e obrigatório     | Um valor fora da lista, como `learning`, retorna `400` `10039 Invalid Choice`. Um `mode` ausente retorna `400` `10059 Required Field`, `This field is required.`                           |
| Corpo da requisição que WAF inspeciona           | 131.072 bytes, que são 128 KiB             | `400` e a página de erro padrão da Azion, e não um `413`.                                                                                                                                  |
| Janela de consulta do WAF Tuning                 | 3 dias                                     | Nenhuma interface oferece um intervalo maior.                                                                                                                                              |

WAF analisa o corpo de um `POST` quando o `Content-Type` dele é `application/x-www-form-urlencoded`, `multipart/form-data`, `application/json`, `application/vnd.api+json` ou `application/csp-report`. O limite do corpo conta somente o corpo, sem a linha de requisição e os cabeçalhos.

Com `Content-Type: application/x-www-form-urlencoded` e um corpo sem nenhum padrão de ataque, um corpo de 131.072 bytes retorna `200`, e um corpo de 131.073 bytes retorna `400`. O evento registrado para a requisição rejeitada indica a regra `2` na zona `BODY`, como `wafMatch` `0:2:BODY:-`, com `wafAttackFamily` `$OTHERS`. A regra `2` verifica o tamanho em vez de somar a um score, então o limite vale em qualquer sensibilidade: um corpo de 170 KB também é rejeitado na sensibilidade padrão, `medium`. O `requestLength` desse evento também conta a linha de requisição e os cabeçalhos, por isso mostra um valor maior que o tamanho do corpo: `131148` para um corpo de 131.073 bytes. O mesmo corpo enviado como `application/json` ou `text/plain` é rejeitado nos dois tamanhos, porque as regras `15` e `11` correspondem à requisição antes da verificação de tamanho. Para testar esse limite, envie `application/x-www-form-urlencoded` ou `multipart/form-data`.

O `500` que um `threat` repetido retorna é uma falha de validação, e não um defeito no serviço. Envie cada uma das oito famílias de ameaças no máximo uma vez em `thresholds`.

Para os campos a que esses limites se aplicam, consulte [Rule sets](/pt-br/documentacao/plataforma/firewall/waf/rule-sets/) e [Exceções](/pt-br/documentacao/plataforma/firewall/waf/custom-allowed-rules/).

### Uso incluído por plano

WAF é cobrado por três métricas, Requests, Rule Sets e Exceptions, e cada plano inclui uma quantidade de cada uma antes que uma cobrança se aplique.

As quantidades desta tabela são valores de cobrança, e não limites que a plataforma aplica a uma chamada. Uma requisição de criação além da quantidade incluída de rule sets ou de exceções é aceita, portanto a contagem que uma conta alcança é um custo a acompanhar, e não uma rejeição a tratar.

| Métrica                 | Hobby           | Pro             | Enterprise |
| ----------------------- | --------------- | --------------- | ---------- |
| Requests                | 100.000 por mês | 200.000 por mês | Custom     |
| Rule Sets               | 1               | 2               | Custom     |
| Exceptions por rule set | 10              | 20              | Custom     |

O Enterprise carrega uma quantidade personalizada nas três métricas. Para aumentar uma quantidade incluída em qualquer plano, entre em contato com o time de [suporte técnico](/pt-br/documentacao/suporte/).

Para a tarifa que se aplica além de uma quantidade incluída, consulte [Preços](/pt-br/documentacao/fundamentos/precos/#web-application-firewall).

---

## Network Shield

Network Shield permite que uma regra de firewall compare o endereço do cliente de uma requisição com uma network list, por meio do critério `${network}`. Azion API limita o tamanho de uma network list, os itens e o nome dela, os registros por resposta de listagem e a taxa de chamadas.

Network Shield não tem métrica de cobrança própria. Uma regra que usa o critério `${network}` é uma regra de firewall, portanto conta para as regras por firewall que cada plano inclui, e Firewall mede as requisições que ela avalia. Para as quantidades, consulte [Uso incluído por plano](/pt-br/documentacao/plataforma/firewall/limites/#uso-incluido-por-plano). Para as tarifas, consulte [Preços](/pt-br/documentacao/fundamentos/precos/#network-shield). Para saber quais planos oferecem Network Shield, consulte [Preços da Azion](https://www.azion.com/pt-br/precos/).

### Limites padrão

Azion API aplica cada limite desta tabela por padrão. Uma chamada que ultrapassa um limite de network list é rejeitada com o status `400` e um array `errors`. Cada entrada carrega um `code`, um `title`, um `detail` e um ponteiro `source` que indica o campo que falhou.

| Escopo                                           | Limite                                     | Ao ultrapassar o limite                                                                                                                                                                    |
| ------------------------------------------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Itens por network list                           | Até 20.000 itens                           | `400` `10065 List Field Max Length`, `Ensure this field has no more than 20000 elements.`                                                                                                  |
| Itens por network list, mínimo                   | No mínimo 1 item                           | `400` `10049 Min Length List Field`, `Ensure this field has at least 1 elements.`                                                                                                          |
| Caracteres por item, anotações incluídas         | Até 250 caracteres                         | `400` `10046 Max Length`, `Ensure this field has no more than 250 characters.`                                                                                                             |
| Caracteres no `name` da lista                    | Até 250 caracteres                         | `400` `10046 Max Length`, `Ensure this field has no more than 250 characters.`                                                                                                             |
| Registros por resposta de listagem (`page_size`) | 100 no máximo, padrão 10                   | `400` `10097 Invalid Page Size`, `Page size must be between 0 and 100.`                                                                                                                    |
| Requisições à Azion API                          | 200 por minuto, no escopo `global-default` | Uma resposta carrega `x-ratelimit-limit`, `x-ratelimit-remaining`, `x-ratelimit-reset` e `x-ratelimit-scope`, que informam o saldo restante na janela e o momento em que ela é reiniciada. |

O teto de itens é exato e se aplica igualmente aos itens de uma lista IP/CIDR e de uma lista ASN. Uma chamada de criação com 20.000 itens retorna `201`, e a mesma chamada com 20.001 itens retorna este corpo:

```json
{
  "errors": [
    {
      "code": "10065",
      "title": "List Field Max Length",
      "detail": "Ensure this field has no more than 20000 elements.",
      "status": "400",
      "source": { "pointer": "/data/items" }
    }
  ]
}
```

Os 250 caracteres de um item incluem as anotações dele: a data de expiração `--LT` e o comentário `#` que um item `ip_cidr` pode carregar. Por exemplo, um item `ip_cidr` de exatamente 250 caracteres, um endereço seguido de um comentário `#`, é armazenado sem alteração. Para os formatos de item e as anotações de cada tipo de lista, consulte [Network Lists](/pt-br/documentacao/plataforma/firewall/network-shield/network-lists/).

Quando uma chamada não define `page_size`, o endpoint de listagem retorna 10 registros por página. Um `page_size` de `0` é rejeitado com a mesma mensagem `10097`, embora a mensagem indique 0 como permitido.

O teto de 20.000 itens é um limite padrão, e a Azion pode aumentá-lo mediante solicitação, de acordo com o plano. Para solicitar um aumento, entre em contato com o time de [suporte técnico](/pt-br/documentacao/suporte/).

Uma alteração nos itens de uma lista não entra em vigor de imediato. Ela chega ao tráfego de 46 s a cerca de 100 s depois da chamada e, até se estabilizar, as requisições recebem alternadamente a resposta anterior e a nova.

---

## Bot Manager

Bot Manager é executado em um firewall como uma instância de função, que uma regra com o comportamento *Run Function* invoca. Os limites de instância de função de todo firewall se aplicam a ele, e mais dois limites se aplicam às superfícies em volta dele: o log de report e os datasets do GraphQL.

### Limites padrão

Uma chamada que ultrapassa o limite do `name` da instância de função ou do payload de argumentos retorna `400` com a mensagem da coluna Ao ultrapassar o limite. Os dois limites de superfície restringem o que o campo de log e uma consulta retornam, e nenhuma chamada falha por causa deles.

| Escopo                                         | Limite             | Ao ultrapassar o limite                                                                                                            |
| ---------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| `name` da instância de função                  | Até 100 caracteres | `400` e `["Ensure this field has no more than 100 characters."]`                                                                   |
| Payload de argumentos                          | 100.000 bytes      | `400` e `["Value size (in bytes) is too big. Maximum size allowed is 100000 bytes."]`                                              |
| Campo `request_headers` do log de report       | 10.000 caracteres  | Cada nome e cada valor de cabeçalho descontam do total, e o campo não recebe mais nenhum cabeçalho depois que o total é alcançado. |
| `limit` do GraphQL nos datasets do Bot Manager | `10000` no máximo  | Uma consulta retorna no máximo 10.000 resultados.                                                                                  |

O limite do payload de argumentos é decimal, portanto um payload de 102.400 bytes, que são 100 KiB, é rejeitado. Para os argumentos que o payload guarda e o padrão de cada um, consulte [Argumentos](/pt-br/documentacao/plataforma/firewall/bot-manager/argumentos/). Para o log de report, consulte [Logs](/pt-br/documentacao/plataforma/firewall/bot-manager/logs/). Para a consulta GraphQL, consulte [Consulte dados do Bot Manager com GraphQL](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-dados-bot-manager-com-graphql/).

### Uso incluído por plano

Bot Manager é cobrado por duas métricas, Requests e Profiles. As quantidades desta tabela são valores de cobrança, e não limites aplicados em uma chamada. Ultrapassar uma delas não faz nenhuma requisição falhar, portanto nenhuma mensagem de erro pertence a esta tabela.

| Métrica          | Hobby                  | Pro                    | Enterprise |
| ---------------- | ---------------------- | ---------------------- | ---------- |
| Bot Manager Lite | Incluído               | Incluído               | Custom     |
| Bot Manager      | Não listado            | Não listado            | Custom     |
| Requests         | Cobradas a cada 10.000 | Cobradas a cada 10.000 | Custom     |
| Profiles         | 1                      | 1                      | Custom     |

Nenhum volume incluído de requisições é publicado para Bot Manager em qualquer plano. A tabela traz o incremento em que as requisições são cobradas, que é 10.000. Cada plano carrega um perfil, e um perfil além do primeiro é cobrado.

[Bot Manager Lite](/pt-br/documentacao/plataforma/firewall/bot-manager/bot-manager-lite/) está incluído nos três planos. A edição completa é listada somente no Enterprise, onde cada quantidade é personalizada. Para a tarifa que se aplica a requisições e a perfis, consulte [Preços](/pt-br/documentacao/fundamentos/precos/#bot-manager).

---

## Recursos relacionados

- [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine.md#campos-da-regra): Os campos de regra a que se aplicam os limites de nome, descrição e critérios desta página.
- [Limites de Functions](/pt-br/documentacao/plataforma/functions/limites.md): Os limites de memória, tempo de CPU, sub-requisições, variáveis de ambiente e tamanho do código de toda função.
- [Como Firewall funciona](/pt-br/documentacao/plataforma/firewall/como-funciona.md): Como uma requisição passa pelas regras de um firewall e quanto tempo uma alteração leva para chegar ao tráfego.
- [Solucionar problemas de Firewall](/pt-br/documentacao/plataforma/firewall/solucao-de-problemas.md): O que fazer com uma chamada ou uma requisição que um desses limites rejeitou.
