Ejemplos de políticas de seguridad

En esta página se describen ejemplos de configuraciones de políticas de seguridad para diferentes tipos de balanceadores de carga y políticas de seguridad.

Configurar políticas de seguridad para balanceadores de carga de aplicaciones externos

Estos son los pasos generales para configurar políticas de seguridad de Google Cloud Armor que habiliten reglas para permitir o denegar el tráfico al balanceador de carga de aplicaciones externo global o al balanceador de carga de aplicaciones clásico:

  1. Crea una política de seguridad de Cloud Armor.
  2. Añade reglas a la política de seguridad basadas en listas de direcciones IP, expresiones personalizadas o conjuntos de expresiones preconfigurados.
  3. Adjunta la política de seguridad a un servicio de backend del balanceador de carga de aplicación externo global o del balanceador de carga de aplicación clásico al que quieras controlar el acceso.
  4. Actualice la política de seguridad según sea necesario.

En el siguiente ejemplo, se crean dos políticas de seguridad de Cloud Armor y se aplican a diferentes servicios de backend.

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

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

  • mobile-clients-policy se aplica a los usuarios externos de tus servicios de games.
  • internal-users-policy se aplica al equipo test-network de tu organización.

Aplicas mobile-clients-policy al servicio games, cuyo servicio de backend se llama games, y aplicas internal-users-policy al servicio interno test para el equipo de pruebas, cuyo servicio de backend correspondiente se llama test-network.

Si las instancias de backend de un servicio de backend se encuentran en varias regiones, la política de seguridad de Cloud Armor asociada al servicio se aplica a las instancias de 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 de us-central, así como a las instancias 5 y 6 de us-east.

Crear el ejemplo

Sigue estas instrucciones para crear la configuración de ejemplo que se describe en la sección anterior.

Consola

Configura la política de seguridad para los usuarios externos:

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

    Ir a las políticas de Google Cloud Armor

  2. Haz clic en Crear políticas.

  3. En el campo Name (Nombre), introduce mobile-clients-policy.

  4. En el campo Description (Descripción), introduce Policy for external users.

  5. En Acción de regla predeterminada, selecciona Denegar.

  6. En Estado de denegación, selecciona 404 (No encontrado).

  7. Haz clic en Siguiente paso.

Añade más reglas:

  1. Haz clic en Añadir regla.
  2. En el campo Description (Descripción), introduce allow traffic from 192.0.2.0/24.
  3. En Modo, selecciona Modo básico (solo direcciones o intervalos de IP).
  4. En el campo Match, introduce 192.0.2.0/24.
  5. En Acción, selecciona Permitir.
  6. En el campo Priority (Prioridad), introduce 1000.
  7. Haz clic en Listo.
  8. Haz clic en Siguiente paso.

Aplica la política a los destinos:

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

Si quieres, habilita Adaptive Protection de Google Cloud Armor:

  1. Para habilitar Protección adaptativa, marca la casilla Habilitar.

Configura la política de seguridad para los usuarios internos:

  1. Haz clic en Crear políticas.
  2. En el campo Name (Nombre), introduce internal-users-policy.
  3. En el campo Description (Descripción), introduce Policy for internal test users.
  4. En Acción de regla predeterminada, selecciona Denegar.
  5. En Estado de denegación, selecciona 502 (Bad Gateway).
  6. Haz clic en Siguiente paso.

Añade más reglas:

  1. Haz clic en Añadir regla.
  2. En el campo Description (Descripción), introduce allow traffic from 198.51.100.0/24.
  3. En Modo, selecciona Modo básico (solo direcciones o intervalos de IP).
  4. En el campo Match, introduce 198.51.100.0/24.
  5. En Acción, selecciona Permitir.
  6. Para Solo vista previa, selecciona la casilla Habilitar.
  7. En el campo Priority (Prioridad), introduce 1000.
  8. Haz clic en Listo.
  9. Haz clic en Siguiente paso.

Aplica la política a los destinos:

  1. Haga clic en Añadir objetivo.
  2. En la lista Destino, selecciona un destino.
  3. Haz 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 denegar 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. Añade 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. Si quieres, habilita Adaptive Protection:

    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

Puedes usar la Google Cloud consola o la CLI de gcloud para crear políticas de seguridad. En las instrucciones de esta sección se presupone que vas a configurar políticas de seguridad para aplicarlas a un balanceador de carga de aplicación externo global o a un balanceador de carga de aplicación clásico y un servicio de backend. Para ver un ejemplo de cómo rellenar los campos, consulta la sección Crear el ejemplo.

Consola

Crea políticas y reglas de seguridad de Cloud Armor y vincula una política de seguridad a un servicio de backend:

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

    Ir a las políticas de Google Cloud Armor

  2. Haz clic en Crear políticas.

  3. En el campo Name (Nombre), introduce el nombre de tu política.

  4. Opcional: Escribe una descripción de la política.

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

  6. En Acción de regla predeterminada, selecciona Permitir para una regla predeterminada que permita el acceso o Denegar para una regla predeterminada que impida el acceso a una dirección IP o a un intervalo de direcciones IP.

    La regla predeterminada es la regla de prioridad más baja que solo se aplica si no se aplica ninguna otra regla.

  7. Si configuras una regla de Denegar, selecciona un mensaje de Estado de denegación. Este es el mensaje de error que muestra Cloud Armor si un usuario sin acceso intenta obtenerlo.

  8. Independientemente del tipo de regla que estés configurando, haz clic en Siguiente paso.

Añade más reglas:

  1. Haz clic en Añadir regla.
  2. Opcional: Escribe una descripción de la regla.
  3. Selecciona el modo:

    • Modo básico: permite o deniega el tráfico en función de las direcciones o los intervalos de IP.
    • Modo avanzado: permite o deniega el tráfico en función de expresiones de reglas.
  4. En el campo Concordancia, especifique las condiciones en las que se aplica la regla:

    • Modo básico: introduce las direcciones IP o los intervalos de IP que quieras que coincidan con la regla.
    • Modo avanzado: introduce una expresión o subexpresiones para evaluarlas en las solicitudes entrantes. Para obtener información sobre cómo escribir las expresiones, consulta el artículo Configurar atributos de idioma de reglas personalizadas.
  5. En Acción, selecciona Permitir o Denegar para permitir o denegar el tráfico si la regla coincide.

  6. Para habilitar el modo de vista previa, selecciona la casilla Habilitar. En el modo de vista previa, puedes ver cómo se comporta la regla, pero no está habilitada.

  7. Introduce la prioridad de la regla. Puede ser cualquier número entero positivo entre 0 y 2.147.483.646, ambos incluidos. Para obtener más información sobre el orden de evaluación, consulta Orden de evaluación de las reglas.

  8. Haz clic en Listo.

  9. Para añadir más reglas, haga clic en Añadir regla y repita los pasos anteriores. De lo contrario, haz clic en Siguiente paso.

Aplica la política a los destinos:

  1. Haga clic en Añadir objetivo.
  2. En la lista Destino, selecciona un destino.
  3. Para añadir más objetivos, haga clic en Añadir objetivo.
  4. Haz 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.

    En el campo type, usa CLOUD_ARMOR para crear una política de seguridad de backend o CLOUD_ARMOR_EDGE para crear una política de seguridad de edge. La marca type 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]
    
    

    Haz los cambios siguientes:

    • NAME: el nombre de la política de seguridad
    • DESCRIPTION: la descripción de la política de seguridad

    El siguiente comando actualiza una política que has creado anteriormente, activa el análisis JSON y cambia el nivel de registro a VERBOSE:

    gcloud compute security-policies update my-policy \
        --json-parsing=STANDARD \
        --log-level=VERBOSE
    
  2. Para añadir 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]
    

    Sustituye 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 el artículo Orden de evaluación de las reglas.

    Por ejemplo, el siguiente comando añade una regla para bloquear el tráfico de los intervalos de direcciones IP 192.0.2.0/24 y 198.51.100.0/24. La regla tiene la prioridad 1000 y es una regla de 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"
    

    Si se añade la marca --preview, la regla se añade a la política, pero no se aplica y solo se registra el tráfico que la active.

    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 el artículo Configurar atributos de idioma de reglas personalizadas. El siguiente comando añade una regla para permitir el tráfico de la dirección IP 1.2.3.4 y 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'"
    

    El siguiente comando añade una regla para bloquear las 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"
    

    El siguiente comando añade una regla para bloquear las 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"
    

    El siguiente comando añade una regla para bloquear las solicitudes de la región AU que no estén en el intervalo de IPs 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"
    

    El siguiente comando añade una regla para bloquear las solicitudes con un URI que coincida 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"
    

    El siguiente comando añade una regla para bloquear las solicitudes si el valor decodificado en Base64 del encabezado 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"
    

    El siguiente comando añade una regla que usa un conjunto de expresiones preconfigurado para mitigar los ataques de inyección de SQL:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "evaluatePreconfiguredWaf('sqli-stable')" \
        --action "deny-403"
    

    El siguiente comando añade una regla que usa una expresión preconfigurada para permitir el acceso desde todas las direcciones IP de una lista de direcciones IP con nombre:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "evaluatePreconfiguredWaf('sourceiplist-fastly')" \
        --action "allow"
    

Configurar políticas de seguridad para balanceadores de carga de aplicaciones externos regionales

En esta sección se incluye información sobre cómo configurar políticas de seguridad de Cloud Armor con ámbito regional para balanceadores de carga de aplicaciones externos regionales.

Proteger cargas de trabajo con balanceo de carga regional

Sigue estos pasos para configurar una política de seguridad que proteja tu servicio de backend con ámbito regional:

  1. Crea una política de seguridad de ámbito regional.

    gcloud compute security-policies create POLICY_NAME \
       --type=CLOUD_ARMOR \
       --region=REGION
    
  2. Adjunta la política de seguridad de ámbito regional a un servicio backend de ámbito regional. Sustituye BACKEND_NAME por el nombre del servicio backend con ámbito regional que ya tengas.

    gcloud compute backend-services update BACKEND_NAME \
       --security-policy=POLICY_NAME \
       --region=REGION
    

Aplicar una política de seguridad de Cloud Armor de ámbito regional

Supongamos que eres un administrador de seguridad que quiere cumplir el requisito de residencia de que todas tus cargas de trabajo de backend y reglas de WAF se implementen en una región específica. Supongamos que ya ha hecho lo siguiente:

  1. Has creado servicios backend con balanceo de carga y ámbito regional en la región.
  2. Has inhabilitado las políticas de seguridad de ámbito global que había en tu implementación.
  3. Has creado y adjuntado una política de seguridad de ámbito regional en la misma región (como en la sección anterior).

Puede añadir reglas de WAF y otras reglas avanzadas a su política y, al mismo tiempo, cumplir el requisito mediante los siguientes comandos de ejemplo:

  • Añade una regla de WAF a la política:

    gcloud compute security-policies rules create 1000 --action=deny-404 \
      --expression="evaluatePreconfiguredWaf('xss-v33-stable', ['owasp-crs-v030301-id941100-xss', 'owasp-crs-v030301-id941160-xss'])" \
      --security-policy=POLICY_NAME \
      --region=REGION
    
  • Para añadir una regla avanzada a la política, sigue estos pasos:

    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
    
  • Añade una regla de limitación 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
    

Siguientes pasos