Usa cuentas de servicio para crear políticas

Una cuenta de servicio es una Cuenta de Google especial no humana que las aplicaciones, los procesos automatizados o las cargas de trabajo de procesamiento, como una instancia de Compute Engine, usan para realizar llamadas autorizadas a la API. A diferencia de las cuentas de usuario, una cuenta de servicio se identifica únicamente por su dirección de correo electrónico única.

Las aplicaciones usan cuentas de servicio para autenticarse y obtener acceso a los recursos deGoogle Cloud . Cuando una aplicación se autentica con una cuenta de servicio, obtiene acceso a los recursos para los que se le asignaron permisos explícitos de Identity and Access Management a la cuenta de servicio. Esto proporciona un método seguro, auditable y centralizado para la autorización de máquina a máquina.

En el caso de Secure Web Proxy, las cuentas de servicio desempeñan un papel fundamental en la autorización y la aplicación de políticas. Si usas una cuenta de servicio para identificar la fuente de tráfico de una carga de trabajo, puedes crear políticas detalladas de Secure Web Proxy que permitan o rechacen específicamente el tráfico web según la identidad de la aplicación, en lugar de solo su dirección IP.

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

Antes de comenzar

  • Completa los pasos de configuración inicial.

  • Solicita a un administrador de la organización que te otorgue acceso a una cuenta de servicio.

  • Verifica que tengas instalada la versión 406.0.0 o posterior de Google Cloud CLI:

    gcloud version | head -n1
    

    Si tienes instalada una versión anterior de gcloud CLI, actualízala:

    gcloud components update --version=406.0.0
    

Crea una instancia de Secure Web Proxy con una política vacía

Para crear una instancia de Secure Web Proxy, 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 una de las siguientes opciones:

    • Explícito: Implementa tu instancia de Secure Web Proxy en modo de proxy explícito.
    • Próximo salto: Implementa tu instancia de Secure Web Proxy en modo de próximo salto.
  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 durante la configuración inicial.

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

    Puedes ingresar una dirección IP del rango de direcciones IP de Secure Web Proxy 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
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    Reemplaza lo siguiente:

    • GATEWAY_NAME: Nombre de esta instancia de Secure Web Proxy

    • GATEWAY_PORT_NUMBERS: Es una lista de números de puerto para esta puerta de enlace, como [80,443].

    • CERTIFICATE_URLS: Lista de URLs de certificados SSL

    • SUBNETWORK: La subred de VPC que creaste durante la configuración inicial

    • ROUTING_MODE: Especifica el modo de enrutamiento del proxy web requerido:

      • EXPLICIT_ROUTING_MODE: Implementa tu instancia de Secure Web Proxy en modo de proxy explícito
      • NEXT_HOP_ROUTING_MODE: Implementa tu instancia de Secure Web Proxy en modo de próximo salto.
    • GATEWAY_IP_ADDRESS: Es una lista opcional de direcciones IP para tus instancias de Secure Web Proxy dentro de las subredes del proxy que creaste anteriormente en los pasos de configuración inicial.

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

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

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

Probar 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 de Secure Web Proxy devolverá un código de estado 403 Forbidden. Este error confirma lo siguiente:

  • La instancia de Secure Web Proxy se implementó correctamente y recibe tráfico de forma activa.

  • La política de Secure Web Proxy 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 una cuenta de servicio y otorga roles de IAM

  1. Crea una cuenta de servicio: Usa el comando gcloud iam service-accounts create para crear una cuenta de servicio llamada my-swp-sa en tu proyecto Google Cloud.

    gcloud iam service-accounts create my-swp-sa \
        --display-name="Secure Web Proxy service account" \
        --description="Service account for Secure Web Proxy instances"
  2. Otorga roles de IAM a la cuenta de servicio: Usa el comando gcloud projects add-iam-policy-binding para otorgar los roles de IAM necesarios a la cuenta de servicio para que pueda administrar o usar recursos en tu proyecto Google Cloud .

    Por ejemplo, para permitir que la cuenta de servicio use recursos de red, otórgale el rol de usuario de red de Compute (roles/compute.networkUser).

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:my-swp-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.networkUser"

    Reemplaza PROJECT_ID por el ID de tu proyecto deGoogle Cloud .

Crea una regla de Secure Web Proxy

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 la política que creaste anteriormente, como myswppolicy.

  3. Haz clic en Agregar regla.

  4. Para cada regla, haz lo siguiente:

    1. En el campo 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 Secure Web Proxy
      • Inhabilitado: Para no aplicar la regla en tu instancia de Secure Web Proxy
    6. En la sección Session Match, especifica la dirección de correo electrónico de la cuenta de servicio que creaste anteriormente. Por ejemplo:

        sessionMatcher: "source.matchServiceAccount(SERVICE_ACCOUNT) && 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 Application Match, especifica los criterios para correlacionar la solicitud.

    8. Haz clic en Agregar regla.

  5. Para agregar otra regla, 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 cuenta de servicio adecuada, agrega lo siguiente al archivo rule.yaml que creaste:

    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 el recurso con la cuenta de servicio requerida, agrega lo siguiente al archivo YAML que creaste para sessionMatcher:

    ```yaml
    sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
    ```
    

    Reemplaza SERVICE_ACCOUNT por la cuenta de servicio que deseas permitir. Debe ser la dirección de correo electrónico de la cuenta de servicio.

  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
    

Probar conectividad

Puedes volver a probar la conectividad para validar que toda la configuración de Secure Web Proxy, incluida la cuenta de servicio, las reglas de la política de seguridad y la puerta de enlace, funcione según lo previsto.

Para probar la conectividad, usa el comando curl desde el recurso (como una instancia de VM) con el SERVICE_ACCOUNT adjunto:

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

Reemplaza IPv4_ADDRESS por la dirección IPv4 de tu instancia de Secure Web Proxy.

Si todo funciona correctamente, recibirás un código de estado 200 OK. Este código de estado confirma los siguientes resultados clave:

  • Autorización exitosa: Demuestra que la cuenta de servicio asignada identifica correctamente el tráfico que se origina en el recurso y que esta identidad coincide correctamente con la regla allow que agregaste a la política de seguridad.

  • Funcionalidad de extremo a extremo: Valida que el tráfico fluya correctamente a través de la ruta configurada, desde el recurso > hasta la instancia de Secure Web Proxy > pasando la política de seguridad > y llegando al destino externo.

¿Qué sigue?