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, pararate_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 taxaALL
. - Quando você implanta políticas de segurança com a ação
fairshare
, o Cloud Armor ignora o campopreview
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.