Aplique um rate limit aos endereços de uma lista
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.
Você pode limitar os clientes de uma network list a uma taxa de requisições pelo Azion Console, pela Azion CLI ou pela API. A regra não define nenhum limite para clientes fora da lista. Uma regra de 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.
Selecione a interface deste guia. Os pré-requisitos e cada tarefa desta página mudam para essa interface.
Pré-requisitos
- Um workload vinculado a um firewall. A regra de rate limit fica nesse 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.
- Uma conta que consegue entrar no Azion Console.
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 e Tipos de lista.
Para criar a lista pela Azion CLI, escreva-a em um arquivo chamado network-list.json:
Crie a lista a partir desse arquivo:
A saída traz o ID da lista:
Guarde esse ID, porque a regra se refere a Rate-limited addresses por ele.
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.
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:
Crie a regra a partir desse arquivo no firewall vinculado ao seu workload. Coloque o ID desse firewall no lugar de <firewall-id>:
A saída traz o ID da regra:
A regra fica ativa no firewall e limita os clientes de Rate-limited addresses assim que chega ao tráfego.
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.
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:
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.