Esta página contiene información sobre cómo configurar las reglas de Google Cloud Armor para aplicar límites de frecuencia por cliente a través de la configuración de una acción de restricción o bloqueo basada en la frecuencia. Antes de configurar el límite de frecuencia, asegúrate de estar familiarizado con la información en la descripción general del límite de frecuencia.
Antes de comenzar
En las siguientes secciones, se explican todas las funciones y los permisos de Identity and Access Management (IAM) necesarios para configurar las políticas de seguridad de Google Cloud Armor. Para
los casos de uso de este documento, solo necesitas el
permiso compute.securityPolicies.create
.
Configura los permisos de IAM para las políticas de seguridad de Google Cloud Armor
Las siguientes operaciones requieren la función de administrador de seguridad de Compute (roles/compute.securityAdmin
) de Identity and Access Management (IAM):
- Configurar, modificar, actualizar y borrar una política de seguridad de Google Cloud Armor
- Con los siguientes métodos de API:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Un usuario con el rol de administrador de red de Compute (roles/compute.networkAdmin
) puede realizar las siguientes operaciones:
- Establecer una política de seguridad de Google Cloud Armor para un servicio de backend
- Con los siguientes métodos de API:
BackendServices setSecurityPolicy
BackendServices list
(sologcloud
)
Los usuarios con el rol de administrador de seguridad (roles/iam.securityAdmin
) y el rol de administrador de red de Compute pueden ver las políticas de seguridad de Google Cloud Armor mediante los métodos de la API de SecurityPolicies
get
, list
y getRule
.
Configura permisos de IAM para funciones personalizadas
En la siguiente tabla, se enumeran los permisos básicos de las funciones de IAM y sus métodos de API asociados.
Permiso de IAM | Métodos de la 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 |
Reglas de regulación basada en frecuencias
Las reglas para la limitación basada en frecuencias tienen el siguiente formato en Google Cloud CLI:
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]
Límite de frecuencia en claves únicas
Por ejemplo, el siguiente comando de gcloud CLI crea una regla throttle
con prioridad 105
con un límite de frecuencia de 100 solicitudes cada 60 segundos para cada dirección IP en 1.2.3.0/24
. Las solicitudes que exceden el límite de limitación muestran un código de error 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 ejemplo, el siguiente comando de gcloud CLI crea una regla throttle
con prioridad 110
con un límite de frecuencia de 10 solicitudes cada 60 segundos para cada valor único del encabezado HTTP User-Agent
en todas las solicitudes que provienen de direcciones IP en 1.2.3.0/24
. Las solicitudes que exceden el límite de regulación muestran un código de error 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, puedes generar bloqueos basados en las tarifas para los usuarios que tengan una cookie de exención
válida de reCAPTCHA. Por ejemplo, el siguiente comando de gcloud CLI
crea una regla throttle
con prioridad 115
con un límite de frecuencia de 20 solicitudes
cada 5 minutos para cada cookie única de exención de reCAPTCHA en todas las solicitudes
que tengan una cookie de exención de reCAPTCHA válida. Las solicitudes que exceden el
límite de regulación se redireccionan para la evaluación de reCAPTCHA Enterprise. Para obtener más información sobre las cookies de exención y la evaluación de reCAPTCHA Enterprise, consulta la descripción general de la administración 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"
Límite de frecuencia basado en huellas digitales de JA3
Puedes usar las huellas digitales JA3 como clave de límite de frecuencia. En el siguiente ejemplo, se crea una regla throttle
con prioridad 1000
con un límite de frecuencia de 20 solicitudes por 5 minutos que coincide con las solicitudes con la ruta de acceso /login
, según la huella digital JA3 del cliente. Se rechazan las solicitudes que exceden el límite de regulación.
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-ja3-fingerprint
Límite de frecuencia según la dirección IP del usuario
Cuando recibes solicitudes que provienen de un proxy upstream, puedes aplicar un límite de frecuencia en función de la dirección IP del cliente de origen. En el siguiente ejemplo, se crea una regla throttle
con prioridad 1000
, con un límite de frecuencia de 20 solicitudes por 5 minutos que coincide con las solicitudes con la ruta de acceso /login
, según la dirección IP del cliente de origen. Se rechazan las solicitudes que superan el límite de
regulación.
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 obtener más información sobre la compatibilidad con direcciones IP del usuario, consulta la referencia del lenguaje de reglas.
Límite de frecuencia basado en varias claves
También puedes limitar el tráfico en función de varias claves de límite de frecuencia con la marca enforce-on-key-configs
. Esta marca reemplaza la marca enforce-on-key
y la marca enforce-on-key-name
. La marca enforce-on-key-configs
requiere una lista de pares KEY=NAME
separados por comas. Sin embargo, no es necesario que proporciones un nombre para algunas claves.
En el siguiente ejemplo, se crea una regla throttle
para la política POLICY_NAME con prioridad 105
, con un límite de frecuencia de 100 solicitudes cada 60 segundos para cada combinación de HTTP-PATH
y site_id
en todas las solicitudes que provienen de direcciones IP en 1.2.3.0/24
. Las solicitudes que exceden el límite
muestran un código de error 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"
Reglas de bloqueo basadas en tarifas
Las reglas para las prohibiciones basadas en tasas tienen el siguiente formato en la CLI de 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 ejemplo, el siguiente comando de gcloud CLI crea una regla de bloqueo basada en la frecuencia
con prioridad 100
para cada dirección IP cuyas solicitudes coincidan con un encabezado
fish
con el valor tuna
y lo bloquea durante 300 segundos cuando su frecuencia supera un
límite de 50 solicitudes por cada 120 segundos. Las solicitudes bloqueadas muestran un código de error 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 ejemplo, el siguiente comando de gcloud CLI crea una regla de bloqueo basada en frecuencia
con prioridad 101
para limitar todas las solicitudes cuyo código regional coincida con US
a 10 solicitudes cada 60 segundos. La regla también bloquea las solicitudes de la región US
durante 300 segundos cuando su frecuencia supera un límite de 1,000 solicitudes cada 600 segundos.
Las solicitudes bloqueadas muestran un código de error 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 ejemplo, el siguiente comando de gcloud CLI crea una regla de bloqueo basada en la frecuencia
con prioridad 102
para limitar todas las solicitudes de cualquier rango de direcciones IP de origen
a 20 solicitudes cada 60 segundos. La regla también bloquea las solicitudes de cualquier rango de direcciones IP de origen durante 600 segundos cuando la frecuencia de solicitudes excede un límite de 500 solicitudes cada 400 segundos. Las solicitudes bloqueadas muestran un código de error 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
¿Qué sigue?
- Consulta la descripción general del límite de frecuencia.
- Obtén más información sobre la administración de bots.