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
(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 |
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 seguridadSITE_KEY
: tu clave de reCAPTCHACHALLENGEPAGE
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 seguridadEXPRESSION
: la expresión del lenguaje de reglas personalizadas que coincide con el tráfico en el que quieres aplicar la evaluación de reCAPTCHASRC_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 seguridadEXPRESSION
: la expresión del lenguaje de reglas personalizadas que coincide con el tráfico al que quieres aplicar la evaluación de reCAPTCHASRC_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 reglaSECURITY_POLICY
: el nombre de la política de seguridadEXPRESSION
: la expresión del lenguaje de reglas personalizadas que coincide con el tráfico en el que quieres aplicar la evaluación de reCAPTCHASRC_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 solicitudVALUE_#
: 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
- Consulta la información general sobre el límite de frecuencia.
- Consulta información sobre la gestión de bots.