Visão geral da limitação de taxa

O Google Cloud Armor fornece recursos para ajudar a proteger seus aplicativos do Google Cloud contra vários ataques de camada 3 e camada 7. As regras baseadas em taxa ajudam a proteger os aplicativos contra um grande volume de solicitações que sobrecarregam as instâncias e bloqueiam o acesso de usuários legítimos.

A limitação de taxa pode fazer o seguinte:

  • Impedir que um determinado cliente esgote os recursos do aplicativo.
  • Proteja suas instâncias de aplicativos contra picos erráticos e imprevisíveis na taxa de solicitações de clientes.

Além disso, quando um recurso é apresentado com um alto volume de tráfego de um pequeno número de clientes, você pode impedir que outros clientes sejam afetados por grandes picos de tráfego desse pequeno número de clientes, permitindo que você recursos para lidar com o maior número possível de solicitações.

O Google Cloud Armor tem dois tipos de regras com base em taxas:

  1. Limitação: é possível aplicar um limite máximo de solicitações por cliente ou em todos os clientes limitando os clientes individuais a um limite configurado pelo usuário.
  2. Proibição baseada em taxa: é possível classificar solicitações de limite que correspondem a uma regra por cliente e, em seguida, proibir temporariamente esses clientes por um período configurado, se eles excederem um limite configurado pelo usuário.

Visualize os efeitos das regras de limitação de taxa em uma política de segurança usando o modo de visualização e examinando os registros de solicitação.

Como identificar clientes para limitação de taxa

O Google Cloud Armor identifica clientes individuais para a limitação de taxa usando os seguintes tipos de chave para agregar solicitações e aplicar limites de taxa:

  • ALL: é a chave para todos os clientes cujas solicitações satisfazem a condição de correspondência de regra.
  • IP: uma única chave para cada endereço IP de origem do cliente cujas solicitações atendem à condição de correspondência da regra.
  • HTTP-HEADER: uma única chave para cada valor de cabeçalho HTTP exclusivo com nome configurado.
  • XFF-IP: uma única chave para cada endereço IP de origem do cliente, conforme especificado no X-Forwarded-Header.

Como limitar o tráfego

A ação throttle em uma regra permite que você aplique um limite de solicitação por cliente para proteger serviços de back-end. Essa regra impõe o limite para limitar o tráfego de cada cliente que satisfaça as condições de correspondência na regra. O limite é configurado como um número especificado de solicitações em um intervalo de tempo especificado.

Por exemplo, é possível definir o limite de solicitações para 2.000 solicitações em 1.200 segundos (20 minutos). Se um cliente enviar 2.500 solicitações em um período de 1.200 segundos, aproximadamente 20% do tráfego será negado até que o volume de solicitações permitido seja igual ou inferior ao limite configurado.

Defina estes parâmetros para controlar a ação:

  • rate_limit_threshold: o número de solicitações por cliente permitidas dentro de um intervalo de tempo especificado. O valor mínimo é 10, e o máximo é 10.000.
    • interval_sec: o número de segundos no intervalo de tempo. O valor precisa ser 60, 120, 180, 240, 300, 600, 900, 1.200, 1.800, 2.700 ou 3.600 segundos.
  • exceed_action: quando uma solicitação excede a rate_limit_threshold, o Google Cloud Armor nega as solicitações e retorna o código de resposta HTTP especificado. Para regras throttle, recomendamos usar o código de resposta 429 (muitas solicitações).
  • conform_action: é sempre uma ação allow. É a ação a ser tomada quando o número de solicitações está abaixo do rate_limit_threshold.

Quando a taxa de tráfego de um cliente está abaixo ou igual a rate_limit_threshold, as solicitações seguem o conform-action, que é sempre allow. A solicitação é enviada imediatamente para o serviço de back-end. Quando a taxa de tráfego de um cliente excede a rate_limit_threshold especificada, as solicitações acima do limite são bloqueadas para o restante do intervalo limite. O código de erro de negação é definido no parâmetro exceed-action.

Como banir clientes com base em taxas de solicitação

A ação rate_based_ban em uma regra permite impor um limite por cliente para proteger serviços de back-end e proibir temporariamente os clientes que excedem o limite, rejeitando todas as solicitações do cliente por um tempo configurável. período. O limite é configurado como um número especificado de solicitações em um intervalo de tempo especificado. Para banir temporariamente o tráfego que corresponda à condição de correspondência especificada e exceder o limite configurado,

Por exemplo, é possível definir o limite de solicitações para 2.000 solicitações em 1.200 segundos (20 minutos). Se um cliente enviar 2.500 solicitações em qualquer 1.200 segundos, o tráfego desse cliente que exceder o limite de 2.000 solicitações será bloqueado até que os 1.200 segundos completos tenham passado e por um número adicional de segundos definido como período de duração da proibição. Se o período de duração da proibição for definido como 3600, por exemplo, o tráfego do cliente será proibido por 3.600 segundos (uma hora) além do final do intervalo de limite.

Estes parâmetros controlam a ação de uma regra rate_based_ban:

  • rate_limit_threshold: o número de solicitações por cliente permitidas dentro de um intervalo de tempo especificado. O valor mínimo é 10, e o máximo é 10.000.
    • interval_sec: o número de segundos no intervalo de tempo. O valor precisa ser 60, 120, 180, 240, 300, 600, 900, 1.200, 1.800, 2.700 ou 3.600 segundos.
  • exceed_action Esta é sempre uma ação deny. Quando a taxa de tráfego de um cliente excede o rate_limit_threshold especificado, o cliente é banido (todas as solicitações de entrada são negadas) pelo restante do intervalo limite e pelo número de segundos especificados no ban-duration.
  • conform_action: é sempre uma ação allow. É a ação a ser tomada quando o número de solicitações está abaixo do rate_limit_threshold.
  • ban_duration_sec: este é o número adicional de segundos em que um cliente é banido após o término do período interval_sec. O valor precisa ser 60, 120, 180, 240, 300, 600, 900, 1.200, 1.800, 2.700 ou 3.600 segundos.

Quando a taxa de solicitação de um cliente está abaixo do limite de taxa, isso permite imediatamente que a solicitação continue para o serviço de back-end. Quando a taxa de tráfego de um cliente excede a rate_limit_threshold especificada, o cliente é banido (todas as solicitações recebidas são negadas) para o restante do intervalo de limite e pelos próximos ban-duration_sec segundos. independentemente de o limite ser excedido. O código de erro de negação é extraído do exceed- action configurado.

Com essa configuração, é possível banir acidentalmente clientes de boas-vindas que excedem ocasionalmente a taxa de solicitação permitida. Para evitar isso e proibir apenas clientes que excedem com frequência a taxa de solicitação, é possível rastrear o total de solicitações de clientes em relação a uma configuração de limite adicional, preferencialmente mais longa, chamada ban_threshold. Nesse modo, o cliente será banido pelos ban_duration segundos configurados somente se a taxa de solicitação cruzar o ban-threshold configurado. Se a taxa de solicitação não exceder ban-threshold, as solicitações continuarão sendo limitadas para rate_limit_threshold. Para a finalidade de ban_threshold, o total de solicitações do cliente, que consistem em todas as solicitações recebidas antes da limitação, é contado.

Aplicação do limite

Os limites configurados para limitação e restrições baseadas em taxa são aplicados independentemente em cada uma das regiões do Google Cloud em que seus serviços de back-end HTTP(S) são implantados. Por exemplo, se o serviço é implantado em duas regiões, cada uma das duas regiões limita a taxa de cada chave ao limite configurado, de modo que seu serviço de back-end pode experimentar volumes de tráfego agregados entre regiões que são duas vezes o limite configurado. Se o limite configurado for definido como 5.000 solicitações, o serviço de back-end poderá receber 5.000 solicitações de uma região e 5.000 solicitações da segunda região.

No entanto, para o endereço IP do tipo de chave, é razoável presumir que o tráfego do mesmo endereço IP do cliente é direcionado para a região mais próxima da região onde seus back-ends são implantados. Nesse caso, a limitação de taxa pode ser considerada aplicada em um nível de serviço de back-end, independentemente das regiões em que ela é implantada.

É importante observar que os limites de taxa aplicados são aproximados e podem não ser estritamente precisos em comparação com os limites configurados. Além disso, em casos raros, devido ao comportamento de roteamento interno, é possível que a limitação de taxa seja aplicada em mais regiões do que as regiões em que você é implantado, impactando a precisão. Por esses motivos, recomendamos que você use a limitação de taxa apenas para mitigar abusos ou manter a disponibilidade de aplicativos e serviços, não para impor requisitos rígidos de cota ou licenciamento.

Logging

O Cloud Logging registra o nome da política de segurança, a prioridade da regra de limite de correspondência, o ID da regra, a ação associada e outras informações nos registros da solicitação. Para mais informações sobre registros, consulte Como usar o registro de solicitações.

A seguir