Configura el límite de frecuencia

Esta página contiene información sobre la configuración de reglas de Google Cloud Armor para aplicar límites de frecuencia por cliente mediante la configuración de una restricción basada en el límite o la tarifa acción. Antes de configurar el límite de frecuencia, asegúrate de conocer la información que se incluye en la descripción general del límite de frecuencia.

Antes de comenzar

En las siguientes secciones, se explican todos los roles y 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 administración de identidades y accesos (IAM) Administrador de seguridad de Compute (roles/compute.securityAdmin):

  • Configura, modifica, actualiza y borra Google Cloud Armor política de seguridad
  • 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 (solo gcloud)

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 con 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 la tarifa tienen el siguiente formato en el 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 de claves únicas

Por ejemplo, el siguiente comando de la CLI de gcloud crea una regla throttle con una prioridad de 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 excedan el límite de regulació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 un throttle con prioridad de 110, con un límite de frecuencia de 10 solicitudes cada 60 segundos para cada una El valor único del encabezado HTTP User-Agent en todas las solicitudes provenientes de la IP. 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 emitir bloqueos basados en tarifas para los usuarios que tengan un reCAPTCHA válido. cookie de exención. Por ejemplo, el siguiente comando de gcloud CLI Crea una regla throttle con una prioridad de 115 y 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 superen el límite de regulación se redireccionan a la evaluación de 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 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, Crea una regla throttle con una prioridad de 1000 y un límite de frecuencia de 20. solicitudes cada 5 minutos que coincidan con las solicitudes que tengan la ruta /login, según en la huella digital JA3 del cliente. 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 tls-ja3-fingerprint

Limitación de frecuencia según la dirección IP del usuario

Cuando recibes solicitudes que provienen de un proxy upstream, puedes aplicar límite de frecuencia según la dirección IP del cliente de origen. En el siguiente ejemplo, se crea una regla throttle con una prioridad de 1000 con un límite de frecuencia de 20 solicitudes cada 5 minutos que coincide con las solicitudes con la ruta de acceso /login, según la dirección IP del cliente de origen. Solicitudes que superan la limitación límite no permitido.

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 los usuarios, consulta la referencia del lenguaje de reglas.

Limitación de frecuencia basada en varias claves

También puedes limitar el tráfico en función de varias claves de límite de frecuencia con el enforce-on-key-configs. Esta marca reemplaza a la marca enforce-on-key y la marca enforce-on-key-name. La marca enforce-on-key-configs requiere un lista separada por comas de pares KEY=NAME; aunque no es necesario que proporciones nombre de 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 una 60 segundos para cada combinación de HTTP-PATH y site_id en todas las solicitudes provenientes de direcciones IP en 1.2.3.0/24. Las solicitudes que excedan el límite de regulación 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 un modelo de regla de bloqueo con prioridad 100 para cada dirección IP cuyas solicitudes coincidan con un encabezado fish con el valor tuna y bloquearlo durante 300 segundos cuando su tarifa supere un con un límite de 50 solicitudes cada 120 segundos. Las solicitudes bloqueadas muestran un código de error 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 ejemplo, el siguiente comando de gcloud CLI crea un modelo de regla de bloqueo 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 prohíbe las solicitudes de la región US durante 300 segundos cuando su tasa exceda 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 un modelo de regla de bloqueo con prioridad 102 para limitar todas las solicitudes de cualquier dirección IP de origen a 20 solicitudes cada 60 segundos. La regla también prohíbe las solicitudes de cualquier fuente un rango de direcciones IP de 600 segundos cuando la tasa de solicitudes excede el límite 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

Cambia una regla de limitación a una de bloqueo basada en tarifas

Puedes usar el siguiente comando para cambiar la acción de una regla existente de una acción de limitación a una acción 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 existente de una acción de prohibición basada en la tarifa a una acción de limitación.

¿Qué sigue?