Esta página contém informações sobre a configuração de regras do Google Cloud Armor para aplicar limites de taxa por cliente através da configuração de uma ação de restrição ou proibição baseada na taxa. Antes de configurar a limitação de taxa, certifique-se de que conhece as informações na vista geral da limitação de taxa.
Antes de começar
As secções seguintes explicam todas as funções e autorizações da gestão de identidade e de acesso (IAM) necessárias para configurar as políticas de segurança do Cloud Armor. Para os exemplos de utilização neste documento, só precisa da autorização compute.securityPolicies.create
.
Configure autorizações IAM para políticas de segurança do Cloud Armor
As seguintes operações requerem a função de administrador de segurança do Compute do Identity and Access Management (IAM)
(roles/compute.securityAdmin
):
- Configurar, modificar, atualizar e eliminar uma política de segurança do Cloud Armor
- Usando os seguintes métodos da API:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Um utilizador com a função de administrador de rede de computação (roles/compute.networkAdmin
)
pode realizar as seguintes operações:
- Definir uma política de segurança do Cloud Armor para um serviço de back-end
- Usando os seguintes métodos da API:
BackendServices setSecurityPolicy
BackendServices list
(apenasgcloud
)
Os utilizadores com a função de administrador de segurança (roles/iam.securityAdmin
)
e a função de administrador de rede de computação podem ver as políticas de segurança do Cloud Armor
através dos métodos da API SecurityPolicies
get
, list
e
getRule
.
Configure autorizações da IAM para funções personalizadas
A tabela seguinte apresenta as autorizações base das funções da IAM e os respetivos métodos da API associados.
Autorização de IAM | Métodos da API |
---|---|
compute.securityPolicies.create |
SecurityPolicies insert |
compute.securityPolicies.delete |
SecurityPolicies delete |
compute.securityPolicies.get |
SecurityPolicies get SecurityPolicies getRule |
compute.securityPolicies.list |
SecurityPolicies list |
compute.securityPolicies.use |
BackendServices setSecurityPolicy |
compute.securityPolicies.update |
SecurityPolicies patch SecurityPolicies addRule SecurityPolicies patchRule SecurityPolicies removeRule |
compute.backendServices.setSecurityPolicy |
BackendServices setSecurityPolicy |
Regras para a limitação baseada na taxa
As regras para a limitação baseada na taxa têm o seguinte formato na CLI do Google Cloud:
gcloud compute security-policies rules create PRIORITY \ --security-policy=SECURITY_POLICY \ {--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE} \ --action "throttle" \ --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \ --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \ --conform-action=[allow] \ --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect] \ --exceed-redirect-type=[google-recaptcha|external-302] \ --exceed-redirect-target=REDIRECT_URL \ --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE | HTTP-PATH | SNI | REGION-CODE] \ --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Limitação de velocidade em chaves únicas
Por exemplo, o seguinte comando da CLI gcloud cria uma regra com a prioridade throttle
com um limite de taxa de 100 pedidos a cada 60 segundos para cada endereço IP em 1.2.3.0/24
.105
Os pedidos que excedem o limite de limitação
devolvem um código de erro 429
.
gcloud compute security-policies rules create 105 \ --security-policy SECURITY_POLICY \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=100 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key=IP
Por exemplo, o seguinte comando da CLI gcloud cria uma throttle
regra com a prioridade 110
com um limite de taxa de 10 pedidos a cada 60 segundos para cada valor único do cabeçalho HTTP User-Agent
em todos os pedidos provenientes de endereços IP em 1.2.3.0/24
. Os pedidos que excedem o limite de restrição devolvem um código de erro 429
.
gcloud compute security-policies rules create 110 \ --security-policy SECURITY_POLICY \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=10 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key=HTTP-HEADER \ --enforce-on-key-name='User-Agent'
Por último, pode emitir proibições baseadas em taxas para utilizadores que tenham um cookie de isenção do reCAPTCHA válido. Por exemplo, o seguinte comando da CLI gcloud cria uma regra throttle
com prioridade 115
com um limite de taxa de 20 pedidos por 5 minutos para cada cookie de isenção do reCAPTCHA exclusivo em todos os pedidos que tenham um cookie de isenção do reCAPTCHA válido. Os pedidos que excedam o limite de restrição são redirecionados para avaliação do reCAPTCHA. Para mais informações acerca dos cookies de isenção e da avaliação do reCAPTCHA, consulte a vista geral da gestão de bots.
gcloud compute security-policies rules create 115 \ --security-policy SECURITY_POLICY \ --expression="token.recaptcha_exemption.valid" \ --action=throttle \ --rate-limit-threshold-count=20 \ --rate-limit-threshold-interval-sec=300 \ --conform-action=allow \ --exceed-action=redirect \ --exceed-redirect-type=google-recaptcha \ --enforce-on-key=HTTP-COOKIE \ --enforce-on-key-name="recaptcha-ca-e"
Limitação de velocidade com base nas impressões digitais JA4 e JA3
Pode usar as impressões digitais JA4 e JA3 como chaves de limitação de taxa. O exemplo
seguinte cria uma regra throttle
com prioridade 1000
com um limite de taxa de 20
pedidos por 5 minutos que correspondem a pedidos com o caminho /login
, com base
na impressão digital do JA4 do cliente. Os pedidos que excedam o limite de restrição são recusados.
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches('/login')" \ --action throttle \ --rate-limit-threshold-count 20 \ --rate-limit-threshold-interval-sec 300 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key-configs tls-ja4-fingerprint
Limitação da taxa com base no endereço IP do utilizador
Quando recebe pedidos através de um proxy a montante, pode aplicar
limites de taxa com base no endereço IP do cliente de origem. O exemplo seguinte cria uma regra throttle
na prioridade 1000
com um limite de taxa de 20 pedidos por 5 minutos que correspondem a pedidos com o caminho /login
, com base no endereço IP do cliente de origem. Os pedidos que excedam o limite de restrição são recusados.
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY --expression "request.path.matches('/login')" --action throttle --rate-limit-threshold-count 20 --rate-limit-threshold-interval-sec 300 --conform-action allow --exceed-action deny-429 --enforce-on-key-configs user-ip
Para mais informações sobre o suporte de endereços IP de utilizadores, consulte a referência da linguagem de regras.
Limitação de taxa com base em várias chaves
Também pode limitar o tráfego com base em várias chaves de limitação de taxa através da flag enforce-on-key-configs
. Esta sinalização substitui a sinalização enforce-on-key
e a sinalização enforce-on-key-name
. A flag enforce-on-key-configs
requer uma lista separada por vírgulas de pares KEY=NAME
, embora não precise de fornecer um nome para algumas chaves.
O exemplo seguinte cria uma regra throttle
para a política POLICY_NAME com a prioridade 105
com um limite de taxa de 100 pedidos a cada 60 segundos para cada combinação de HTTP-PATH
e site_id
em todos os pedidos provenientes de endereços IP em 1.2.3.0/24
. Os pedidos que excedem o limite de restrição
devolvem um código de erro 429
.
gcloud compute security-policies rules create 105 \ --security-policy=POLICY_NAME \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=100 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key-configs="HTTP-PATH,HTTP-COOKIE=site_id"
Regras para banimentos com base na taxa
As regras para proibições baseadas em taxas têm o seguinte formato na CLI gcloud:
gcloud compute security-policies rules create PRIORITY \ --security-policy=SECURITY_POLICY \ {--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE} \ --action "rate-based-ban" \ --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \ --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \ --ban-duration-sec=BAN_DURATION_SEC \ --ban-threshold-count=BAN_THRESHOLD_COUNT \ --ban-threshold-interval-sec=BAN_THRESHOLD_INTERVAL_SEC \ --conform-action=[allow] \ --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect] \ --exceed-redirect-type=[google-recaptcha|external-302] \ --exceed-redirect-target=REDIRECT_URL \ --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE | HTTP-PATH | SNI | REGION-CODE] \ --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Por exemplo, o seguinte comando da CLI gcloud cria uma regra de proibição baseada na taxa na prioridade 100
para cada endereço IP cujos pedidos correspondam a um cabeçalho fish
com o valor tuna
e proíbe-o durante 300 segundos quando a respetiva taxa exceder um limite de 50 pedidos por cada 120 segundos. As solicitações banidas devolvem um código de erro de 404
.
gcloud compute security-policies rules create 100 \ --security-policy=sec-policy \ --expression="request.headers['fish'] == 'tuna'" \ --action=rate-based-ban \ --rate-limit-threshold-count=50 \ --rate-limit-threshold-interval-sec=120 \ --ban-duration-sec=300 \ --conform-action=allow \ --exceed-action=deny-404 \ --enforce-on-key=IP
Por exemplo, o seguinte comando da CLI gcloud cria uma regra de proibição baseada na taxa de pedidos com a prioridade 101
para limitar todos os pedidos cujo código de região corresponda a US
a 10 pedidos por 60 segundos. A regra também proíbe pedidos da região US
durante 300 segundos quando a respetiva taxa excede um limite de 1000 pedidos por 600 segundos.
Os pedidos proibidos devolvem um código de erro de 403
.
gcloud compute security-policies rules create 101 \ --security-policy sec-policy \ --expression "origin.region_code == 'US'" \ --action rate-based-ban \ --rate-limit-threshold-count 10 \ --rate-limit-threshold-interval-sec 60 \ --ban-duration-sec 300 \ --ban-threshold-count 1000 \ --ban-threshold-interval-sec 600 \ --conform-action allow \ --exceed-action deny-403 \ --enforce-on-key ALL
Por exemplo, o seguinte comando da CLI gcloud cria uma regra de proibição baseada na taxa de pedidos com a prioridade 102
para limitar todos os pedidos de qualquer intervalo de endereços IP de origem a 20 pedidos por 60 segundos. A regra também proíbe pedidos de qualquer intervalo de endereços IP de origem durante 600 segundos quando a taxa de pedidos excede um limite de 500 pedidos por 400 segundos. Os pedidos proibidos devolvem um código de erro de 429
.
gcloud compute security-policies rules create 102 \ --security-policy sec-policy \ --src-ip-ranges="*" \ --action rate-based-ban \ --rate-limit-threshold-count 20 \ --rate-limit-threshold-interval-sec 60 \ --ban-duration-sec 600 \ --ban-threshold-count 500 \ --ban-threshold-interval-sec 400 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key ALL
Altere uma regra de limitação para uma regra de proibição baseada na taxa
Pode usar o seguinte comando para alterar a ação de uma regra existente de uma ação de limitação para uma ação de proibição baseada na taxa.
gcloud compute security-policies rules update 105 \ --action=rate-based-ban \ --security-policy=sec-policy \ --ban-duration-sec=600
Não pode alterar a ação de uma regra existente de uma ação de proibição baseada em taxa para uma ação de restrição.
O que se segue?
- Veja a vista geral da limitação de velocidade.
- Saiba mais sobre a gestão de bots.