En esta página, se describen ejemplos de configuraciones de políticas de seguridad para diferentes tipos de balanceadores de cargas y políticas de seguridad.
Configura políticas de seguridad para balanceadores de cargas de aplicaciones externos
Los siguientes son los pasos de alto nivel para configurar las políticas de seguridad de Google Cloud Armor, a fin de habilitar reglas que permitan o rechacen el tráfico al balanceador de cargas de aplicaciones externo global o al balanceador de cargas de aplicaciones 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 de aplicaciones externo global o del balanceador de cargas de aplicaciones 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 Políticas de Google Cloud Armor.
Haz clic en Crear políticas.
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
. - Haga 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.
- Haga clic en Listo.
- Haz clic en Crear política.
De manera opcional, habilita la Protección adaptable de Google Cloud Armor:
- Para habilitar la protección adaptable, marca la casilla de verificación Habilitar.
Configura la política para usuarios internos:
- Haz clic en Crear políticas.
- 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
. - Haga 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.
- Haga 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
Crea políticas de seguridad
Puedes usar la consola de Google Cloud o gcloud CLI para crear políticas de seguridad. Para las instrucciones de esta sección, se da por hecho que estás configurando políticas de seguridad para aplicarlas a un balanceador de cargas de aplicaciones externo global o un balanceador de cargas de aplicaciones clásico y a un servicio de backend existentes. Si quieres ver un ejemplo sobre cómo completar los campos, consulta Crea el ejemplo.
Console
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 Políticas de Google Cloud Armor.
Haz clic en Crear políticas.
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 Configura los atributos 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.
Haga 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
.En el campo
type
, usaCLOUD_ARMOR
para crear una política de seguridad de backend oCLOUD_ARMOR_EDGE
para crear una política de seguridad perimetral. La marcatype
es opcional. 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]
Reemplaza lo siguiente:
NAME
: Es el nombre de la política de seguridad.DESCRIPTION
: La descripción de la política de seguridad
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
.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]
Reemplaza
PRIORITY
por 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.Por ejemplo, el siguiente comando agrega una regla para bloquear el tráfico de los rangos de direcciones IP
192.0.2.0/24
y198.51.100.0/24
. La regla tiene una prioridad de 1, 000 y es una regla en una política llamadamy-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. Para obtener más información, consulta Configura los atributos 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 stringexample
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('example')" \ --action allow \ --description "Block User-Agent 'example'"
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('/example_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 políticas de seguridad para los balanceadores de cargas de aplicaciones externos regionales
En esta sección, se proporciona información para configurar políticas de seguridad de Google Cloud Armor con alcance regional para balanceadores de cargas de aplicaciones externos regionales.
Protege las cargas de trabajo con balanceo de cargas regional
Sigue estos pasos para configurar una política de seguridad que proteja tu servicio de backend con alcance regional:
Crea una política de seguridad con alcance regional.
gcloud compute security-policies create POLICY_NAME \ --type=CLOUD_ARMOR \ --region=REGION
Adjunta la política de seguridad de alcance regional a un servicio de backend con ese alcance. Reemplaza
BACKEND_NAME
por el nombre de tu servicio de backend existente con alcance regional.gcloud compute backend-services update BACKEND_NAME \ --security-policy=POLICY_NAME \ --region=REGION
Aplica una política de seguridad de Google Cloud Armor centrada en una región
Considera un ejemplo en el que eres un administrador de seguridad que desea satisfacer un requisito de residencia que establece que todas tus cargas de trabajo de backend y reglas de WAF se implementen en una región específica. Supongamos que ya realizaste lo siguiente:
- Creaste servicios de backend con balanceo de cargas y alcance regional en la región.
- Inhabilitaste todas las políticas de seguridad existentes con alcance global en tu implementación.
- Creaste y adjuntaste una política de seguridad con alcance regional en la misma región (como en la sección anterior).
Puedes agregar reglas de WAF y otras reglas avanzadas a tu política y, al mismo tiempo, satisfacer el requisito con los siguientes comandos de ejemplo:
Agrega una regla de WAF a la política:
gcloud compute security-policies rules create 1000 --action=deny-404 \ --expression="evaluatePreconfiguredExpr('xss-v33-stable', ['owasp-crs-v030301-id941100-xss', 'owasp-crs-v030301-id941160-xss'])" \ --security-policy=POLICY_NAME \ --region=REGION
Agrega una regla avanzada a la política:
gcloud compute security-policies rules create 1000 --action=allow \ --expression="has(request.headers['cookie']) && request.headers['cookie'].contains('80=EXAMPLE')" \ --security-policy=POLICY_NAME \ --region=REGION
Agrega una regla de límite de frecuencia a la política:
gcloud compute security-policies rules create 1000 --action=throttle \ --src-ip-ranges="1.1.1.1/32" \ --rate-limit-threshold-count=1000 \ --rate-limit-threshold-interval-sec=120 \ --conform-action="allow" \ --exceed-action="deny-429" \ --enforce-on-key=IP \ --ban-duration-sec=999 \ --ban-threshold-count=5000 \ --ban-threshold-interval-sec=60 \ --security-policy=POLICY_NAME \ --region=REGION
¿Qué sigue?
- Configura las políticas de seguridad de Google Cloud Armor
- Obtén más información sobre el límite de frecuencia.