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, para rate_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 taxa ALL.
  • Quando implementa políticas de segurança com a ação fairshare, o Cloud Armor ignora o campo preview 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.