Configure a limitação de taxa com o Google Cloud Armor
Este documento descreve como pode aplicar a limitação de taxa de partilha equitativa aos seus clientes do Cloud Service Mesh, o que ajuda a gerir o consumo equitativo dos seus serviços e a impedir que clientes maliciosos ou com comportamento inadequado sobrecarreguem os seus serviços.
O processo de configuração requer que crie uma política de segurança do Cloud Armor e uma política de ponto final. Se não estiver familiarizado com as políticas de segurança do Cloud Armor, recomendamos que leia a vista geral das políticas de segurança.
Como funciona a limitação de taxa
A limitação da taxa restringe o número de pedidos que o seu serviço pode receber de clientes num intervalo de tempo especificado para melhorar a disponibilidade do seu serviço e partilhar equitativamente a capacidade disponível entre os clientes.
O limite, o intervalo e a ação de pedidos que o Cloud Armor aplica ao tráfego de entrada que excede o limite do limite de taxa são configuráveis pelo utilizador. Para a limitação de taxa do Cloud Service Mesh, o Cloud Armor usa o tipo de política de segurança CLOUD_ARMOR_INTERNAL_SERVICE
e as regras da política de segurança usam a ação fairshare
.
Cada política de segurança do Cloud Armor contém uma ou mais regras. Cada regra
consiste numa condição de correspondência e numa ação. Quando um pedido cumpre a condição de correspondência, o Cloud Armor aplica a ação configurada ao pedido.
Quando configura a limitação de taxa, cria uma regra de política de segurança com uma das ações de limitação de taxa mencionadas anteriormente e qualquer condição de correspondência que se ajuste ao seu exemplo de utilização (incluindo a correspondência em todos os pedidos recebidos com a flag --src-ip-ranges "*"
). As regras numa política são avaliadas por ordem de prioridade. A regra com a prioridade numérica mais baixa tem a prioridade lógica mais alta e é avaliada primeiro. O Cloud Armor executa a limitação de taxa do lado do servidor, o que significa que o servidor aplica o limite de taxa em vez do dispositivo cliente.
As ações de limitação de taxa têm campos adicionais que usa para ajustar o limite da taxa. Os seguintes campos são partilhados entre todas as regras de limitação de taxa:
rate_limit_threshold_count
: o número de pedidos por intervalo de tempo configurado pelo utilizador sobre o qual o Cloud Armor tem de aplicar a limitação de taxa.interval_sec
: o intervalo de tempo, em segundos, pararate_limit_threshold_count
.exceed_action
: a ação a realizar em pedidos que excedam o limite de taxa limiar.conform_action
: a ação a realizar em pedidos que não excedam o limite de taxa.
Limitação de velocidade com o Cloud Service Mesh
Esta secção fornece uma descrição geral dos passos que tem de seguir para configurar a limitação de taxa com a Cloud Service Mesh.
Primeiro, crie uma política de ponto final e certifique-se de que EndpointMatcher
seleciona as suas instâncias do Cloud Service Mesh para aplicar limites de taxa ao tráfego de entrada. O EndpointMatcher
usa etiquetas de pontos finais para identificar as instâncias às quais se associa.
Em seguida, crie uma política de segurança do Cloud Armor com o tipo
CLOUD_ARMOR_INTERNAL_SERVICE
. A única ação disponível para este tipo de política de segurança é fairshare
. Nesta política, cria uma regra predefinida com a ação fairshare
para aplicar a limitação de taxa de partilha equitativa a todo o tráfego que não cumpra uma regra de prioridade mais elevada. Pode adicionar novas regras de prioridade mais elevada para aplicar um limite de taxa diferente a diferentes tipos de tráfego. Por exemplo, pode atribuir um limite de taxa inferior ou superior a um intervalo de endereços IP específico.
Por último, depois de concluir a criação da política de segurança com uma ou mais regras de limitação de taxa, anexe-a à política de ponto final. Depois de anexar a política de segurança, o Cloud Armor aplica a limitação de taxa do lado do servidor a todo o tráfego de entrada que corresponda a uma condição de correspondência de uma regra e que se ligue às instâncias da malha de serviços que EndpointMatcher
selecionou.
O Cloud Service Mesh configura um limite de taxa global em todas as instâncias. Isto significa que o volume total de tráfego em todas as instâncias do servidor é agregado para determinar quando aplicar o limite de velocidade. Qualquer cliente que envie pedidos para esse serviço está sujeito ao mesmo limite de aplicação e política. Isto significa que, quando a taxa de tráfego agregada excede o limite, alguns pedidos são ignorados.
Para configurar a limitação de taxa com a malha de serviços na nuvem, consulte o artigo Configure a limitação de taxa do Google Cloud Armor com o Envoy.
Limitações
Quando configura a limitação de velocidade com o Cloud Armor, tenha em atenção as seguintes limitações:
- As quotas do Cloud Armor limitam o número de regras personalizadas que pode criar. Recomendamos que verifique a sua quota antes de criar mais de 20 regras personalizadas.
- Cada recurso de política de ponto final tem de fazer referência a uma política de segurança diferente. Não pode anexar uma política de segurança a uma nova política de pontos finais se já for referenciada por uma política de pontos finais existente.
- As políticas de segurança com a ação
fairshare
estão limitadas à chave de limitação de taxaALL
. - Quando implementa políticas de segurança com a ação
fairshare
, o Cloud Armor ignora o campopreview
durante a aplicação de regras. - Não pode configurar uma política de segurança do Cloud Armor se estiver a usar o encaminhamento de tráfego TCP.
Além disso, as políticas de segurança do Cloud Armor com o tipo CLOUD_ARMOR_INTERNAL_SERVICE
estão limitadas aos seguintes atributos da linguagem de expressão personalizada (CEL):
request.headers
request.method
request.path
request.scheme
request.query
Para mais informações sobre os atributos da CEL, consulte o artigo Configure atributos de linguagem de regras personalizadas.