Configura políticas de seguridad de Google Cloud Armor

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. 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, asegúrate de estar familiarizado con los conceptos del balanceo de cargas de HTTP(S).

Configura los permisos de IAM para las políticas de seguridad de Google Cloud Armor

Las siguientes operaciones requieren la función de administración de identidades y accesos (IAM) Administrador de seguridad de Compute (roles/compute.securityAdmin):

  • Crea, modifica, actualiza y borra una política de seguridad de Google Cloud Armor
  • Métodos de la API permitidos:
    • 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
  • Métodos de la API permitidos:
    • BackendServices setSecurityPolicy

Los usuarios con las funciones de administrador de seguridad y administrador de redes pueden ver las políticas de seguridad de Google Cloud Armor mediante los métodos de la 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 el balanceo de cargas HTTP(S)

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 a balanceadores de cargas HTTP(S) externos:

  1. Crea una política de seguridad de Google Cloud Armor.
  2. Agrega reglas a la política de seguridad en función de 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 cargas HTTP(S) externo para el que deseas controlar el acceso.
  4. 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.

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

Console

Configura la política para usuarios externos:

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

  2. En la página Políticas, haz clic en Crear política.

  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. Haga clic en Crear política.

Configura la política para usuarios internos:

  1. En la página Políticas, haz clic en Crear política.
  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 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"
    
  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
    

Configura políticas de seguridad para GKE

Usa el siguiente procedimiento de alto nivel a fin de configurar las políticas de seguridad de Google Cloud Armor para GKE:

  1. Configura una política de seguridad de Google Cloud Armor con reglas mediante la herramienta de línea de comandos de gcloud o la API de REST.
  2. Crea un recurso Ingress en GKE.
  3. Recupera la configuración del recurso de Ingress para determinar qué servicios de backend están asociados con el recurso:

    kubectl describe ingress INGRESS_NAME
    

    Los valores en el campo backends de la sección Annotations del resultado son los nombres de los servicios de backend usados.

  4. Usa la API de REST o la herramienta de línea de comandos de gcloud para vincular la política de seguridad a cada uno de los backends mencionados en el paso anterior.

Si borras y vuelves a crear un recurso Ingress de Kubernetes, debes volver a aplicar la política de seguridad al nuevo servicio o servicios de backend. Para obtener más información, consulta Funciones de Ingress.

Crea reglas, expresiones y políticas de seguridad

Puedes crear reglas, expresiones y políticas de seguridad de Google Cloud Armor con Google Cloud Console, la herramienta de línea de comandos de gcloud o la API de REST.

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 string Godzilla 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:

    request.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 ataques de SQLi:

    evaluatePreconfiguredExpr('sqli-stable')
    

Para las siguientes instrucciones, 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 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:

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

  2. En la página Políticas, haz clic en Crear política.

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

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

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

  6. Si crea una regla Denegar, seleccione un mensaje Rechazar estado. Este es el mensaje de error que muestra Google Cloud Armor si un usuario sin acceso intenta acceder.

  7. Sin importar el tipo de regla que crees, haz clic en Siguiente 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 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.
  5. En Acción, selecciona Permitir o Rechazar para permitir o denegar el tráfico si la regla coincide.

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

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

  8. Haga clic en Listo.

  9. 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:

  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 nueva política de seguridad de Google Cloud Armor, usa el comando gcloud compute security-policies create. Reemplaza NAME y DESCRIPTION por el nombre y la descripción de la política de seguridad:

    gcloud compute security-policies create NAME \
       [--file-format=FILE_FORMAT | --description=DESCRIPTION] \
       [--file-name=FILE_NAME]
    

    Por ejemplo:

    gcloud compute security-policies create my-policy \
        --description "block bad traffic"
    
  2. Para agregar reglas a una política de seguridad, usa el comando gcloud compute security-policies rules create PRIORITY. Reemplaza PRIORITY 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 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('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"
    

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

  1. 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
       expression-set-1-id-1
       expression-set-1-id-2
    expression-set-2
       alias-1
       RULE_ID
       expression-set-2-id-1
       expression-set-2-id-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
        owasp-crs-v030001-id942110-sqli
        owasp-crs-v030001-id942120-sqli
        …
    xss-canary
        RULE_ID
        owasp-crs-v030001-id941110-xss
        owasp-crs-v030001-id941120-xss
    …
    sourceiplist-fastly
    sourceiplist-cloudflare
    sourceiplist-imperva
    

Enumera las 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.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

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

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

  2. 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 la herramienta de línea de comandos de gcloud:

Exporta políticas de seguridad

Puedes exportar una política de seguridad de Google Cloud Armor como un archivo YAML o JSON mediante la herramienta de línea de comandos de gcloud. Exportar una política te permite recuperar una copia de esta que puedes modificar o guardar en el control de origen.

gcloud

  1. 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 archivo my-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
      
  2. 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 la herramienta de línea de comandos de gcloud. 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.

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

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

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

  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

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 solo puede tener una política de seguridad vinculada.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

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

  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

Usa el comando gcloud compute backend-services:

gcloud compute backend-services update my-backend \
    --security-policy my-policy

Quita una política de seguridad de un servicio de backend

Use estas instrucciones para quitar una política de seguridad de Google Cloud Armor de un servicio de backend.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

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

  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

Usa el comando gcloud compute backend-services:

gcloud compute backend-services update my-backend \
    --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.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

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

  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 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 string Godzilla 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:

        request.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')
        
  8. En Acción, selecciona Permitir o Rechazar.

  9. Si crea una regla denegar, seleccione un mensaje Rechazar estado.

  10. Si deseas habilitar el modo de vista previa para la regla, selecciona la casilla de verificación Habilitar.

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

  12. 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 "request.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.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

  2. 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 muestran 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

Salida:

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.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

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

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

  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: 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
    
  2. 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
    
  3. 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 \
        --description "allow-listed traffic" \
        --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 estas instrucciones para borrar reglas de una política de seguridad de Google Cloud Armor.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

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

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

Habilita el registro de solicitudes HTTP(S)

Los registros de Google Cloud Armor para el nombre, la prioridad de la regla de coincidencias, la acción asociada y la información relacionada de la política de seguridad se registran como parte del registro para el balanceo de cargas de HTTP(S). El registro para los servicios de backend nuevos está inhabilitado de forma predeterminada, por lo que debes habilitar el registro de balanceo de cargas de HTTP(S) a fin de asentar la información de registro completa de Google Cloud Armor.

Mediante el registro de balanceo de cargas de HTTP(S), puedes ver en detalle las solicitudes HTTP(S) permitidas y rechazadas. Por ejemplo, para ver las solicitudes rechazadas, puedes usar filtros como jsonPayload.enforcedSecurityPolicy.outcome="DENY" o jsonPayload.statusDetails="denied_by_security_policy".

Para habilitar el registro de balanceo de cargas de HTTP(S), consulta Registro y supervisión de balanceo de cargas de HTTP(S).

Visualizar registros

Puedes ver los registros de una política de seguridad de Google Cloud Armor solo en Google Cloud Console.

Console

  1. En Google Cloud Console, ve a la página Seguridad de red.

    Ir a la página Seguridad de red

  2. En la página Políticas de seguridad, en la fila de una política de seguridad, haz clic en Menú para la política cuyos registros deseas ver.

  3. Selecciona Ver registros.

¿Qué sigue?