Administra las políticas de seguridad de Cloud Armor

En esta página, se describe cómo administrar las políticas de seguridad de Google Cloud Armor y filtrar el tráfico entrante a tu aplicación. Las políticas de seguridad de Cloud Armor ayudan a proteger tus aplicaciones y servicios web de ataques de denegación de servicio distribuido (DSD) y otras amenazas de Internet. Para aplicar una postura de seguridad sólida, debes administrar tus políticas de seguridad a través de la creación, las pruebas y la consolidación. Para crear o ver políticas de seguridad, consulta Crea y visualiza políticas de seguridad de Cloud Armor.

Administra las políticas de seguridad

En las siguientes secciones, se describe cómo puedes enumerar, actualizar, borrar o probar tus políticas de seguridad.

Mostrar lista de políticas de seguridad

Sigue los pasos de esta sección para generar una lista de las políticas de seguridad de Cloud Armor en tu proyecto.

Console

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

    Ir a Políticas de Cloud Armor

  2. Para ver una política, en la lista de políticas, haz clic en el nombre de esa política específica.

gcloud

gcloud compute security-policies list

Por ejemplo:

gcloud compute security-policies list

Resultado:

NAME: my-policy
REGION: us-central1

Para obtener más información, consulta gcloud compute security-policies list.

Actualiza las políticas de seguridad

En los pasos de esta sección, se describe cómo puedes actualizar una política de seguridad de Cloud Armor. Puedes modificar la descripción de la política, la regla predeterminada, cambiar el servicio de backend de destino o agregar reglas.

Console

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

    Ir a Políticas de Cloud Armor

  2. Busca el nombre de la política que quieres actualizar en la lista de políticas y haz clic en Menú para esa política.

    • Para actualizar la descripción o la acción de la regla predeterminada, selecciona Editar, realiza los cambios y haz clic en Actualizar.
    • Para agregar una regla, selecciona Agregar regla y, luego, sigue los pasos en Agrega reglas a una política de seguridad.
    • Para reemplazar el servicio de backend de destino, 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, sigue estos pasos de Google Cloud CLI:

Borrar políticas de seguridad

En esta sección, se describe cómo puedes borrar una política de seguridad de Cloud Armor. Quita todos los servicios de backend de la política antes de borrarla.

Console

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

    Ir a Políticas de Cloud Armor

  2. Selecciona la casilla de verificación junto a la política que deseas borrar.

  3. 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

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.

Administra reglas de políticas de seguridad

En las siguientes secciones, se describe cómo puedes enumerar, agregar, actualizar o borrar reglas de políticas de seguridad.

Enumera las reglas en una política de seguridad

Sigue los pasos de esta sección para generar una lista de las reglas en una política de seguridad de Cloud Armor.

Console

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

    Ir a Políticas de Cloud Armor

  2. Haz clic en el nombre de la política de seguridad específica. En la página Detalles de la política, se muestran las reglas de la política en la pestaña Reglas.

gcloud

Usa el siguiente comando de gcloud para enumerar todas las reglas de una política de seguridad:

gcloud compute security-policies describe NAME \

Usa el siguiente comando de gcloud para obtener una lista de todas las reglas en una sola política de seguridad en una región especificada junto con una descripción de la política:

gcloud compute security-policies describe NAME \
  --region REGION

Usa el siguiente comando de gcloud para describir una regla:

gcloud compute security-policies rules describe PRIORITY \
    --security-policy POLICY_NAME

Por ejemplo, con el siguiente comando, se describe la regla con una prioridad de 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

Para obtener más información, consulta gcloud compute security-policies describe.

Agrega reglas a una política de seguridad

Sigue los pasos de esta sección para agregar reglas a una política de seguridad de Cloud Armor.

Console

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

    Ir a Políticas de Cloud Armor

  2. Haz clic en el nombre de la política de seguridad para abrir la página Detalles de la política.

  3. En el centro de la página, haga clic en la pestaña Reglas.

  4. Haga clic en Agregar regla.

  5. Ingresa una descripción de la regla (opcional).

  6. 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.
  7. En el campo Coincidencia, especifica las condiciones a las que se aplica la regla:

    • Modo básico: Ingresa entre 1 y 10 rangos de direcciones IP para que coincidan con la regla. Puedes agregar un máximo de 10 rangos de direcciones IP. Para conocer los límites, consulta Cuotas y límites de Cloud Armor.

    • Modo avanzado:

    • La siguiente expresión coincide con las solicitudes de la dirección IP 1.2.3.4 que contienen la cadena example en el encabezado User-Agent:

        inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')
      
    • 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('/example_path/')
        

    • La siguiente expresión coincide con las solicitudes si el encabezado user-id contiene un valor codificado en Base64 que, cuando se decodifica, contiene una cadena específica:

          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:

          evaluatePreconfiguredWaf('sqli-stable')
        

  8. En la lista Acción, selecciona Permitir o Rechazar.

  9. Si configuras una regla para rechazar, selecciona un mensaje Rechazar estado.

  10. Para habilitar el modo de vista previa para la regla, selecciona Habilitar.

  11. En el campo Prioridad, ingresa un número entero positivo.

  12. Haga clic en Add.

gcloud

Usa el comando gcloud compute security-policies rules create PRIORITY. Reemplaza PRIORITY por 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 con una prioridad de 1,000 para bloquear el tráfico de los rangos de direcciones IP 192.0.2.0/24 y 198.51.100.0/24:

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. 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('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('/example_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 "evaluatePreconfiguredWaf('sqli-stable')" \
    --action deny-403

Actualiza una sola regla en una política de seguridad

En esta sección, se describe cómo puedes actualizar una sola regla en una política de seguridad de Cloud Armor. Para actualizar varias reglas de forma atómica, consulta Actualiza varias reglas de forma atómica en una política de seguridad.

Console

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

    Ir a Políticas de Cloud Armor

  2. Haz clic en el nombre de la política de seguridad para abrir la página Detalles de la política.

  3. En el centro de la página, haga clic en la pestaña Reglas.

  4. Haz clic en Editar junto a la regla que deseas actualizar. Se abrirá la página Editar regla.

  5. Realiza los cambios y, luego, haz clic en Actualizar.

gcloud

Usa el siguiente comando para actualizar una regla. Solo puedes actualizar una política de seguridad a la vez:

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 1111 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 el comando anterior, consulta gcloud compute security-policies rules update.

Para actualizar la prioridad de una regla, usa la API de REST. Consulta securityPolicies.patchRule.

Cómo usar el creador de condiciones de coincidencia

El compilador de condiciones de coincidencia es una interfaz visual en la consola de Cloud de Confiance que te ayuda a crear expresiones complejas de reglas de Cloud Armor sin escribir código de Common Expression Language (CEL). En lugar de escribir código, puedes usar la IU estructurada del compilador para combinar condiciones y agrupar la lógica, lo que puede ayudarte a evitar errores de sintaxis y visualizar mejor la estructura de tu regla. El compilador admite listas planas y lógica anidada con hasta cinco niveles de expresiones. Usa esta herramienta cuando configures reglas para proteger backends de múltiples nubes o implementaciones híbridas, en las que es posible que debas inspeccionar atributos de solicitudes específicos antes de enrutar el tráfico.

Funciones del creador de condiciones de coincidencia

El compilador de condiciones de coincidencia incluye las siguientes funciones:

  • Lógica y anidación: Combina varias condiciones con los operadores AND y OR. El compilador admite el agrupamiento y el anidamiento de hasta cinco expresiones.
  • Transformaciones de cadenas: Para los atributos basados en cadenas (como request.path o request.headers), aplica transformaciones para normalizar los datos antes de la evaluación. Las transformaciones compatibles incluyen las siguientes:
    • Minúsculas y mayúsculas
    • Decodificación en Base64
    • Decodificar URL y Decodificar URL (Unicode)
    • Convertir de UTF-8 a Unicode
  • Análisis bidireccional: Cambia entre el Creador de condiciones de coincidencia visual y el Editor de condiciones de coincidencia de texto sin formato. La IU analiza el código CEL sin procesar en bloques visuales de forma automática.
  • Compatibilidad con funciones: El compilador proporciona controles de IU para expresiones basadas en funciones, como reglas de WAF preconfiguradas, grupos de direcciones y Threat Intelligence.

Limitaciones

El creador de condiciones de coincidencia es la interfaz predeterminada para la creación de reglas avanzadas. Si una expresión contiene lógica no admitida (como macros desconocidas), el compilador se inhabilita. En estos casos, usa el texto sin procesar en el editor de condiciones de coincidencia para editar la regla.

Además, la disponibilidad de ciertas expresiones en el compilador depende del nivel de Google Cloud Armor Enterprise de tu proyecto y del tipo de política de seguridad.

Actualiza varias reglas de forma atómica en una política de seguridad

Puedes usar la función de actualización atómica para aplicar cambios a varias reglas en una sola actualización. Las actualizaciones de una sola regla pueden causar comportamientos no deseados, como errores, ya que las reglas antiguas y las nuevas pueden superponerse 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 y, luego, cambia la política de seguridad para los servicios de backend.

gcloud

  1. 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: evaluatePreconfiguredWaf('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
    
  2. Usa un editor de texto para modificar la política. Por ejemplo, puedes modificar las prioridades de las reglas existentes y agregar una regla:

        description: my description
        fingerprint: PWfLGDWQDLY=
        id: '123'
        name: my-policy
        rules:
        - action: deny(404)
          description: my-rule-1
          match:
            expr:
              expression: evaluatePreconfiguredWaf('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
    
  3. Crea una nueva política de seguridad de 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
    
  4. 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 ""
    
  5. 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
    
  6. 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 los pasos que se indican en esta sección para borrar reglas de una política de seguridad de Cloud Armor.

Console

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

    Ir a Políticas de Cloud Armor

  2. Haz clic en el nombre de la política de seguridad para abrir la página Detalles de la política.

  3. 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.

  4. Haz clic en Borrar.

gcloud

Usa el siguiente comando para quitar una regla. 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

Cómo adjuntar y quitar políticas de seguridad

En las siguientes secciones, se describe cómo puedes adjuntar y quitar políticas de seguridad.

Vincula una política de seguridad a un servicio de backend

Sigue los pasos de esta sección para vincular una política de seguridad de Cloud Armor a un servicio de backend. Puedes adjuntar una política de seguridad a varios servicios de backend, pero un servicio de backend solo puede tener una de cada tipo de política de seguridad adjunta.

Console

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

    Ir a Políticas de Cloud Armor

  2. Haz clic en el nombre de la política de seguridad para abrir la página Detalles de la política.

  3. En el medio de la página, haz clic en la pestaña Destinos.

  4. Haz clic en Aplicar política a un destino nuevo.

  5. Haga clic en Agregar destino.

  6. 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

Sigue los pasos de esta sección para quitar una política de seguridad de Cloud Armor de un servicio de backend.

Console

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

    Ir a Políticas de Cloud Armor

  2. Haz clic en el nombre de la política de seguridad para abrir la página Detalles de la política.

  3. En el medio de la página, haz clic en la pestaña Destinos.

  4. Selecciona el servicio de backend de destino del que deseas quitar la política.

  5. Haz clic en Quitar.

  6. 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 ""