En esta página se incluye información sobre cómo configurar reglas de Google Cloud Armor para aplicar límites de frecuencia por cliente configurando una acción de limitación o de prohibición basada en la frecuencia. Antes de configurar la limitación de frecuencia, familiarízate con la información del resumen de la limitación de frecuencia.
Antes de empezar
En las siguientes secciones se explican todos los roles y permisos de Gestión de Identidades y Accesos (IAM) necesarios para configurar las políticas de seguridad de Cloud Armor. Para los casos prácticos de este documento, solo necesitas el permiso compute.securityPolicies.create
.
Configurar permisos de gestión de identidades y accesos para políticas de seguridad de Cloud Armor
Las siguientes operaciones requieren el rol de gestión de identidades y accesos Administrador de seguridad de Compute (roles/compute.securityAdmin
):
- Configurar, modificar, actualizar y eliminar una política de seguridad de Cloud Armor
- Usando los siguientes métodos de la API:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Un usuario con el rol Administrador de red de Compute (roles/compute.networkAdmin
)
puede realizar las siguientes operaciones:
- Configurar una política de seguridad de Cloud Armor para un servicio de backend
- Usando los siguientes métodos de la API:
BackendServices setSecurityPolicy
BackendServices list
(sologcloud
)
Los usuarios con el rol Administrador de seguridad (roles/iam.securityAdmin
)
y el rol Administrador de redes de Compute pueden ver las políticas de seguridad de Cloud Armor mediante los métodos de la API SecurityPolicies
get
, list
y getRule
.
Configurar permisos de gestión de identidades y accesos para roles personalizados
En la siguiente tabla se indican los permisos base de los roles de gestión de identidades y accesos y los métodos de API asociados.
Permiso de gestión de identidades y accesos | 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 limitación basada en la frecuencia
Las reglas de limitación basadas en la frecuencia tienen el siguiente formato en la interfaz de línea de comandos de 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]
Límite de frecuencia en claves individuales
Por ejemplo, el siguiente comando de gcloud CLI crea una regla throttle
con prioridad 105
y un límite de frecuencia de 100 solicitudes cada 60 segundos para
cada dirección IP de 1.2.3.0/24
. Las solicitudes que superen el límite de limitación
devuelven 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 la CLI de gcloud crea una regla throttle
con prioridad 110
y un límite de frecuencia de 10 solicitudes cada 60 segundos para cada valor único del encabezado HTTP User-Agent
en todas las solicitudes procedentes de direcciones IP de 1.2.3.0/24
. Las solicitudes que superen el límite de limitación devolverán 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 emitir prohibiciones basadas en la frecuencia para los usuarios que tengan una cookie de exención de reCAPTCHA válida. Por ejemplo, el siguiente comando de la CLI de gcloud crea una regla throttle
con prioridad 115
y un límite de frecuencia de 20 solicitudes por cada 5 minutos para cada cookie de exención de reCAPTCHA única en todas las solicitudes que tengan una cookie de exención de reCAPTCHA válida. Las solicitudes que superen el límite de
limitación se redirigen para que se evalúen con reCAPTCHA. Para obtener más información sobre las cookies de exención y la evaluación de reCAPTCHA, consulta la descripción general de la gestió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"
Limitación de la frecuencia basada en las huellas digitales JA4 y JA3
Puede usar las huellas digitales JA4 y JA3 como claves de limitación de frecuencia. En el siguiente ejemplo se crea una regla throttle
con prioridad 1000
y un límite de frecuencia de 20 solicitudes por cada 5 minutos que coincida con las solicitudes con la ruta /login
, en función de la huella digital JA4 del cliente. Las solicitudes que superen el límite de limitación se denegará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-ja4-fingerprint
Limitación de frecuencia basada en la dirección IP del usuario
Cuando recibas solicitudes que lleguen a través de un proxy upstream, podrás aplicar límites de frecuencia basados en la dirección IP del cliente de origen. En el siguiente ejemplo se crea una regla throttle
con la prioridad 1000
y un límite de frecuencia de 20 solicitudes por cada 5 minutos que coincida con las solicitudes con la ruta /login
, en función de la dirección IP del cliente de origen. Las solicitudes que superen el límite de limitación se denegará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 de usuario, consulta la referencia del lenguaje de reglas.
Limitación de la frecuencia basada en varias claves
También puede limitar el tráfico en función de varias claves de limitación de frecuencia mediante la marca enforce-on-key-configs
. Esta marca sustituye a las marcas enforce-on-key
y enforce-on-key-name
. La marca enforce-on-key-configs
requiere una lista de pares KEY=NAME
separados por comas, aunque no es necesario proporcionar un nombre para algunas claves.
En el siguiente ejemplo se crea una regla throttle
para la política POLICY_NAME con la prioridad 105
y 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 procedentes de direcciones IP de 1.2.3.0/24
. Las solicitudes que superen el límite de limitación devolverán 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 los bloqueos basados en tarifas
Las reglas de prohibición basadas en la frecuencia 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 la CLI de gcloud crea una regla de prohibición basada en la frecuencia con la prioridad 100
para cada dirección IP cuyas solicitudes coincidan con un encabezado fish
con el valor tuna
y la prohíbe durante 300 segundos cuando su frecuencia supere un límite de 50 solicitudes por cada 120 segundos. Las solicitudes prohibidas devuelven 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 la CLI de gcloud crea una regla de prohibición basada en la frecuencia con la prioridad 101
para limitar todas las solicitudes cuyo código de región coincida con US
a 10 solicitudes por cada 60 segundos. La regla también prohíbe las solicitudes de la región US
durante 300 segundos cuando su frecuencia supera el límite de 1000 solicitudes por 600 segundos.
Las solicitudes prohibidas devuelven el código de error 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 de solicitudes con la prioridad 102
para limitar todas las solicitudes de cualquier intervalo de direcciones IP de origen a 20 solicitudes por cada 60 segundos. La regla también prohíbe las solicitudes de cualquier intervalo de direcciones IP de origen durante 600 segundos cuando la frecuencia de las solicitudes supera el límite de 500 solicitudes por cada 400 segundos. Las solicitudes prohibidas devuelven el 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
Cambiar una regla de limitación a una regla de prohibición basada en la frecuencia
Puedes usar el siguiente comando para cambiar la acción de una regla de limitación a una de prohibición basada en la frecuencia.
gcloud compute security-policies rules update 105 \ --action=rate-based-ban \ --security-policy=sec-policy \ --ban-duration-sec=600
No puedes cambiar la acción de una regla de bloqueo basada en la frecuencia a una acción de limitación.
Siguientes pasos
- Consulta la información general sobre el límite de frecuencia.
- Más información sobre la gestión de bots