Esta página contiene información sobre cómo configurar las reglas de la política de seguridad de Google Cloud Armor para la administración de bots. Antes de configurar la administración de bots, asegúrate de estar familiarizado con la información que se encuentra en la descripción general de la administración de bots.
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 los permisos compute.securityPolicies.create
y compute.securityPolicies.update
.
Configura los permisos de IAM para las políticas de seguridad de Google Cloud Armor
Las siguientes operaciones requieren la función de administrador de seguridad de Compute (roles/compute.securityAdmin
) de Identity and Access Management (IAM):
- Configurar, modificar, actualizar y borrar una política de seguridad de Google Cloud Armor
- Con los siguientes métodos de API:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Un usuario con la función 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
(sologcloud
)
Los usuarios con la función de administrador de seguridad (roles/iam.securityAdmin
) y la función de administrador de red de Compute pueden ver las políticas de seguridad de Google Cloud Armor mediante los métodos get
, list
y getRule
de la API de SecurityPolicies
.
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
la clave del sitio de reCAPTCHA WAF (clave reCAPTCHA) del tipo CHALLENGEPAGE
con una
política de seguridad. Para obtener más información sobre las claves reCAPTCHA, consulta la
descripción general de las claves 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 claveCHALLENGEPAGE
de reCAPTCHA.
Asocia una clave de reCAPTCHA
En el siguiente ejemplo, se asocia una clave de reCAPTCHA con una política de seguridad. La clave reCAPTCHA asociada se aplica a todas las reglas que usan la función de verificación manual según la política de seguridad determinada.
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 asociaste la clave reCAPTCHA con la política de seguridad, puedes crear una regla dentro de esa política a fin de redireccionar el tráfico de forma interna para la evaluación de reCAPTCHA. Usa el siguiente formato en la 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 con la que deseas crear la regla.SECURITY_POLICY
: Es el nombre de la política de seguridad.EXPRESSION
: Es la expresión del lenguaje de 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. Úsala para aplicar de manera forzosa la 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 a
/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, consulta la descripción general de la administración de bots para conocer los requisitos previos para usar tokens de acción o tokens de sesión de reCAPTCHA.
Para extraer atributos de un token de acción de reCAPTCHA, puedes usar
token.recaptcha_action.ATTRIBUTE
. Reemplaza 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. Si quieres 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 originarse en una aplicación web, una aplicación para iOS o una aplicación para Android, mientras que un token de sesión solo puede originarse en 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 cuando
configures reglas que usan estas expresiones.
Ejemplos
En el primer ejemplo, se crea una regla que permite el tráfico orientado a
/login.html
con un token de acción de reCAPTCHA cuya puntuación no es
menor que 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
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 orientado a /login.html
, con un token de sesión de reCAPTCHA emitido con una clave reCAPTCHA de
example-site-key-3
y 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)
Si quieres crear una regla para redireccionar el tráfico a una URL configurada por el usuario, usa 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 con la que deseas crear la regla.SECURITY_POLICY
: Es el nombre de la política de seguridad.EXPRESSION
: Es la expresión del lenguaje de 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. Úsala para aplicar de manera forzosa la evaluación de reCAPTCHA en todas las solicitudes de este rango.REDIRECT_URL
: Es la URL a la que deseas redireccionar el 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
Para crear una regla que permita el tráfico, pero que agregue encabezados personalizados y valores estáticos definidos por el usuario antes de enviarlos a backends protegidos, usa el siguiente formato 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
: La prioridad en la que deseas crear la reglaSECURITY_POLICY
: Es el nombre de la política de seguridad.EXPRESSION
: Es la expresión del lenguaje de 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. Úsala para aplicar de manera forzosa la evaluación de reCAPTCHA en todas las solicitudes de este rango.HEADER_#
: Es el nombre del encabezado de la solicitud con el que deseas decorar la solicitud.VALUE_#
: Es el valor del encabezado de la solicitud con el que deseas decorar la solicitud.
En el siguiente ejemplo, se crea una regla que permite dirigir el tráfico a /login.html
,
siempre y cuando la solicitud también tenga una puntuación del 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?
- Consulta la descripción general del límite de frecuencia.
- Obtenga más información sobre la administración de bots.