Visão geral da limitação de taxa de serviço

As políticas de limitação de taxa de serviço permitem manter a disponibilidade do serviço entre clientes confiáveis que podem consumir uma quantidade excessiva de recursos. As políticas fazem isso priorizando o tráfego essencial do cliente durante sobrecargas de serviço, limitando os clientes que excedem os limites predefinidos.

É possível combinar políticas de limitação de taxa de serviço com outros tipos de limitação de taxa, como políticas de segurança do Cloud Armor que proíbem explicitamente clientes não confiáveis para evitar abusos. Para mais informações sobre políticas de segurança, consulte a Visão geral da política de segurança e a Visão geral da limitação de taxa do Cloud Armor.

Anexe políticas de limitação de taxa de serviço às regras de encaminhamento de balanceadores de carga com suporte ou aos recursos de gateway do Secure Web Proxy. Para mais informações sobre como usar políticas de limitação de taxa de serviço com instâncias do Secure Web Proxy, consulte Configurar políticas de limitação de taxa de serviço.

Destinos com suporte

As políticas de limitação de taxa de serviço estão disponíveis para os seguintes destinos:

  • Balanceadores de carga de aplicativo internos regionais
  • Secure Web Proxy

Ordem de filtragem de solicitações

As políticas de limitação de taxa de serviço são apenas um tipo de filtro aplicado às solicitações. O diagrama a seguir mostra a ordem em que os filtros são aplicados:

Ordem de avaliação para filtragem de solicitações.
Ordem de avaliação para filtragem de solicitações (clique para ampliar).

Regras

Cada política de limitação de taxa de serviço contém uma lista de regras HTTP. Cada regra especifica uma condição de correspondência e um conjunto de ações de limitação de taxa. Quando uma solicitação atende às condições de correspondência da regra, ela é avaliada em relação a um ou mais dos seus buckets de limitação de taxa configurados.

Condições de correspondência

As condições de correspondência e as propriedades delas são as seguintes. Cada propriedade pode corresponder a uma string exata, um prefixo, um sufixo ou uma substring:

  • Source: a origem da solicitação.
    • principal: uma lista de identidades derivadas do certificado do cliente. Uma correspondência ocorre quando qualquer principal corresponde à regra. Para mais informações sobre como usar principais para limitação de taxa de serviço, consulte Usar principais para limitação de taxa de serviço.
  • Destination: o destino da solicitação. Se você especificar várias propriedades, elas serão combinadas com um operador lógico AND.
    • header_set: uma lista de cabeçalhos HTTP. Uma correspondência ocorre quando todos os cabeçalhos no header_set correspondem à regra.
    • hosts: uma lista de hosts HTTP. Uma correspondência ocorre quando a solicitação vai para qualquer um dos hosts especificados na lista.
    • paths: uma lista de caminhos do URL. Uma correspondência ocorre quando a solicitação usa qualquer um dos caminhos especificados na lista.
    • methods: uma lista de métodos HTTP válidos (como GET ou POST). Uma correspondência ocorre quando a solicitação usa qualquer um dos métodos especificados na lista.

As propriedades de origem e destino são combinadas com um operador lógico AND para determinar se uma regra corresponde a uma solicitação. Isso significa que, se você especificar uma origem e um destino, uma solicitação precisará corresponder aos dois para atender às condições de correspondência. Além disso, as regras vazias correspondem a todas as solicitações.

Ordem de avaliação da regra

As regras são avaliadas em ordem, da primeira à última definida na política. A primeira regra que corresponde a uma solicitação aplica as ações de limitação de taxa à solicitação, e nenhuma outra regra é avaliada. Se uma regra tiver várias ações de limitação de taxa e se alguma delas exceder o limite configurado, a solicitação será limitada.

Buckets de limitação de taxa

Você configura um ou mais buckets de limitação de taxa, cada um com uma ou mais chaves de limitação de taxa. Quando uma solicitação corresponde às condições de correspondência de uma regra, ela é avaliada em relação a um ou mais dos seus buckets de limitação de taxa configurados. Em seguida, o bucket aplica a chave de limitação de taxa configurada para identificar clientes individuais e aplica o limite.

Além dos tipos de chave, é possível configurar as seguintes propriedades do bucket:

  • Teste a seco: no modo de teste a seco, a regra é avaliada e as correspondências são rastreadas, mas a ação da regra não é aplicada. Isso permite testar as regras de limitação de taxa sem limitar os clientes ou afetar o tráfego de produção.
  • Substituições do usuário: é possível substituir os limites de solicitação padrão para valores de chave específicos. Por exemplo, se você tiver um bucket com um limite padrão de 100 solicitações por minuto por cliente e esse bucket usar o tipo de chave SOURCE_IP, será possível substituir o limite de um endereço IP específico e impor um limite de 200 solicitações por minuto.

Tipos de chaves

É possível identificar clientes individuais para a limitação de taxa usando os seguintes tipos de chave para agregar solicitações e aplicar limites de taxa:

  • ALL: uma única chave para todas as solicitações que atendem à condição de correspondência da regra.
  • SOURCE_IP: uma chave exclusiva para cada endereço IP do cliente cujas solicitações atendem à condição de correspondência da regra.
  • HTTP_HEADER: uma única chave para cada valor de cabeçalho HTTP exclusivo com nome configurado. O valor da chave é truncado para os primeiros 128 bytes do valor do cabeçalho. O tipo de chave usa ALL como padrão se nenhum cabeçalho estiver presente.
  • HTTP_PATH: o caminho do URL da solicitação HTTP. O valor da chave é truncado nos primeiros 128 bytes.
  • PRINCIPAL: uma string que representa uma identidade, derivada de o certificado do cliente. O único tipo principal com suporte é CLIENT_CERT_COMMON_NAME.

É possível especificar um ou mais tipos de chave em cada regra. Se você especificar vários tipos de chave, a combinação total de chaves para cada cliente será usada como uma chave exclusiva. Por exemplo, é possível usar uma combinação de SOURCE_IP e HTTP_PATH para aplicar limitação de taxa na frequência com que um endereço IP específico pode acessar um endpoint específico.

Usar principais para limitação de taxa de serviço

Para identificar a origem do tráfego com alta granularidade, é possível configurar políticas de limitação de taxa de serviço com base em identidades derivadas de um certificado do cliente. Esse método exige que o mTLS de front-end seja ativado no balanceador de carga e usa o atributo Nome comum do certificado do cliente (CLIENT_CERT_COMMON_NAME) como um seletor principal para identificação.

Se nenhum seletor principal for especificado para identificação, CLIENT_CERT_URI_SAN será usado como o seletor principal padrão. Isso significa que os SANs de URI do certificado do cliente são avaliados ao tomar decisões de limitação de taxa.

Para que a limitação de taxa baseada em principal funcione, as seguintes condições precisam ser atendidas:

  • O mTLS de front-end precisa estar ativado. Se o mTLS de front-end não estiver ativado, o cliente não apresentará um certificado. Como resultado, nenhuma regra baseada em principal na política de limitação de taxa de serviço encontra informações de certificado para avaliar. Por exemplo, uma regra que verifica CLIENT_CERT_URI_SAN mostra um valor vazio.

  • É necessário ter um certificado do cliente válido. Mesmo com o mTLS ativado, um certificado de cliente não será usado para limitação de taxa se a conexão tiver sido estabelecida com um certificado ausente ou inválido. Esse cenário ocorre quando o modo de validação do cliente mTLS é definido como o modo permissivo ALLOW_INVALID_OR_MISSING_CLIENT_CERT. Nesse caso, nenhuma regra baseada em principal na política de limitação de taxa de serviço encontra informações de certificado para avaliar. Por exemplo, uma regra que verifica CLIENT_CERT_URI_SAN mostra um valor vazio.

Impacto dos limites de tamanho do atributo

As decisões de limitação de taxa são sensíveis ao tamanho dos atributos do certificado do cliente. Uma solicitação é rejeitada se um atributo exceder o limite de tamanho e a política estiver configurada para validar esse atributo específico.

Uma rejeição pode ocorrer quando a política valida CLIENT_CERT_COMMON_NAME e o assunto do certificado (que contém o nome comum) excede o limite de tamanho.

A seguir