Configurar la gestión de bots

En esta página se explica cómo configurar reglas de políticas de seguridad de Cloud Armor para la gestión de bots. Antes de configurar la gestión de bots, familiarízate con la información del resumen de la gestión de bots.

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 los permisos compute.securityPolicies.create y compute.securityPolicies.update.

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 (solo gcloud)

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

Usar un desafío manual de reCAPTCHA para distinguir entre clientes humanos y automatizados

Para usar reCAPTCHA con Cloud Armor, debe asociar su clave de sitio de WAF de reCAPTCHA (clave de reCAPTCHA) de tipo CHALLENGEPAGE con una política de seguridad. Para obtener más información sobre las claves de reCAPTCHA, consulta la descripción general de las claves de reCAPTCHA.

Para asociar o desasociar tu propia clave de reCAPTCHA con una política de seguridad, usa el siguiente comando:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key SITE_KEY

Haz los cambios siguientes:

  • SECURITY_POLICY: el nombre de la política de seguridad
  • SITE_KEY: tu clave de reCAPTCHA CHALLENGEPAGE

Asociar una clave de reCAPTCHA

En el siguiente ejemplo se asocia una clave de reCAPTCHA a una política de seguridad. La clave de reCAPTCHA asociada se aplica a todas las reglas que usan la función de verificación manual en la política de seguridad dada.

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key "SITE_KEY"

Desasociar una clave de reCAPTCHA

Para desvincular una clave de reCAPTCHA de una política de seguridad, usa este comando:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key ""

Redirigir el tráfico para la evaluación de reCAPTCHA

Cuando hayas asociado tu clave reCAPTCHA a tu política de seguridad, podrás crear una regla en esa política para redirigir internamente el tráfico para la evaluación de reCAPTCHA. Usa el siguiente formato en gcloud CLI para redirigir el tráfico:

gcloud compute security-policies rules create PRIORITY \
  --security-policy SECURITY_POLICY \
  {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
  --action redirect \
  --redirect-type google-recaptcha

Haz los cambios siguientes:

  • PRIORITY: la prioridad con la que quieres crear la regla.
  • SECURITY_POLICY: el nombre de la política de seguridad
  • EXPRESSION: la expresión del lenguaje de reglas personalizadas que coincide con el tráfico en el que quieres aplicar la evaluación de reCAPTCHA
  • SRC_IP_RANGE: un intervalo de direcciones IP. Úsalo para aplicar la evaluación de reCAPTCHA en todas las solicitudes de este intervalo.

En el siguiente ejemplo se crea una regla que redirige el tráfico que intenta acceder a /login.html para una prueba manual de reCAPTCHA:

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\")" \
    --action redirect \
    --redirect-type google-recaptcha

Aplicar la evaluación sin fricciones de reCAPTCHA

Antes de continuar, consulta la descripción general de la gestión de robots para ver los requisitos previos para usar tokens de acción o de sesión de reCAPTCHA.

Para extraer atributos de un token de acción de reCAPTCHA, puedes usar token.recaptcha_action.ATTRIBUTE. Sustituye ATTRIBUTE por un atributo de token válido en el lenguaje de reglas de Cloud Armor. Del mismo modo, usa token.recaptcha_session.ATTRIBUTE para extraer atributos de un token de sesión de reCAPTCHA. Para obtener más información sobre la sintaxis de los atributos de token de reCAPTCHA disponibles, consulta la referencia del lenguaje de reglas.

Un token de acción puede proceder de una aplicación web, una aplicación iOS o una aplicación Android, mientras que un token de sesión solo puede proceder de una aplicación web. Cada plataforma requiere una clave de reCAPTCHA independiente. Las expresiones token.recaptcha_action.ATTRIBUTE y token.recaptcha_session.ATTRIBUTE se aplican a los tokens de cualquiera de estas plataformas. Para distinguir los tokens de diferentes plataformas y evitar el robo de tokens, te recomendamos que asocies las claves de reCAPTCHA al configurar reglas que usen estas expresiones.

Ejemplos

En el primer ejemplo, se crea una regla que permite el tráfico dirigido a /login.html con un token de acción de reCAPTCHA cuya puntuación no sea inferior a 0.8.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --action allow

El segundo ejemplo es igual que el primero, pero también requiere que el token de acción se emita con una clave de reCAPTCHA de example-site-key-1 o example-site-key-2:

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --recaptcha-action-site-keys "example-site-key-1,example-site-key-2" \
    --action allow

En el tercer ejemplo, se crea una regla que permite el tráfico dirigido a /login.html, con un token de sesión de reCAPTCHA emitido con una clave de reCAPTCHA de example-site-key-3 y con una puntuación no inferior a 0.8.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_session.score >= 0.8" \
    --recaptcha-session-site-keys "example-site-key-3" \
    --action allow

Redirección (respuesta 302)

Para crear una regla que redirija el tráfico a una URL configurada por el usuario, usa el siguiente formato en la CLI de Google Cloud:

gcloud compute security-policies rules create PRIORITY \
    --security-policy SECURITY_POLICY \
    {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
    --action redirect \
    --redirect-type external-302 \
    --redirect-target REDIRECT_URL

Haz los cambios siguientes:

  • PRIORITY: la prioridad con la que quieres crear la regla.
  • SECURITY_POLICY: el nombre de la política de seguridad
  • EXPRESSION: la expresión del lenguaje de reglas personalizadas que coincide con el tráfico al que quieres aplicar la evaluación de reCAPTCHA
  • SRC_IP_RANGE: un intervalo de direcciones IP. Úsalo para aplicar la evaluación de reCAPTCHA en todas las solicitudes de este intervalo.
  • REDIRECT_URL: la URL a la que quiere redirigir el tráfico.

En el siguiente ejemplo, se crea una regla que redirige el tráfico procedente de 10.10.10.0/24 a https://www.example.com.

gcloud compute security-policies rules create 1000 \
   --security-policy SECURITY_POLICY \
   --src-ip-ranges "10.10.10.0/24" \
   --action redirect \
   --redirect-type external-302 \
   --redirect-target "https://www.example.com"

Decorate request

Para crear una regla que permita el tráfico, pero que añada encabezados personalizados y valores estáticos definidos por el usuario antes de enviarlos a los backends protegidos, utiliza 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 allow \
    --request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

Haz los cambios siguientes:

  • PRIORITY: la prioridad con la que quieres crear la regla
  • SECURITY_POLICY: el nombre de la política de seguridad
  • EXPRESSION: la expresión del lenguaje de reglas personalizadas que coincide con el tráfico en el que quieres aplicar la evaluación de reCAPTCHA
  • SRC_IP_RANGE: un intervalo de direcciones IP. Úsalo para aplicar la evaluación de reCAPTCHA en todas las solicitudes de este intervalo.
  • HEADER_#: el nombre del encabezado de solicitud con el que quieres decorar la solicitud
  • VALUE_#: el valor del encabezado de solicitud con el que quieres decorar la solicitud

En el siguiente ejemplo se crea una regla que permite el tráfico dirigido a /login.html, siempre que la solicitud también tenga una puntuación de token de acción de reCAPTCHA inferior a 0.2.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \
    --action allow \
    --request-headers-to-add "reCAPTCHA-Warning=high"

Siguientes pasos