Ejemplos de políticas de seguridad

Puedes configurar políticas de seguridad de Google Cloud Armor para proteger tus servicios de ataques web y de denegación de servicio (DoS). Estas políticas usan la infraestructura global de Google para proteger tus aplicaciones y controlar el tráfico que fluye a través de los balanceadores de cargas.

En este documento, se proporcionan ejemplos de configuraciones de políticas de seguridad para varios tipos de balanceadores de cargas.

Configura políticas de seguridad para balanceadores de cargas de aplicaciones externos

Para configurar las políticas de seguridad de Google Cloud Armor para permitir o rechazar el tráfico a un balanceador de cargas de aplicaciones externo global o a uno clásico, haz lo siguiente :

  1. Crea una política de seguridad de Cloud Armor.
  2. Agrega reglas basadas en direcciones IP, expresiones personalizadas o conjuntos de expresiones preconfigurados.
  3. Vincula la política de seguridad a un servicio de backend.
  4. Actualiza la política de seguridad según sea necesario.

En este ejemplo, crearás dos políticas de seguridad de Cloud Armor y las aplicarás a diferentes servicios de backend.

Ejemplo en el que dos políticas de seguridad se aplican a diferentes servicios de backend.
Ejemplo en el que se aplican dos políticas de seguridad en diferentes servicios de backend (haz clic para agrandar).

En el ejemplo, estas son las políticas de seguridad de Cloud Armor:

  • mobile-clients-policy se aplica a usuarios externos de tus servicios de games.
  • internal-users-policy se aplica al equipo de test-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 se aplica a las instancias en todas las regiones. En este ejemplo, 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

Sigue los pasos de esta sección para crear la configuración de ejemplo analizada en la sección anterior.

Console

Configura la política para usuarios externos:

  1. En la consola de Google Cloud , ve a la página Políticas de Cloud Armor.

    Ir a Políticas de Cloud Armor

  2. Haz clic en Crear políticas.

  3. En el campo Nombre, ingresa mobile-clients-policy.

  4. En el campo Descripción, ingresa Policy for external users.

  5. En Acción de la regla predeterminada, selecciona Rechazar.

  6. En Estado de rechazo, selecciona 404 (No encontrado).

  7. Haga clic en Siguiente paso.

Agrega más reglas:

  1. Haga clic en Agregar regla.
  2. En el campo Descripción, ingresa allow traffic from 192.0.2.0/24.
  3. En Modo, selecciona Modo básico (solo direcciones IP o rangos de IP).
  4. En el campo Coincidencia, ingresa 192.0.2.0/24.
  5. En Acción, selecciona Permitir.
  6. En el campo Prioridad, ingresa 1000.
  7. Haga clic en Listo.
  8. Haga clic en Siguiente paso.

Aplica políticas a los objetivos:

  1. Haga clic en Agregar destino.
  2. En la lista Destino, selecciona un objetivo.
  3. Haga clic en Listo.
  4. Haz clic en Crear política.

De manera opcional, habilita la Protección adaptable de Google Cloud Armor:

  1. Para habilitar la Protección adaptable, selecciona Habilitar.

Configura la política para usuarios internos:

  1. Haz clic en Crear políticas.
  2. En el campo Nombre, ingresa internal-users-policy.
  3. En el campo Descripción, ingresa Policy for internal test users.
  4. En Acción de la regla predeterminada, selecciona Rechazar.
  5. En Estado de rechazo, selecciona 502 (puerta de enlace incorrecta).
  6. Haga clic en Siguiente paso.

Agrega más reglas:

  1. Haga clic en Agregar regla.
  2. En el campo Descripción, ingresa allow traffic from 198.51.100.0/24.
  3. En Modo, selecciona Modo básico (solo direcciones IP o rangos de IP).
  4. En el campo Coincidencia, ingresa 198.51.100.0/24.
  5. En Acción, selecciona Permitir.
  6. En Solo vista previa, selecciona la casilla de verificación Habilitar.
  7. En el campo Prioridad, ingresa 1000.
  8. Haga clic en Listo.
  9. Haga clic en Siguiente paso.

Aplica políticas a los objetivos:

  1. Haga clic en Agregar destino.
  2. En la lista Destino, selecciona un objetivo.
  3. Haga clic en Listo.
  4. Haz clic en Crear política.

gcloud

  1. Crea las políticas de seguridad de 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"
    
  2. 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"
    
  3. 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"
    
  4. 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
    
  5. 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
    

Crear políticas de seguridad

Usa la Google Cloud consola o gcloud CLI para crear políticas de seguridad. En estas instrucciones, se supone que configuras políticas para un balanceador de cargas y un servicio de backend existentes. Para ver un ejemplo, consulta Crea el ejemplo.

Console

Para crear reglas y vincular una política de seguridad a un servicio de backend, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Políticas de Cloud Armor.

    Ir a Políticas de Cloud Armor

  2. Haz clic en Crear políticas.

  3. En el campo Nombre, ingresa el nombre de tu política.

  4. Ingresa una descripción de la política (opcional).

  5. En Tipo de política, elige Política de seguridad de backend o Política de seguridad perimetral.

  6. En Acción de la regla predeterminada, selecciona Permitir para permitir el acceso de forma predeterminada o selecciona Rechazar para rechazar el acceso de forma predeterminada.

    La regla predeterminada es la de menor prioridad que tiene efecto solo si no se aplica ninguna otra regla.

  7. Si configuras una regla de rechazo, selecciona un código de respuesta de rechazo. Cloud Armor devuelve este código de estado si se rechaza una solicitud.

  8. Haz clic en Próximo paso.

Agrega más reglas:

  1. Haga clic en Agregar regla.
  2. Ingresa una descripción para la regla (opcional).
  3. 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.
  4. En el campo Coincidencia, especifica las condiciones a las que se aplica la regla:

  5. En Acción, selecciona Permitir o Rechazar.

  6. Para habilitar el modo de vista previa, selecciona Habilitar. En el modo de vista previa, Cloud Armor registra el efecto de la regla sin aplicarla.

  7. Ingresa la Prioridad de la regla (de 0 a 2,147,483,646). Consulta Orden de evaluación de la regla.

  8. Haz clic en Listo.

  9. Para agregar más reglas, haz clic en Agregar regla. De lo contrario, haz clic en Siguiente paso.

Aplica políticas a los objetivos:

  1. Haga clic en Agregar destino.
  2. En la lista Destino, selecciona un objetivo.
  3. Para agregar más destinos, haz clic en Agregar destino.
  4. Haga clic en Listo.
  5. Haz clic en Crear política.

gcloud

  1. Para crear una política de seguridad de Cloud Armor, usa el comando gcloud compute security-policies create.

    Usa la marca --type para especificar CLOUD_ARMOR (backend) o CLOUD_ARMOR_EDGE (borde). Si omites la marca, Cloud Armor crea una política de seguridad de backend:

     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: El nombre de la política de seguridad
    • FILE_FORMAT: Es el formato del archivo especificado en --file-name. Especifica yaml o json.
    • DESCRIPTION: La descripción de la política de seguridad
    • FILE_NAME: Es el nombre de un archivo que contiene una exportación en formato YAML o JSON de la política de seguridad.

    Con el siguiente comando, se actualiza una política, 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
    
  2. 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 lo siguiente:

    • PRIORITY: Es la prioridad de la regla. Consulta Orden de evaluación de reglas.
    • POLICY_NAME: El nombre de tu política de seguridad
    • DESCRIPTION: una descripción de la regla
    • IP_RANGE,...: Es una lista separada por comas de rangos de direcciones IP.
    • EXPRESSION: Una expresión del lenguaje de reglas de Cloud Armor

    Por ejemplo, el siguiente comando agrega una regla para bloquear el tráfico de 192.0.2.0/24 y 198.51.100.0/24. La regla tiene una prioridad de 1,000:

     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. Consulta los atributos 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 que contiene la cadena example en el encabezado User-Agent:

     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 "evaluatePreconfiguredWaf('sqli-v422-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 "evaluatePreconfiguredWaf('sourceiplist-fastly')" \
          --action "allow"
    

Configura políticas de seguridad para balanceadores de cargas de aplicaciones externos regionales

Sigue los pasos de esta sección para configurar políticas de seguridad de Cloud Armor con alcance regional para los balanceadores de cargas de aplicaciones externos regionales.

Protege las cargas de trabajo con balanceo de cargas regional

Sigue los pasos de esta sección para configurar una política de seguridad para un servicio de backend con alcance regional:

  1. Crea una política de seguridad con alcance regional.

     gcloud compute security-policies create POLICY_NAME \
         --type=CLOUD_ARMOR \
         --region=REGION
    

    Reemplaza lo siguiente:

    • POLICY_NAME: El nombre de la política de seguridad
    • REGION: la región en la que se creará la política de seguridad
  2. Vincula la política de seguridad con alcance regional a un servicio de backend con alcance regional. 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
    

Ejemplo: Aplica una política de seguridad con alcance regional

En este ejemplo, como administrador de seguridad, deseas satisfacer un requisito de residencia que exige que todas las cargas de trabajo de backend y las reglas del WAF se implementen en una región específica. Supongamos que ya cumpliste con las siguientes condiciones:

  1. Creaste servicios de backend con carga balanceada y alcance regional en la región.
  2. Inhabilitaste las políticas de seguridad existentes con alcance global en tu implementación.
  3. 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 del WAF y otras reglas avanzadas a tu política con los siguientes comandos:

  • Agrega una regla del WAF a la política:

    gcloud compute security-policies rules create 1000 --action=deny-404 \
        --expression="evaluatePreconfiguredWaf('xss-v422-stable', ['owasp-crs-v042200-id941100-xss', 'owasp-crs-v042200-id941160-xss'])" \
        --security-policy=POLICY_NAME \
        --region=REGION
    

    Reemplaza lo siguiente:

    • POLICY_NAME: El nombre de la política de seguridad
    • REGION: La región de la política de seguridad
  • 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
    

    Reemplaza lo siguiente:

    • POLICY_NAME: El nombre de la política de seguridad
    • REGION: La región de la política de seguridad

¿Qué sigue?