Configurar a limitação de taxa com o Google Cloud Armor

Este documento descreve como aplicar a limitação de taxa de fairshare aos seus clientes do Cloud Service Mesh, ajudando você a gerenciar o consumo justo dos seus serviços e evitar que clientes maliciosos ou com comportamento inadequado os sobrecarreguem.

O processo de configuração exige que você crie uma política de segurança do Cloud Armor e uma política de endpoint. Se você não estiver familiarizado com as políticas de segurança do Cloud Armor, recomendamos que leia a Visão geral da política de segurança.

Como a limitação de taxa funciona

A limitação de taxa restringe o número de solicitações que seu serviço pode receber de clientes em um intervalo de tempo especificado para melhorar a disponibilidade do serviço e compartilhar a capacidade disponível de maneira justa entre os clientes. O limite, o intervalo e a ação de solicitação que o Cloud Armor aplica ao tráfego de entrada que excede o limite de taxa são configuráveis pelo usuário. 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 de 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 em uma condição de correspondência e uma ação. Quando uma solicitação atende à condição de correspondência, o Cloud Armor aplica a ação configurada a ela. Ao configurar a limitação de taxa, você 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 caso de uso, incluindo a correspondência em todas as solicitações recebidas com a flag --src-ip-ranges "*". As regras em uma política são avaliadas em ordem de prioridade. A regra com a menor prioridade numérica tem a maior prioridade lógica e é avaliada primeiro. O Cloud Armor realiza 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 outros campos que você usa para ajustar o limite de taxa. Os seguintes campos são compartilhados entre todas as regras de limitação de taxa:

  • rate_limit_threshold_count: o número de solicitações por intervalo de tempo configurado pelo usuário em que o Cloud Armor precisa 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 ser realizada em solicitações que excedem o limite de taxa.
  • conform_action: a ação a ser realizada em solicitações que não excedem o limite de taxa.

Limitação de taxa com o Cloud Service Mesh

Nesta seção, descrevemos as etapas gerais necessárias para configurar a limitação de taxa com o Cloud Service Mesh.

Primeiro, crie uma política de endpoint e verifique se o EndpointMatcher seleciona suas instâncias do Cloud Service Mesh para aplicar limites de taxa no tráfego de entrada. O EndpointMatcher usa rótulos de endpoint para identificar as instâncias a que ele se conecta.

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 esse tipo de política de segurança é fairshare. Nessa política, você cria uma regra padrão com a ação fairshare para aplicar a limitação de taxa de fairshare a todo o tráfego que não atende a uma regra de prioridade mais alta. É possível adicionar regras novas de prioridade mais alta para aplicar um limite de taxa diferente a diferentes tipos de tráfego. Por exemplo, é possível atribuir a um intervalo de endereços IP específico um limite de taxa menor ou maior.

Por fim, depois de criar a política de segurança com uma ou mais regras de limitação de taxa, anexe-a à política de endpoint. 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 corresponde a uma condição de correspondência de uma regra e que se conecta às instâncias da malha de serviço selecionadas pelo EndpointMatcher.

O Cloud Service Mesh configura um limite de taxa global em todas as instâncias. Isso significa que o volume total de tráfego em todas as instâncias de servidor é agregado para determinar quando aplicar o limite de taxa. Qualquer cliente que envie solicitações para esse serviço está sujeito ao mesmo limite de aplicação e política. Isso significa que, quando a taxa de tráfego agregada excede o limite, algumas solicitações são descartadas.

Para configurar a limitação de taxa com o Cloud Service Mesh, consulte Configurar a limitação de taxa do Google Cloud Armor com o Envoy.

Limitações

Ao configurar a limitação de taxa com o Cloud Armor, considere as seguintes limitações:

  • As cotas do Cloud Armor limitam o número de regras personalizadas que podem ser criadas. Recomendamos que você verifique sua cota antes de criar mais de 20 regras personalizadas.
  • Cada recurso de política de endpoint precisa referenciar uma política de segurança diferente. Não é possível anexar uma política de segurança a uma nova política de endpoint se ela já estiver referenciada por uma política de endpoint.
  • As políticas de segurança com a ação fairshare são limitadas à chave de limitação de taxa ALL.
  • Quando você implanta políticas de segurança com a ação fairshare, o Cloud Armor ignora o campo preview durante a aplicação da regra.
  • Não é possível configurar uma política de segurança do Cloud Armor se você estiver usando o roteamento de tráfego TCP.

Além disso, as políticas de segurança do Cloud Armor com o tipo CLOUD_ARMOR_INTERNAL_SERVICE são limitadas aos seguintes atributos da Common Expression Language (CEL):

  • request.headers
  • request.method
  • request.path
  • request.scheme
  • request.query

Para mais informações sobre atributos de CEL, consulte Configurar atributos de linguagem de regras personalizadas.