Configura la administración de bots

Esta página contiene información sobre la configuración de Google Cloud Armor las reglas de la política de seguridad para la administración de bots. Antes de configurar la administración de bots, asegúrate de conocer la información de la Descripción general de la administración de bots.

Antes de comenzar

En las siguientes secciones, se explican todos los roles de Identity and Access Management (IAM) y los permisos necesarios para configurar las políticas de seguridad de Google Cloud Armor. Para de los casos de uso de este documento, solo necesitas compute.securityPolicies.create y compute.securityPolicies.update permisos.

Configura los permisos de IAM para las políticas de seguridad de Google Cloud Armor

Las siguientes operaciones requieren Identity and Access Management (IAM) Rol de 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 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)

Usuarios con el rol de administrador de seguridad (roles/iam.securityAdmin) y el rol Administrador de red de Compute pueden visualizar la seguridad de Google Cloud Armor políticas 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

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

Para usar reCAPTCHA con Google Cloud Armor, debes asociar tu clave de sitio de reCAPTCHA WAF (clave reCAPTCHA) del tipo CHALLENGEPAGE con una política de seguridad de Google Cloud. Para obtener más información sobre las claves de reCAPTCHA, consulta el 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

Reemplaza lo siguiente:

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

Asocia una clave de reCAPTCHA

En el siguiente ejemplo, se asocia una clave de reCAPTCHA con una política de seguridad. El la clave de reCAPTCHA asociada se aplica a todas las reglas que usan el desafío manual en la política de seguridad especificada.

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

Desasocia 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 ""

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

Cuando asocias la clave reCAPTCHA con tu política de seguridad, puedes crea una regla dentro de esa política para redireccionar internamente el tráfico a evaluación de reCAPTCHA. Usa el siguiente formato en el gcloud CLI para redireccionar 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

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad en la que deseas crear la regla
  • SECURITY_POLICY: Es el nombre de la política de seguridad.
  • EXPRESSION: Es la expresión de lenguaje de las reglas personalizadas que coincide con el tráfico al que deseas aplicar la evaluación de reCAPTCHA
  • SRC_IP_RANGE: Es un rango de direcciones IP. Usa esta opción para aplicar Evaluación de reCAPTCHA en todas las solicitudes de este rango.

En el siguiente ejemplo, se crea una regla que redirecciona el tráfico que intenta llegar /login.html para un desafío 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

Aplica la evaluación sin inconvenientes de reCAPTCHA

Antes de continuar, revisa la descripción general de la administración de bots para conocer los requisitos previos del uso de tokens de acción de reCAPTCHA o tokens de sesión.

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

Un token de acción puede originarse en una aplicación web, una aplicación de iOS o una aplicación para Android, mientras que un token de sesión solo puede originarse en una y mantener la integridad de su aplicación. Cada plataforma requiere una clave de reCAPTCHA independiente. Las expresiones token.recaptcha_action.ATTRIBUTE y Se aplican token.recaptcha_session.ATTRIBUTE a los tokens de cualquiera de estas plataformas. Para distinguir tokens de diferentes plataformas para evitar el robo de tokens, te recomendamos que asocies las claves de reCAPTCHA cuando configurar reglas que usan estas expresiones.

Ejemplos

En el primer ejemplo, se crea una regla que permite la segmentación por tráfico /login.html por un token de acción de reCAPTCHA cuya puntuación es no menos de 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 al primero, pero también requiere que que el token de acción se emita con una clave 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 segmentado para /login.html, con un token de sesión de reCAPTCHA emitido con una clave reCAPTCHA de example-site-key-3 y con una puntuación no menor que 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

Redireccionamiento (respuesta 302)

Para crear una regla que redireccione el tráfico a una URL configurada por el usuario, utiliza 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 redirect \
    --redirect-type external-302 \
    --redirect-target REDIRECT_URL

Reemplaza lo siguiente:

  • PRIORITY: Es la prioridad en la que deseas crear la regla
  • SECURITY_POLICY: Es el nombre de la política de seguridad.
  • EXPRESSION: Es la expresión de lenguaje de las reglas personalizadas que coincide con el tráfico en el que deseas aplicar la evaluación de reCAPTCHA
  • SRC_IP_RANGE: Es un rango de direcciones IP. Usa esta opción para aplicar Evaluación de reCAPTCHA en todas las solicitudes de este rango.
  • REDIRECT_URL: La URL a la que deseas redireccionar tráfico

En el siguiente ejemplo, se crea una regla que redirecciona el tráfico proveniente 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"

Decora la solicitud

Crear una regla que permita el tráfico, pero que agregue encabezados personalizados y una definición valores estáticos antes de enviarlos a backends protegidos, usa la siguiente en gcloud CLI:

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,...

Reemplaza lo siguiente:

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

En el siguiente ejemplo, se crea una regla que permite el tráfico segmentado para /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"

¿Qué sigue?