Usa etiquetas para crear políticas

En esta página, se describe cómo adjuntar etiquetas de Resource Manager a las políticas de proxy web seguro. Las etiquetas de Resource Manager son etiquetas que puedes adjuntar a varios Google Cloud recursos, como tus instancias de máquina virtual (VM). Puedes usar etiquetas para aplicar controles de acceso condicionales en toda tu red con las etiquetas organizativas existentes.

Con estas etiquetas, puedes realizar las siguientes acciones:

  • Segmenta las cargas de trabajo: Puedes identificar de forma única diferentes entornos, como production o development, y tipos de servicios, como frontend o database.

  • Centraliza el control de acceso: Puedes basar tus políticas del Proxy web seguro en estas etiquetas. Por ejemplo, puedes crear una regla de política que diga: "Solo el tráfico que se origina en recursos que tienen la etiqueta tag segment=production puede acceder a un conjunto específico de URLs".

Esta página te muestra cómo hacer lo siguiente:

Antes de comenzar

Crea una instancia del Proxy web seguro con una política vacía

Para crear una instancia del Proxy web seguro, primero debes crear una política de seguridad vacía y, luego, crear un proxy web que use la política.

Crea una política de seguridad vacía

Console

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

    Ir a Políticas de SWP

  2. Haz clic en Crear una política.

  3. En el campo Nombre, ingresa un nombre para la política, como myswppolicy.

  4. En el campo Descripción, ingresa una descripción para la política, como My new swp policy.

  5. En Regiones, selecciona la región en la que deseas crear la política, como us-central1.

  6. Haz clic en Crear.

Cloud Shell

  1. Usa tu editor de texto preferido para crear un archivo policy.yaml.

  2. Agrega lo siguiente al archivo policy.yaml que creaste:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    Reemplaza lo siguiente:

    • PROJECT_NAME: Nombre de tu proyecto

    • REGION: Es la región en la que se crea tu política, como us-central1.

    • POLICY_NAME: Nombre de la política

    • POLICY_DESCRIPTION: Descripción de tu política

  3. Importa la política de seguridad con el comando gcloud network-security gateway-security-policies import:

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

Crea un proxy web

Console

  1. En la consola de Google Cloud , ve a la página Proxies web.

    Ir a Proxies web

  2. Haz clic en Crear un proxy web seguro.

  3. En el campo Nombre, ingresa un nombre para el proxy web, como myswp.

  4. En el campo Descripción, ingresa una descripción para el proxy web, como My new swp.

  5. En Modo de enrutamiento, selecciona la opción Explícito.

  6. En Regiones, selecciona la región en la que deseas crear el proxy web, como us-central1.

  7. En Red, selecciona la red en la que deseas crear el proxy web.

  8. En Subred, selecciona la subred de VPC que creaste anteriormente como parte de los pasos de configuración inicial.

  9. Opcional: En el campo Dirección IP del proxy web, ingresa la dirección IP del proxy web seguro.

    Puedes ingresar una dirección IP del rango de direcciones IP del proxy web seguro que se encuentra en la subred que creaste en el paso anterior. Si no ingresas la dirección IP, tu instancia de Secure Web Proxy elegirá automáticamente una dirección IP de la subred seleccionada.

  10. En Certificado, selecciona el certificado que deseas usar para crear el proxy web.

  11. En Política, selecciona la política que creaste para asociar el proxy web.

  12. Haz clic en Crear.

Cloud Shell

  1. Usa tu editor de texto preferido para crear un archivo gateway.yaml.

  2. Agrega lo siguiente al archivo gateway.yaml.

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    Reemplaza lo siguiente:

    • GATEWAY_NAME: Nombre de esta instancia de Secure Web Proxy

    • GATEWAY_PORT_NUMBERS: Lista de números de puerto para esta puerta de enlace, como [80,443]

    • CERTIFICATE_URLS: Lista de URLs de certificados SSL

    • SUBNETWORK: Subred de VPC que creaste anteriormente como parte de los pasos de configuración inicial

    • GATEWAY_IP_ADDRESS: Es una lista opcional de direcciones IP para tus instancias de Secure Web Proxy dentro de las subredes de proxy que creaste anteriormente en los pasos de configuración inicial.

      Si decides no enumerar direcciones IP, omite el campo para permitir que el proxy web elija una dirección IP por ti.

  3. Crea la instancia del Proxy web seguro con el comando gcloud network-services gateways import:

    gcloud network-services gateways import GATEWAY_NAME \
        --source=gateway.yaml \
        --location=REGION
    

Prueba la conectividad

Para probar la conectividad, usa el comando curl desde cualquier instancia de máquina virtual (VM) dentro de tu red de nube privada virtual (VPC):

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure

Si todo funciona correctamente, tu instancia del proxy web seguro devolverá un código de estado 403 Forbidden. Este error confirma lo siguiente:

  • La instancia del Proxy web seguro se implementó correctamente y recibe tráfico de forma activa.

  • La política de Proxy web seguro aplica correctamente la postura de seguridad predeterminada de rechazar todo el tráfico hasta que definas reglas allow específicas en las próximas secciones.

Crea y adjunta etiquetas de Resource Manager

  1. Crea claves y valores de etiquetas seguras

    Ejemplo: Para crear una etiqueta para entornos restringidos, sigue estos pasos:

    1. Crea la clave de etiqueta (access-level) con el comando gcloud resource-manager tags keys create y el propósito establecido en GCE_FIREWALL.

    2. Recupera el ID de la clave de etiqueta desde el resultado del comando de creación o con el comando gcloud resource-manager tags keys list. Necesitas este ID para vincular los valores de etiqueta a esta clave de etiqueta específica.

    3. Crea el valor de la etiqueta (restricted) con el comando gcloud resource-manager tags values create y especifica el ID de la clave de la etiqueta como el elemento principal.

    # Create the tag key
    # The output provides a unique ID, such as "tagKeys/1234567890"
    
    gcloud resource-manager tags keys create "access-level" \
        --parent="organizations/1234567890" \
        --purpose="GCE_FIREWALL" \
        --purpose-values="execution_env=ANS"
    
    # Create the tag value and connect it to the key
    # The "--parent" flag identifies to which key this value belongs
    
    gcloud resource-manager tags values create "restricted" \
        --parent="tagKeys/1234567890"
    
  2. Cómo adjuntar etiquetas a instancias de VM

    Cuando adjuntas estas etiquetas, se asocia el tráfico saliente de tus instancias de VM con una identidad de etiqueta específica, lo que permite que el proxy reconozca la carga de trabajo y aplique las reglas de tu política de seguridad.

    Ejemplo: Supongamos que tienes una instancia de VM llamada internal-tool. Puedes adjuntar el valor de etiqueta restricted a internal-tool con el comando gcloud resource-manager tags bindings create. Esta asignación de etiquetas permite que tu proxy identifique el tráfico que se origina en la instancia de VM internal-tool.

    # Attach the "restricted" tag to a specific VM instance
    
    
    gcloud resource-manager tags bindings create \
        --parent="//[compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool](https://compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool)" \
        --tag-value="tagValues/987654321"
    

Crea una regla del Proxy web seguro

Console

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

    Ir a Políticas de SWP

  2. Haz clic en el nombre de tu política, como myswppolicy.

  3. Haz clic en Agregar regla.

  4. Para cada regla, haz lo siguiente:

    1. En Prioridad, ingresa un orden de evaluación numérico para la regla. Las reglas se evalúan de mayor a menor prioridad, en la que 0 es la prioridad más alta.

    2. En el campo Nombre, ingresa un nombre para la regla.

    3. En el campo Descripción, ingresa una descripción para la regla.

    4. En Acción, selecciona una de las siguientes opciones:

      • Permitir: Para permitir las solicitudes de conexión que coinciden con la regla
      • Rechazar: Para rechazar las solicitudes de conexión que coinciden con la regla.
    5. En el campo Estado, selecciona una de las siguientes opciones para la aplicación de la regla:

      • Habilitada: Para aplicar la regla en tu instancia de Proxy web seguro
      • Inhabilitado: Para no aplicar la regla en tu instancia de Proxy web seguro
    6. En la sección Session match, especifica el ID único de la etiqueta que creaste en la sección anterior. Por ejemplo:

      sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"
      

      Para obtener más información sobre la sintaxis de SessionMatcher, consulta la referencia del lenguaje del comparador de CEL.

    7. En la sección Coincidencia de la aplicación, especifica los criterios para que coincida la solicitud.

    8. Haz clic en Agregar regla.

Cloud Shell

  1. Usa tu editor de texto preferido para crear el archivo rule.yaml.

  2. Para permitir el acceso a una URL desde la etiqueta requerida, agrega lo siguiente al archivo rule.yaml:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

    Reemplaza lo siguiente:

    • RULE_NAME: Nombre de esta regla
    • RULE_DESCRIPTION: Descripción de la regla
    • RULE_PRIORITY: Es la prioridad de esta regla. Un número más bajo corresponde a una prioridad más alta.
    • CEL_EXPRESSION: Es una expresión de Common Expression Language (CEL). Para obtener más información, consulta la referencia del lenguaje del comparador de CEL.

    Por ejemplo, para permitir el acceso a example.com desde la etiqueta obligatoria, agrega la siguiente línea sessionMatcher al archivo YAML:

    sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"
    

    Reemplaza TAG_VALUE por la etiqueta que deseas permitir. Asegúrate de que la etiqueta siga el formato del identificador de recurso numérico, por ejemplo, tagValues/567890123456.

  3. Importa las reglas que creaste con el comando gcloud network-security gateway-security-policies rules import:

    gcloud network-security gateway-security-policies rules import RULE_NAME \
        --source=RULE_FILE.yaml \
        --location=REGION \
        --gateway-security-policy=POLICY_NAME
    

Prueba la configuración de la política

Puedes volver a probar la conectividad para validar que tu política de proxy web seguro, que se basa en etiquetas de Resource Manager para la identidad, funcione según lo previsto.

Para probar la conectividad, usa el comando curl desde cualquier VM asociada con la etiqueta TAG_VALUE adecuada.

curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure

Reemplaza IPv4_ADDRESS por la dirección IPv4 de tu instancia de Proxy web seguro.

Si todo funciona correctamente, recibirás un código de estado 200 OK o 403 Forbidden. Estas respuestas confirman los siguientes resultados clave:

  • Éxito basado en etiquetas: Un código de estado 200 OK valida que el tráfico de una VM con la etiqueta correcta de Resource Manager adjunta coincida con la regla de política y se permita a través del proxy. Esta coincidencia verificada genera una conexión exitosa.

  • Denegación basada en etiquetas: Un código de estado 403 Forbidden verifica que la política deniegue correctamente el acceso al tráfico de una VM que no tenga la etiqueta especificada o que tenga una etiqueta incorrecta. Esta aplicación demuestra que la segmentación y la aplicación basadas en etiquetas funcionan según lo previsto.

¿Qué sigue?