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 mais baixo ou mais alto.
Por fim, depois de criar sua 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.