Usa estas instrucciones para crear políticas de seguridad de Google Cloud Armor para filtrar el tráfico entrante destinado a balanceadores de cargas HTTP(S) externos globales o balanceadores de cargas HTTP(S) externos globales (clásicos). Para obtener información conceptual sobre las políticas de seguridad, consulta la descripción general de la política de seguridad de Google Cloud Armor.
Para obtener información sobre cómo configurar Google Cloud Armor en Google Kubernetes Engine (GKE), consulta la Política de seguridad de Google Cloud Armor en la sección Configura funciones de Ingress a través de parámetros de BackendConfig.
Antes de comenzar
Antes de configurar las políticas de seguridad, haz lo siguiente:
Asegúrate de estar familiarizado con los conceptos de balanceador de cargas de HTTP(S) externo.
Examina tus servicios de backend existentes para determinar cuáles no tienen una política de seguridad adjunta. Estos servicios de backend y sus backends asociados no están protegidos por Google Cloud Armor. Para agregar la protección que proporciona Google Cloud Armor, usa las instrucciones de este documento a fin de adjuntar una política de seguridad nueva o existente al servicio de backend.
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 las funciones de administrador de seguridad y administrador de red pueden ver las políticas de seguridad de Google Cloud Armor mediante los métodos de API 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 |
Configura políticas de seguridad para balanceadores de cargas de HTTP(S) externos
A continuación, se indican los pasos de alto nivel para configurar las políticas de seguridad de Google Cloud Armor a fin de habilitar reglas que permitan o denieguen el tráfico al balanceador de cargas de HTTP(S) externo global o el balanceador de cargas de HTTP(S) externo global (clásico):
- Crea una política de seguridad de Google Cloud Armor.
- Agrega reglas a la política de seguridad en función de listas de direcciones IP, expresiones personalizadas o conjuntos de expresiones preconfigurados.
- Adjunta la política de seguridad a un servicio de backend del balanceador de cargas HTTP(S) externo global o del balanceador de cargas HTTP(S) externo global (clásico) para el que deseas controlar el acceso.
- Actualiza la política de seguridad según sea necesario.
En el siguiente ejemplo, debes crear dos políticas de seguridad de Google Cloud Armor y aplicarlas a diferentes servicios de backend.
En el ejemplo, estas son las políticas de seguridad de Google Cloud Armor:
mobile-clients-policy
se aplica a usuarios externos de tus servicios degames
.internal-users-policy
se aplica al equipo detest-network
de tu organización.
Aplica mobile-clients-policy
al servicio de games
, cuyo servicio de backend se llama games
, y aplica internal-users-policy
al servicio interno de test
para el equipo de pruebas, cuyo servicio de backend correspondiente se llama test-network
.
Si las instancias de backend para un servicio de backend están en varias regiones, la política de seguridad de Google Cloud Armor asociada con el servicio se aplica a las instancias en todas las regiones. En el ejemplo anterior, la política de seguridad mobile-clients-policy
se aplica a las instancias 1, 2, 3 y 4 en us-central
y a las instancias 5 y 6 en us-east
.
Crea el ejemplo
Usa estas instrucciones para crear la configuración de ejemplo analizada en la sección anterior.
Consola
Configura la política para usuarios externos:
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas, haz clic en Crear política.
En el campo Nombre, ingresa
mobile-clients-policy
.En el campo Descripción, ingresa
Policy for external users
.En Acción de la regla predeterminada, selecciona Rechazar.
En Estado de rechazo, selecciona 404 (No encontrado).
Haga clic en Siguiente paso.
Agrega más reglas:
- Haga clic en Agregar regla.
- En el campo Descripción, ingresa
allow traffic from 192.0.2.0/24
. - En Modo, selecciona Modo básico (solo direcciones IP o rangos de IP).
- En el campo Coincidencia, ingresa
192.0.2.0/24
. - En Acción, selecciona Permitir.
- En el campo Prioridad, ingresa
1000
. - Haz clic en Listo.
- Haga clic en Siguiente paso.
Aplica políticas a los objetivos:
- Haga clic en Agregar destino.
- En la lista Destino, selecciona un objetivo.
- Haz clic en Listo.
- Haga clic en Crear política.
De manera opcional, habilita la protección adaptable:
- Para habilitar la protección adaptable, marca la casilla de verificación Habilitar.
Configura la política para usuarios internos:
- En la página Políticas, haz clic en Crear política.
- En el campo Nombre, ingresa
internal-users-policy
. - En el campo Descripción, ingresa
Policy for internal test users
. - En Acción de la regla predeterminada, selecciona Rechazar.
- En Estado de rechazo, selecciona 502 (puerta de enlace incorrecta).
- Haga clic en Siguiente paso.
Agrega más reglas:
- Haga clic en Agregar regla.
- En el campo Descripción, ingresa
allow traffic from 198.51.100.0/24
. - En Modo, selecciona Modo básico (solo direcciones IP o rangos de IP).
- En el campo Coincidencia, ingresa
198.51.100.0/24
. - En Acción, selecciona Permitir.
- En Solo vista previa, selecciona la casilla de verificación Habilitar.
- En el campo Prioridad, ingresa
1000
. - Haz clic en Listo.
- Haga clic en Siguiente paso.
Aplica políticas a los objetivos:
- Haga clic en Agregar destino.
- En la lista Destino, selecciona un objetivo.
- Haz clic en Listo.
- Haz clic en Crear política.
gcloud
Crea las políticas de seguridad de Google Cloud Armor:
gcloud compute security-policies create mobile-clients-policy \ --description "policy for external users"
gcloud compute security-policies create internal-users-policy \ --description "policy for internal test users"
Actualiza las reglas predeterminadas de las políticas de seguridad para rechazar el tráfico:
gcloud compute security-policies rules update 2147483647 \ --security-policy mobile-clients-policy \ --action "deny-404"
gcloud compute security-policies rules update 2147483647 \ --security-policy internal-users-policy \ --action "deny-502"
Agrega reglas a las políticas de seguridad:
gcloud compute security-policies rules create 1000 \ --security-policy mobile-clients-policy \ --description "allow traffic from 192.0.2.0/24" \ --src-ip-ranges "192.0.2.0/24" \ --action "allow"
gcloud compute security-policies rules create 1000 \ --security-policy internal-users-policy \ --description "allow traffic from 198.51.100.0/24" \ --src-ip-ranges "198.51.100.0/24" \ --action "allow"
Adjunta las políticas de seguridad a los servicios de backend:
gcloud compute backend-services update games \ --security-policy mobile-clients-policy
gcloud compute backend-services update test-network \ --security-policy internal-users-policy
De manera opcional, habilita la protección adaptable:
gcloud compute security-policies update mobile-clients-policy \ --enable-layer7-ddos-defense
gcloud compute security-policies update internal-users-policy \ --enable-layer7-ddos-defense
Configura, reglas, expresiones y políticas de seguridad
Puedes configurar reglas, expresiones y políticas de seguridad de Google Cloud Armor con la consola de Google Cloud, Google Cloud CLI o la API de REST. Cuando uses la CLI de gcloud para crear políticas de seguridad, usa la marca --type
a fin de especificar si la política de seguridad es de backend o perimetral.
Prueba políticas de seguridad
Recomendamos que implementes todas las reglas nuevas en el modo de vista previa y, luego, examines los registros de solicitud para verificar que las políticas y reglas se comporten como se espera.
Expresiones de muestra
Las siguientes son expresiones de ejemplo. Para obtener más información sobre las expresiones, consulta la referencia del lenguaje de reglas personalizadas de Google Cloud Armor.
Si creas una regla o una expresión que usa códigos de país o región ISO 3166-1 alfa 2, Google Cloud Armor trata cada código de forma independiente. Las reglas y expresiones de Google Cloud Armor usan esos códigos de región de forma explícita para permitir o denegar solicitudes.
La siguiente expresión coincide con las solicitudes de la dirección IP
1.2.3.4
y contiene la stringGodzilla
en el encabezado del usuario-agente:inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')
La siguiente expresión coincide con las solicitudes que tienen una cookie con un valor específico:
has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
La siguiente expresión coincide con las solicitudes de la región
AU
:origin.region_code == 'AU'
La siguiente expresión coincide con las solicitudes de la región
AU
que no están en el rango de IP especificado:origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
La siguiente expresión coincide con las solicitudes con una ruta de acceso de variable numerada a un archivo específico si el URI coincide con una expresión regular:
request.path.matches('/path/[0-9]+/target_file.html')
La siguiente expresión coincide con las solicitudes si el valor decodificado en Base64 del encabezado de
user-id
contiene un valor específico:has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
En la siguiente expresión, se usa un conjunto de expresiones preconfiguradas para establecer coincidencias con ataques de SQLi:
evaluatePreconfiguredExpr('sqli-stable')
Usa el análisis de JSON
Puedes habilitar o inhabilitar el análisis del contenido del cuerpo JSON de las solicitudes POST para cada política de seguridad. Cuando el encabezado Content-Type
se configure como application/json
, usa la marca --json-parsing
en Google Cloud CLI.
De forma predeterminada, esta opción está inhabilitada. La sintaxis de la marca es la siguiente:
--json-parsing=[STANDARD | DISABLED]
La marca solo está disponible con gcloud compute security-policies update
. No puedes crear una política de seguridad nueva con esta opción, a menos que crees una política de seguridad en un archivo y, luego, importes ese archivo. Para obtener más información, consulta Importa políticas de seguridad.
Para obtener más información sobre el análisis de JSON, consulta Análisis de JSON y registro detallado.
Usa el registro detallado
Puedes configurar el nivel de registro de Google Cloud Armor para habilitar registros más detallados de cada política de seguridad mediante la marca --log-level
en la CLI de gcloud.
De forma predeterminada, esta opción está inhabilitada. La sintaxis de la marca es la siguiente:
--log-level=[NORMAL | VERBOSE]
La marca solo está disponible con gcloud compute security-policies update
. No puedes crear una política de seguridad nueva con esta opción, a menos que crees una política de seguridad en un archivo y, luego, importes ese archivo. Para obtener más información, consulta Importa políticas de seguridad.
Para obtener más información sobre el registro detallado, consulta Análisis de JSON y registro detallado.
Configura reglas para el límite de frecuencia
En esta sección, se presenta información sobre la configuración de las reglas de Google Cloud Armor para aplicar los límites de frecuencia por cliente mediante la configuración de una acción de bloqueo basada en un límite o una tasa.
Reglas de regulación basada en frecuencias
Las reglas para la limitación basada en la velocidad 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 "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] --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Por ejemplo, con el siguiente comando de gcloud
, se 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 exceden el límite de regulación muestran un código de error 429
.
gcloud compute security-policies rules create 105 \ --security-policy sec-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
crea una regla throttle
en prioridad 110
con un límite de frecuencia de 10 solicitudes cada 60 segundos para cada valor único del encabezado HTTP User-Agent
en todas las solicitudes provenientes de 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 sec-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'
También puedes emitir restricciones basadas en la tasa para los usuarios que tienen una cookie de exención de reCAPTCHA válida. Por ejemplo, el siguiente comando de gcloud
crea una regla throttle
con una prioridad de 115
con un límite de frecuencia de 20 solicitudes cada 5 minutos para cada cookie de exención de reCAPTCHA única en todas las solicitudes que tengan una cookie de exención de reCAPTCHA válida. Las solicitudes que exceden el límite de regulación se redireccionan para la evaluación de reCAPTCHA Enterprise. Para obtener más información sobre las cookies de exención y la evaluación de reCAPTCHA Enterprise, consulta la descripción general de la administración de bots.
gcloud compute security-policies rules create 115 \ --security-policy sec-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"
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] --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Por ejemplo, con el siguiente comando de gcloud
, se crea una regla de bloqueo basada en tasas con prioridad 100 para cada dirección IP cuyas solicitudes coincidan con un encabezado fish
con valor tuna
y se prohíba realizar 300 segundos cuando su frecuencia exceda 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, con el siguiente comando de gcloud
, se crea una regla de bloqueo basada en la tasa con una prioridad de 101 para limitar todas las solicitudes cuyo código de región 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
crea una regla de bloqueo basada en la tasa con una prioridad de 102 para limitar todas las solicitudes de cualquier rango de direcciones IP de origen a 20 solicitudes cada 60 segundos. La regla también bloquea las solicitudes de cualquier rango de direcciones IP de origen durante 600 segundos cuando su tasa supera un límite de 500 solicitudes cada 300 segundos. Las solicitudes bloqueadas muestran un código de error de 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 300 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key ALL
Usa la consola de Google Cloud y la CLI de gcloud para crear políticas de seguridad
Para las instrucciones de esta sección, se da por hecho que estás creando políticas de seguridad a fin de aplicarlas a un balanceador de cargas de HTTP(S) externo global o un balanceador de cargas de HTTP(S) externo global (clásico) y a un servicio de backend existentes. Si quieres ver un ejemplo sobre cómo completar los campos, consulta Crea el ejemplo.
Consola
Crea reglas y políticas de seguridad de Google Cloud Armor y vincula una política de seguridad a un servicio de backend:
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas, haz clic en Crear política.
En el campo Nombre, ingresa el nombre de tu política.
Ingresa una descripción de la política (opcional).
En Tipo de política, elige Política de seguridad de backend o Política de seguridad perimetral.
En Acción de la regla predeterminada, selecciona Permitir para una regla predeterminada que permite el acceso o selecciona Denegar para una regla predeterminada que prohíbe el acceso a una dirección IP o a un rango de direcciones IP.
La regla predeterminada es la de menor prioridad que tiene efecto solo si no se aplica ninguna otra regla.
Si configuras una regla para rechazar, selecciona un mensaje Rechazar estado. Este es el mensaje de error que muestra Google Cloud Armor si un usuario sin acceso intenta acceder.
Sin importar el tipo de regla que crees, haz clic en Siguiente paso.
Agrega más reglas:
- Haga clic en Agregar regla.
- Ingresa una descripción para la regla (opcional).
Selecciona el modo:
- Modo básico: permite o rechaza el tráfico en función de los rangos o las direcciones IP.
- Modo avanzado: permite o rechaza el tráfico según las expresiones de reglas.
En el campo Coincidencia, especifica las condiciones bajo las cuales se aplica la regla:
- Modo básico: ingresa las direcciones IP o los rangos de IP para que coincidan con la regla.
- Modo avanzado: ingresa una expresión o subexpresiones que se deben evaluar en las solicitudes entrantes. Para obtener información sobre cómo escribir las expresiones, consulta la referencia del lenguaje de reglas personalizadas.
En Acción, selecciona Permitir o Rechazar para permitir o denegar el tráfico si la regla coincide.
Para habilitar el modo de vista previa, selecciona la casilla de verificación Habilitar. En el modo de vista previa, puedes ver cómo se comporta la regla, pero esta no está habilitada.
Ingresa la Prioridad de la regla. Puede ser cualquier número entero positivo entre 0 y 2,147,483,646 inclusive. Para obtener más información sobre el orden de evaluación, consulta Orden de evaluación de la regla.
Haz clic en Listo.
Para agregar más reglas, haz clic en Agregar regla y repite los pasos anteriores. De lo contrario, haz clic en Siguiente paso.
Aplica políticas a los objetivos:
- Haga clic en Agregar destino.
- En la lista Destino, selecciona un objetivo.
- Para agregar más destinos, haz clic en Agregar destino.
- Haga clic en Listo.
- Haz clic en Crear política.
gcloud
Para crear una nueva política de seguridad de Google Cloud Armor, usa el comando
gcloud compute security-policies create
. ReemplazaNAME
yDESCRIPTION
por el nombre y la descripción de la política de seguridad. En el campotype
, usaCLOUD_ARMOR
a fin de crear una política de seguridad de backend oCLOUD_ARMOR_EDGE
para crear una política de seguridad perimetral. La marcatype
no es una marca obligatoria. Si no se especifica ningún tipo, se crea una política de seguridad de backend de forma predeterminada:gcloud compute security-policies create NAME \ [--type=CLOUD_ARMOR|CLOUD_ARMOR_EDGE] \ [--file-format=FILE_FORMAT | --description=DESCRIPTION] \ [--file-name=FILE_NAME]
Con el siguiente comando, se actualiza la política que creaste antes, se activa el análisis de JSON y se cambia el nivel de registro a
VERBOSE
:gcloud compute security-policies update my-policy \ --json-parsing=STANDARD --log-level=VERBOSE
Para agregar reglas a una política de seguridad, usa el comando
gcloud compute security-policies rules create PRIORITY
. ReemplazaPRIORITY
con la prioridad asignada a la regla en la política. Para obtener información sobre cómo funciona la prioridad de las reglas, consulta Orden de evaluación de las reglas.gcloud compute security-policies rules create PRIORITY \ [--security-policy POLICY_NAME] \ [--description DESCRIPTION] \ --src-ip-ranges IP_RANGE,... | --expression EXPRESSION \ --action=[ allow | deny-403 | deny-404 | deny-502 ] \ [--preview]
Por ejemplo, el siguiente comando agrega una regla para bloquear el tráfico de los rangos de direcciones IP 192.0.2.0/24 y 198.51.100.0/24. La regla tiene una prioridad de 1,000 y es una regla en una política llamada
my-policy
.gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \ --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \ --action "deny-403"
Con la marca
--preview
agregada, la regla se agrega a la política, pero no se aplica, y cualquier tráfico que active la regla solo se registra.gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \ --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \ --action "deny-403" \ --preview
Usa la marca
--expression
para especificar una condición personalizada en la referencia del lenguaje de reglas personalizadas. El siguiente comando agrega una regla para permitir el tráfico desde la dirección IP1.2.3.4
y contiene la stringGodzilla
en el encabezado del usuario-agente:gcloud beta compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')" \ --action allow \ --description "Block User-Agent 'Godzilla'"
Con el siguiente comando, se agrega una regla para bloquear solicitudes si la cookie de la solicitud contiene un valor específico:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')" \ --action "deny-403" \ --description "Cookie Block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes de la región
AU
:gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "origin.region_code == 'AU'" \ --action "deny-403" \ --description "AU block"
Con el siguiente comando, se agrega una regla para bloquear las solicitudes de la región
AU
que no están en el rango de IP especificado:gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "origin.region_code == 'AU' && !inIpRange(origin.ip, '1.2.3.0/24')" \ --action "deny-403" \ --description "country and IP block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes con un URI que coincide con una expresión regular:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "request.path.matches('/bad_path/')" \ --action "deny-403" \ --description "regex block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes si el valor decodificado en Base64 del encabezado de
user-id
contiene un valor específico:gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \ --action "deny-403" \ --description "country and IP block"
Con el siguiente comando, se agrega una regla que usa un conjunto de expresiones preconfiguradas para mitigar los ataques de SQLi:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "evaluatePreconfiguredExpr('sqli-stable')" \ --action "deny-403"
Con el siguiente comando, se agrega una regla que usa un conjunto de expresiones preconfiguradas para permitir el acceso desde todas las direcciones IP en una lista de direcciones IP con nombre:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-fastly')" \ --action "allow"
Configura reglas para el límite de frecuencia
En esta sección, se presenta información sobre la configuración de las reglas de Google Cloud Armor para aplicar los límites de frecuencia por cliente mediante la configuración de una acción de bloqueo basada en un límite o una tasa.
Reglas de regulación basada en frecuencias
Las reglas para la limitación basada en la velocidad 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 "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 en claves únicas
Por ejemplo, con el siguiente comando de gcloud
, se 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 exceden el límite de regulación muestran un código de error 429
.
gcloud compute security-policies rules create 105 \ --security-policy sec-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
crea una regla throttle
en prioridad 110
con un límite de frecuencia de 10 solicitudes cada 60 segundos para cada valor único del encabezado HTTP User-Agent
en todas las solicitudes provenientes de 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 sec-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 tienen una cookie de exención de reCAPTCHA válida. Por ejemplo, el siguiente comando de gcloud
crea una regla throttle
con una prioridad de 115
con un límite de frecuencia de 20 solicitudes cada 5 minutos para cada cookie de exención de reCAPTCHA única en todas las solicitudes que tengan una cookie de exención de reCAPTCHA válida. Las solicitudes que exceden el límite de regulación se redireccionan para la evaluación de reCAPTCHA Enterprise. Para obtener más información sobre las cookies de exención y la evaluación de reCAPTCHA Enterprise, consulta la descripción general de la administración de bots.
gcloud compute security-policies rules create 115 \ --security-policy sec-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 varias claves
También puedes limitar el tráfico en función de varias claves de límite de frecuencia mediante la marca enforce-on-key-configs
. Esta marca reemplaza las marcas enforce-on-key
y enforce-on-key-name
. La marca enforce-on-key-configs
requiere una lista separada por comas de pares KEY=NAME
, aunque no es necesario proporcionar un nombre para 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 60 segundos para cada combinación de HTTP-PATH
y site_id
en todas las solicitudes que provienen de direcciones IP en 1.2.3.0/24
. Las solicitudes que superan el límite de limitació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, con el siguiente comando de gcloud
, se crea una regla de bloqueo basada en tasas con prioridad 100 para cada dirección IP cuyas solicitudes coincidan con un encabezado fish
con valor tuna
y se prohíba realizar 300 segundos cuando su frecuencia exceda 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, con el siguiente comando de gcloud
, se crea una regla de bloqueo basada en la tasa con una prioridad de 101 para limitar todas las solicitudes cuyo código de región 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
crea una regla de bloqueo basada en la tasa con una prioridad de 102 para limitar todas las solicitudes de cualquier rango de direcciones IP de origen a 20 solicitudes cada 60 segundos. La regla también prohíbe las solicitudes de cualquier rango de direcciones IP de origen durante 600 segundos cuando su frecuencia supere un límite de 500 solicitudes cada 400 segundos. Las solicitudes bloqueadas muestran un código de error de 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
Configura reglas para la administración de bots
En esta sección, se proporciona información sobre cómo configurar las reglas de la política de seguridad de Google Cloud Armor para la administración de bots. Para obtener más información, consulta la descripción general de la administración de bots.
Usa el desafío manual de reCAPTCHA Enterprise para distinguir entre clientes humanos y automatizados
Para asociar o desasociar tu propia clave de sitio del WAF de reCAPTCHA con una política de seguridad, usa el siguiente comando y reemplaza el nombre de la política de seguridad (SECURITY_POLICY) y la clave de sitio del desafío del WAF de reCAPTCHA (SITE_KEY) según corresponda.
gcloud compute security-policies update SECURITY_POLICY \ --recaptcha-redirect-site-key SITE_KEY
En el siguiente ejemplo, se asocia una clave de sitio del WAF de reCAPTCHA con una política de seguridad. La clave de sitio asociada se aplica a todas las reglas que usan la función de desafío manual en la política de seguridad determinada.
gcloud compute security-policies update my-policy \ --recaptcha-redirect-site-key "SITE_KEY"
También puedes desasociar una clave de sitio del WAF de reCAPTCHA con una política de seguridad de la siguiente manera:
gcloud compute security-policies update my-policy \ --recaptcha-redirect-site-key ""
Si deseas crear una regla que redireccione el tráfico de forma interna para la evaluación de reCAPTCHA Enterprise, usa el siguiente formato en gcloud
:
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
El siguiente ejemplo crea una regla que redirecciona el tráfico que intenta llegar a /login.html
para el desafío manual de reCAPTCHA Enterprise.
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "request.path.matches(\"/login.html\")" \ --action redirect \ --redirect-type google-recaptcha
Aplica la evaluación sin inconvenientes de reCAPTCHA Enterprise
Antes de continuar, consulta la descripción general de la administración de bots para conocer los requisitos previos respecto al uso de los token de acción o los token de sesión de reCAPTCHA Enterprise.
Puedes usar token.recaptcha_action.ATTRIBUTE
(reemplazando ATTRIBUTE por un atributo de token válido en el lenguaje de reglas de Google Cloud Armor) para extraer atributos de un token de acción de reCAPTCHA Enterprise. De manera similar, puedes usar token.recaptcha_session.ATTRIBUTE
para un token de sesión de reCAPTCHA Enterprise. Para obtener más información sobre la sintaxis de los atributos de token de reCAPTCHA Enterprise disponibles, consulta la referencia del lenguaje de reglas.
En el ejemplo siguiente, se crea una regla que permite el tráfico que se dirige a /login.html
y tiene una puntuación del token de acción de reCAPTCHA Enterprise mayor o igual que 0.8
.
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \ --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 gcloud
.
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
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 my-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 valores estáticos definidos por el usuario y encabezados personalizados antes de enviarlos mediante proxies a backends protegidos, usa el siguiente formato en 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,...
En el siguiente ejemplo, se crea una regla que permite el tráfico que se dirige a /login.html
y tiene una puntuación del token de acción de reCAPTCHA Enterprise inferior a 0.2
, pero agrega un encabezado personalizado para él.
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \ --action allow \ --request-headers-to-add "reCAPTCHA-Warning=high"
Usa la protección adaptable
La protección adaptable se aplica según la política de seguridad.
Consola
A fin de activar la protección adaptable en una política de seguridad, haz lo siguiente:
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas, haz clic en el nombre de una política de seguridad.
Haga clic en Editar.
En Protección adaptable, selecciona Habilitar.
Haga clic en Update.
Para desactivar la protección adaptable en una política de seguridad, haz lo siguiente:
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas, haz clic en el nombre de una política de seguridad.
Haga clic en Editar.
En Protección adaptable, anula la selección de Habilitar.
Haz clic en Actualizar.
gcloud
A fin de activar la protección adaptable en una política de seguridad, haz lo siguiente:
gcloud compute security-policies update MY-SECURITY-POLICY \ --enable-layer7-ddos-defense
Para desactivar la protección adaptable en una política de seguridad, haz lo siguiente:
gcloud compute security-policies update MY-SECURITY-POLICY \ --no-enable-layer7-ddos-defense
Enumera las reglas preconfiguradas disponibles
Obtén una lista de las reglas preconfiguradas para ver las reglas y firmas predefinidas de protección de aplicaciones, como el conjunto de reglas principales de ModSecurity que proporciona Google Cloud Armor. Estas reglas preconfiguradas contienen varias firmas integradas que Google Cloud Armor usa para evaluar según las solicitudes entrantes. Agrega estas reglas preconfiguradas a reglas nuevas o existentes con el lenguaje de reglas personalizadas.
Para obtener más información, consulta las reglas preconfiguradas.
gcloud
Ejecuta el comando
gcloud compute security-policies list-preconfigured-expression-sets
:gcloud compute security-policies list-preconfigured-expression-sets
En el siguiente ejemplo, se muestra el formato del resultado del comando:
EXPRESSION_SET expression-set-1 RULE_ID SENSITIVITY expression-set-1-id-1 sensitivity-value-1 expression-set-1-id-2 sensitivity-value-2 expression-set-2 alias-1 RULE_ID SENSITIVITY expression-set-2-id-1 sensitivity-value-1 expression-set-2-id-2 sensitivity-value-2
En el siguiente ejemplo, se incluye un ejemplo del resultado real del comando. Ten en cuenta que, en el resultado real, se incluirían todas las reglas que se enumeran en Ajuste de las reglas de WAF de Google Cloud Armor.
gcloud compute security-policies list-preconfigured-expression-sets
EXPRESSION_SET sqli-canary RULE_ID SENSITIVITY owasp-crs-v030001-id942110-sqli 2 owasp-crs-v030001-id942120-sqli 2 … xss-canary RULE_ID SENSITIVITY owasp-crs-v030001-id941110-xss 1 owasp-crs-v030001-id941120-xss 1 … sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Mostrar lista de políticas de seguridad
Usa estas instrucciones para generar una lista de todas las políticas de seguridad de Google Cloud Armor en el proyecto actual o en un proyecto que especifiques.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
Para ver una política en particular, en la página Políticas de seguridad, en la lista de políticas, haz clic en su nombre.
gcloud
gcloud compute security-policies list
Por ejemplo:
gcloud compute security-policies list
NAME my-policy
Para obtener más información, consulta gcloud compute security-policies list
Actualiza las políticas de seguridad
Usa estas instrucciones para actualizar una política de seguridad de Google Cloud Armor. Por ejemplo, puedes modificar la descripción de la política, el comportamiento de la regla predeterminada, cambiar el servicio de backend de destino o agregar reglas nuevas.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
Para actualizar una política en particular, en la página Políticas de seguridad, en la lista de políticas, haz clic en
Menú en la política que quieras actualizar.- Para actualizar la descripción de la política correspondiente a la acción de la regla predeterminada, selecciona Editar, realiza los cambios deseados y haz clic en Actualizar.
- Para agregar una regla, selecciona Agregar regla y, luego, sigue las instrucciones en Agrega reglas a una política de seguridad.
- Para cambiar el servicio de backend de destino de la política, selecciona Aplicar política al destino, haz clic en Agregar destino, selecciona un destino y, luego, haz clic en Agregar.
gcloud
Para actualizar una política de seguridad, usa las siguientes instrucciones de Google Cloud CLI:
- Para actualizar una regla en una política de seguridad, consulta Actualiza una sola regla en una política de seguridad.
- Para agregar una regla a una política de seguridad, consulta Agrega reglas a una política de seguridad.
- Para borrar una regla de una política de seguridad, consulta Borra reglas de una política de seguridad.
- Para actualizar varias reglas en una sola actualización (actualización atómica), consulta Actualiza varias reglas de forma atómica en una política de seguridad.
- Para actualizar los campos que no son reglas en una política de seguridad (como el campo de descripción), consulta Exporta políticas de seguridad y, también, Importa políticas de seguridad.
Exporta políticas de seguridad
Puedes exportar una política de seguridad de Google Cloud Armor como un archivo YAML o JSON mediante Google Cloud CLI. Exportar una política te permite recuperar una copia de esta que puedes modificar o guardar en el control de origen.
gcloud
En el siguiente comando,
NAME
es el nombre de la política de seguridad. Los formatos de archivo válidos son YAML y JSON. Si no proporcionas el formato de archivo, Google Cloud Armor usa el YAML predeterminado.gcloud compute security-policies export NAME \ --file-name FILE_NAME \ --file-format FILE_FORMAT
En el siguiente ejemplo, se exporta la política de seguridad
my-policy
al archivomy-file
en formato YAML:gcloud compute security-policies export my-policy \ --file-name my-file \ --file-format yaml
En el siguiente ejemplo, se muestra una política de seguridad exportada:
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: allow description: default rule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
Puedes modificar el archivo exportado con cualquier editor de texto y, luego, importarlo de nuevo a Google Cloud mediante el comando
import
.
Importa políticas de seguridad
Puedes importar las políticas de seguridad de Google Cloud Armor desde un archivo YAML o JSON mediante Google Cloud CLI. No puedes usar el comando import
para actualizar las reglas de una política existente. En su lugar, debes actualizar las reglas una por una con el procedimiento de actualización de una sola regla en una política de seguridad, o de una sola vez con el procedimiento de actualización de varias reglas de forma atómica en una política de seguridad.
gcloud
Para importar políticas de seguridad, usa el comando gcloud compute security-policies import NAME
.
Reemplaza NAME
por el nombre de la política de seguridad que deseas importar. Si no proporcionas el formato de archivo, se supone cuál es el formato correcto en función de la estructura del archivo. Si la estructura no es válida, verás un error.
gcloud compute security-policies import NAME \ --file-name FILE_NAME \ [--file-format FILE_FORMAT]
Por ejemplo, con el siguiente comando, se actualiza la política my-policy
mediante la importación del archivo my-file
.
gcloud compute security-policies import my-policy \ --file-name my-file \ --file-format json
Si la huella digital de la política no está actualizada cuando la importas, Google Cloud Armor muestra un error. Esto significa que la política se modificó desde la última vez que la exportaste. Para solucionar esto, usa el comando describe
en la política a fin de obtener la última huella digital.
Combina las diferencias entre la política descrita y tu política y, luego, reemplaza la huella digital desactualizada por la más reciente.
Borrar políticas de seguridad
Usa estas instrucciones para borrar una política de seguridad de Google Cloud Armor. Debes quitar todos los servicios de backend de la política antes de que puedas borrarla.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, junto al nombre de la política de seguridad que deseas borrar, selecciona la casilla de verificación.
En la esquina superior derecha de la página, haz clic en
Borrar.
gcloud
Usa gcloud compute security-policies delete NAME
.
Reemplaza NAME
por el nombre de la política de seguridad:
gcloud compute security-policies delete NAME
Vincula una política de seguridad a un servicio de backend
Usa estas instrucciones para vincular una política de seguridad de Google Cloud Armor a un servicio de backend. Una política de seguridad se puede vincular a más de un servicio de backend, pero un servicio de backend puede tener sólo una de cada tipo de política de seguridad vinculada.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política.
En el medio de la página, haz clic en la pestaña Destinos.
Haz clic en Aplicar política a un destino nuevo.
Haga clic en Agregar destino.
En la lista Destino, selecciona un objetivo y, luego, haz clic en Agregar.
gcloud
Cuando adjuntas una política de seguridad de backend a un servicio de backend, usa el comando gcloud compute backend-services
y la marca --security-policy
:
gcloud compute backend-services update my-backend \ --security-policy my-policy
Cuando adjuntes una política de seguridad perimetral a un servicio de backend, usa el comando gcloud compute backend-services
y la marca --edge-security-policy
:
gcloud compute backend-services update my-backend \ --edge-security-policy my-policy
Quita una política de seguridad de un servicio de backend
Usa estas instrucciones para quitar una política de seguridad de backend de Google Cloud Armor o una política de seguridad perimetral de un servicio de backend.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política.
En el medio de la página, haz clic en la pestaña Destinos.
Selecciona el servicio de backend de destino del que deseas quitar la política.
Haz clic en Quitar.
En el mensaje Quitar objetivo, haz clic en Quitar.
gcloud
Cuando quites una política de seguridad de backend, usa el comando gcloud compute
backend-services
y la marca --security-policy
:
gcloud compute backend-services update my-backend \ --security-policy ""
Cuando quites una política de seguridad perimetral, usa el comando gcloud compute
backend-services
y la marca --edge-security-policy
:
gcloud compute backend-services update my-backend \ --edge-security-policy ""
Vincula una política de seguridad a un bucket de backend
Usa estas instrucciones para vincular una política de seguridad perimetral de Google Cloud Armor a un bucket de backend. Una política de seguridad perimetral se puede adjuntar a más de un bucket de backend.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política.
En el medio de la página, haz clic en la pestaña Destinos.
Haz clic en Aplicar política a un destino nuevo.
Haga clic en Agregar destino.
En la lista Destino, selecciona un objetivo y, luego, haz clic en Agregar.
gcloud
Cuando adjuntes una política de seguridad perimetral a un bucket de backend, usa el comando cloud compute backend-buckets
y la marca --edge-security-policy
:
gcloud compute backend-services update my-bucket \ --edge-security-policy my-edge-policy
Quita una política de seguridad de un bucket de backend
Usa estas instrucciones para quitar una política de seguridad perimetral de Google Cloud Armor de un bucket de backend.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política.
En el medio de la página, haz clic en la pestaña Destinos.
Selecciona el servicio de backend de destino del que deseas quitar la política.
Haz clic en Quitar.
En el mensaje Quitar objetivo, haz clic en Quitar.
gcloud
Cuando quites una política de seguridad perimetral de un bucket de backend, usa el comando cloud compute backend-buckets
y la marca --edge-security-policy
:
gcloud compute backend-services update my-bucket \ --edge-security-policy ""
Agrega reglas a una política de seguridad
Usa estas instrucciones para agregar reglas a una política de seguridad de Google Cloud Armor.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política.
En el centro de la página, haga clic en la pestaña Reglas.
Haga clic en Agregar regla.
Ingresa una descripción de la regla (opcional).
Selecciona el modo:
- Modo básico: permite o rechaza el tráfico en función de los rangos o las direcciones IP.
- Modo avanzado: permite o rechaza el tráfico según las expresiones de reglas.
En el campo Coincidencia, especifica las condiciones bajo las cuales se aplica la regla:
- Modo básico: escribe entre uno (1) y cinco (5) rangos de direcciones IP que deben coincidir en la regla.
Modo avanzado: ingresa una expresión o subexpresiones que se deben evaluar en las solicitudes entrantes. Para obtener información sobre cómo escribir las expresiones y leer los siguientes ejemplos, consulta la referencia del lenguaje de reglas personalizadas.
La siguiente expresión coincide con las solicitudes de la dirección IP
1.2.3.4
y contiene la stringGodzilla
en el encabezado del usuario-agente:inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')
La siguiente expresión coincide con las solicitudes que tienen una cookie con un valor específico:
has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
La siguiente expresión coincide con las solicitudes de la región
AU
:origin.region_code == 'AU'
La siguiente expresión coincide con las solicitudes de la región
AU
que no están en el rango de IP especificado:origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
La siguiente expresión coincide con las solicitudes si el URI coincide con una expresión regular:
request.path.matches('/bad_path/')
La siguiente expresión coincide con las solicitudes si el valor decodificado en Base64 del encabezado de
user-id
contiene un valor específico:has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
En la siguiente expresión, se usa un conjunto de expresiones preconfiguradas para establecer coincidencias con los ataques de SQLi:
evaluatePreconfiguredExpr('sqli-stable')
En Acción, selecciona Permitir o Rechazar.
Si configuras una regla para rechazar, selecciona un mensaje Rechazar estado.
Si deseas habilitar el modo de vista previa para la regla, selecciona la casilla de verificación Habilitar.
En el campo Prioridad, ingresa un número entero positivo.
Haga clic en Add.
gcloud
Usa el comando de gcloud compute security-policies rules create PRIORITY
.
Reemplaza PRIORITY
con la prioridad de la regla en la política:
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --description DESCRIPTION \ --src-ip-ranges IP_RANGES | --expression EXPRESSION \ --action=[ allow | deny-403 | deny-404 | deny-502 ] \ --preview
Por ejemplo, el siguiente comando agrega una regla para bloquear el tráfico de los rangos de direcciones IP 192.0.2.0/24 y 198.51.100.0/24. La regla tiene una prioridad de 1,000 y es una regla en una política llamada my-policy
.
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \ --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \ --action "deny-403"
Usa la marca --expression
para especificar una condición en la referencia del lenguaje de reglas personalizadas.
El siguiente comando agrega una regla para permitir el tráfico desde la dirección IP 1.2.3.4
y contiene la string Godzilla
en el encabezado del usuario-agente:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')" \ --action allow \ --description "Block User-Agent 'Godzilla'"
Con el siguiente comando, se agrega una regla para bloquear solicitudes si la cookie de la solicitud contiene un valor específico:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')" \ --action deny-403 \ --description "Cookie Block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes de la región AU
:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "origin.region_code == 'AU'" \ --action deny-403 \ --description "AU block"
Con el siguiente comando, se agrega una regla para bloquear las solicitudes de la región AU
que no están en el rango de IP especificado:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')" \ --action deny-403 \ --description "country and IP block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes con un URI que coincide con una expresión regular:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "request.path.matches('/bad_path/')" \ --action deny-502 \ --description "regex block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes si el valor decodificado en Base64 del encabezado de user-id
contiene un valor específico:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \ --action deny-403 \ --description "country and IP block"
Con el siguiente comando, se agrega una regla que usa un conjunto de expresiones preconfiguradas para mitigar los ataques de SQLi:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "evaluatePreconfiguredExpr('sqli-stable')" \ --action deny-403
Enumera las reglas en una política de seguridad
Usa estas instrucciones para generar una lista de las reglas en una política de seguridad de Google Cloud Armor.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política y las reglas de políticas se enumeran en la pestaña Reglas en el centro de la página.
gcloud
Usa el siguiente comando de gcloud
para obtener una lista de todas las reglas en una sola política de seguridad junto con una descripción de la política:
gcloud compute security-policies describe NAME \
Usa el siguiente comando de gcloud
para describir una regla con la prioridad especificada en la política de seguridad especificada:
gcloud compute security-policies rules describe PRIORITY \ --security-policy POLICY_NAME
Por ejemplo, en el siguiente comando, se describe la regla con prioridad 1,000 en la política de seguridad my-policy
:
gcloud compute security-policies rules describe 1000 \ --security-policy my-policy
Resultado:
action: deny(403) description: block traffic from 192.0.2.0/24 and 198.51.100.0/24 kind: compute#securityPolicyRule match: srcIpRanges: - '192.0.2.0/24' - '198.51.100.0/24' preview: false priority: 1000
Actualiza una sola regla en una política de seguridad
Sigue estas instrucciones para actualizar una sola regla en una política de seguridad de Google Cloud Armor. Para actualizar varias reglas de forma atómica, consulta la actualización de varias reglas de forma atómica en una política de seguridad.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política.
En el centro de la página, haga clic en la pestaña Reglas.
Haz clic en
Editar junto a la regla que deseas actualizar. Se abrirá la página Editar regla.Realiza los cambios deseados y haz clic en Actualizar.
gcloud
Usa este comando para actualizar una regla con la prioridad especificada de una política de seguridad designada. Solo puedes actualizar una política de seguridad a la vez con este comando:
gcloud compute security-policies rules update PRIORITY [ \ --security-policy POLICY_NAME \ --description DESCRIPTION \ --src-ip-ranges IP_RANGES | --expression EXPRESSION \ --action=[ allow | deny-403 | deny-404 | deny-502 ] \ --preview ]
Por ejemplo, con el siguiente comando, se actualiza una regla con una prioridad de 1,111 para permitir el tráfico del rango de direcciones IP 192.0.2.0/24:
gcloud compute security-policies rules update 1111 \ --security-policy my-policy \ --description "allow traffic from 192.0.2.0/24" \ --src-ip-ranges "192.0.2.0/24" \ --action "allow"
Para obtener más información sobre este comando, consulta gcloud compute security-policies rules update
.
Para actualizar la prioridad de una regla, debes usar la API de REST. Para obtener más información, consulta securityPolicies.patchRule
.
Actualiza varias reglas de forma atómica en una política de seguridad
Con una actualización atómica, se aplican cambios a varias reglas en una sola actualización. Si actualizas las reglas una por una, es posible que veas comportamientos no deseados porque puede que las reglas antiguas y las nuevas funcionen en conjunto durante un período breve.
Para actualizar varias reglas de forma atómica, exporta la política de seguridad actual a un archivo JSON o YAML y, luego, modifica el archivo. Usa el archivo modificado para crear una política de seguridad nueva y, luego, cambia la política de seguridad para los servicios de backend relevantes.
gcloud
Exporta la política que deseas actualizar, como se muestra en el siguiente ejemplo:
gcloud compute security-policies export my-policy \ --file-name my-file \ --file-format yaml
La política exportada será similar al siguiente ejemplo:
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredExpr('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 2 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
Usa cualquier editor de texto para modificar la política. Por ejemplo, puedes modificar las prioridades de las reglas existentes y agregar una regla nueva:
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredExpr('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-new-rule match: config: srcIpRanges: - '1.2.3.1' versionedExpr: SRC_IPS_V1 preview: false priority: 10 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 11 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
Crea una nueva política de seguridad de Google Cloud Armor y especifica el nombre y el formato del archivo modificado, como se muestra en el siguiente ejemplo:
gcloud compute security-policies create new-policy \ --file-name modified-policy \ --file-format yaml
Quita la política de seguridad anterior del servicio de backend relevante, como se muestra en el siguiente ejemplo:
gcloud compute backend-services update my-backend \ --security-policy ""
Agrega la nueva política de seguridad al servicio de backend, como se muestra en el siguiente ejemplo:
gcloud compute backend-services update my-backend \ --security-policy new-policy
Si no deseas usar la política anterior, bórrala:
gcloud compute security-policies delete my-policy
Borra reglas de una política de seguridad
Sigue estas instrucciones para borrar reglas de una política de seguridad de Google Cloud Armor.
Consola
En la consola de Google Cloud, ve a la página Seguridad de red.
En la página Políticas de seguridad, haz clic en el nombre de la política de seguridad. Se muestra la página Detalles de la política.
En el centro de la página, en la pestaña Reglas, selecciona la casilla de verificación junto a la regla que deseas borrar.
Haz clic en
Borrar.
gcloud
Usa este comando para quitar una regla con la prioridad especificada de una política de seguridad designada. Solo puedes modificar una política de seguridad a la vez, pero puedes borrar varias reglas al mismo tiempo:
gcloud compute security-policies rules delete PRIORITY [...] [ --security-policy POLICY_NAME \ ]
Por ejemplo:
gcloud compute security-policies rules delete 1000 \ --security-policy my-policy
¿Qué sigue?
- Ajusta las reglas de firewall de aplicaciones web (WAF)
- Soluciona problemas
- Usa la referencia del lenguaje de reglas personalizadas