Acceso seguro a aplicaciones web privadas

En este documento se describe cómo configurar una pasarela segura de Chrome Enterprise Premium para proteger el acceso a tus aplicaciones web privadas.

Una pasarela segura de Chrome Enterprise Premium funciona como un proxy de reenvío, lo que permite aplicar un framework de acceso de confianza cero y ofrecer un control granular y contextual sobre quién accede a tus aplicaciones web privadas.

Cómo funciona la protección del acceso a aplicaciones web privadas

Al establecer un túnel seguro y aplicar políticas de acceso contextual, la pasarela segura mantiene la privacidad de las aplicaciones privadas y las protege de la exposición a Internet pública. Una configuración del navegador del lado del cliente dirige el tráfico de estas aplicaciones a través del endpoint del proxy de la pasarela segura. A continuación, la pasarela segura aplica la política de acceso pertinente y, si se permite, dirige la solicitud a la aplicación de destino.

La pasarela segura puede proteger las aplicaciones web privadas alojadas en los siguientes entornos:

  • Google Cloud project: la pasarela segura puede dirigir el acceso a las aplicaciones que se ejecutan en tu red de VPC. Google Cloud

  • NoGoogle Cloud (centros de datos on-premise u otras nubes): primero debes establecer una conexión entre tu red de VPC privada enGoogle Cloud y la red que no seaGoogle Cloud . Normalmente, esto se hace mediante Cloud VPN o Cloud Interconnect. A continuación, la pasarela segura usa la conexión para enviar el tráfico a tu red de VPC privada, que a su vez lo dirige al entorno que no es deGoogle Cloud .

Antes de empezar

Antes de configurar la pasarela segura, comprueba que tienes lo siguiente:

Configurar el entorno de shell

Para simplificar el proceso de configuración e interactuar con las APIs de pasarela segura, define las siguientes variables de entorno en tu shell de trabajo.

  • Parámetros generales

    API="beyondcorp.googleapis.com"
    API_VERSION=v1
    PROJECT_ID=MY_PROJECT_ID

    Haz los cambios siguientes:

    • MY_PROJECT_ID: ID del proyecto en el que se crea la pasarela segura.
  • Parámetros de pasarela segura

    SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"

    Haz los cambios siguientes:

    • MY_SECURITY_GATEWAY_ID: el ID de la pasarela segura que quieras crear. El ID puede tener hasta 63 caracteres y puede contener letras minúsculas, números y guiones. El primer carácter debe ser una letra y el último puede ser una letra o un número.
    • MY_SECURITY_GATEWAY_DISPLAY_NAME: nombre legible de la pasarela segura. El nombre puede tener hasta 63 caracteres e incluir caracteres imprimibles.

Crear una pasarela segura

Una pasarela segura de Chrome Enterprise Premium es un componente fundamental para establecer conexiones seguras con tus aplicaciones. Asigna un proyecto y una red dedicados, lo que proporciona aislamiento y seguridad.

gcloud

gcloud beta beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
  --project=${PROJECT_ID} \
  --location=global \
  --display-name="${SECURITY_GATEWAY_DISPLAY_NAME}"
      

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME" }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
      

Configurar una aplicación web privada

Antes de definir recursos de aplicaciones específicos en la pasarela segura, debes configurar los permisos y los ajustes de red necesarios para habilitar la conectividad y el enrutamiento adecuado.

Conceder permisos a la cuenta de servicio

Para enviar tráfico correctamente a tu red de VPC, la pasarela de seguridad necesita que se le concedan determinados permisos de gestión de identidades y accesos a su cuenta de servicio de delegación. De esta forma, la pasarela segura puede acceder a tus aplicaciones privadas, tanto si están alojadas en una Google Cloud VPC como en un entorno que no sea deGoogle Cloud y que esté conectado a través de Cloud VPN o Cloud Interconnect.

  1. Obtén los detalles de tu pasarela segura para identificar el correo de la cuenta de servicio de delegación. El correo se encuentra en el campo delegatingServiceAccount de la respuesta.

    gcloud

    gcloud beta beyondcorp security-gateways describe ${SECURITY_GATEWAY_ID} \
       --project=${PROJECT_ID} \
       --location=global
                   

    REST

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
                   
  2. Define las variables de entorno de la cuenta de servicio y del proyecto de VPC de destino.
    DELEGATING_SERVICE_ACCOUNT="security-gateway@my-gateway-service-account.iam.gserviceaccount.com" # Replace with actual value
          
  3. Concede el rol roles/beyondcorp.upstreamAccess de gestión de identidades y accesos a la cuenta de servicio delegada en tu proyecto de VPC privada.
    gcloud projects add-iam-policy-binding PRIVATE_VPC_PROJECT_ID \
       --role=roles/beyondcorp.upstreamAccess \
       --member=serviceAccount:${DELEGATING_SERVICE_ACCOUNT}
        
    Sustituye PRIVATE_VPC_PROJECT_ID por el ID del proyecto de la red VPC en la que se ha desplegado la aplicación web privada o en la que se ha configurado Cloud VPN o Interconnect.

Espera unos dos minutos para que la política de gestión de identidades y accesos se aplique después de asignar el rol.

Configurar el enrutamiento de red y las reglas de cortafuegos

Para permitir que el tráfico de la pasarela segura llegue a tus aplicaciones web privadas, configura reglas de cortafuegos, el enrutamiento de red y los ajustes de DNS.

Reglas de cortafuegos de las aplicaciones en Google Cloud

Si tu aplicación web privada está alojada en tu red de Google Cloud VPC, como en una VM de Compute Engine, un servicio de Google Kubernetes Engine con una IP interna o detrás de un balanceador de carga TCP/UDP interno, configura reglas de firewall deGoogle Cloud VPC. Esto permite el tráfico TCP de entrada desde los intervalos de IPs de la pasarela segura: 34.158.8.0/21 y 136.124.16.0/20.

Reglas de cortafuegos para aplicaciones en entornos que no son deGoogle Cloud

Si tu aplicación web privada reside en un centro de datos local o en la red de otro proveedor de la nube, y está conectada a tu Google CloudVPC mediante Cloud VPN o Cloud Interconnect, configura reglas de cortafuegos en tu cortafuegos local o en los controles de seguridad de red equivalentes, como grupos de seguridad y ACLs de red, en el otro entorno de nube. De este modo, se permite el tráfico TCP de entrada desde los intervalos de IPs de la pasarela segura.

Configurar el enrutamiento desde entornos que no son deGoogle Cloud a una pasarela segura

Para facilitar la comunicación bidireccional de las aplicaciones privadas alojadas en entornos que no son deGoogle Cloud , como entornos on-premise u otras nubes, tu red externa debe crear una ruta de retorno a los siguientes intervalos de IPs de la pasarela segura: 34.158.8.0/21 y 136.124.16.0/20.

Verifica que tu red privada pueda acceder a los intervalos de IPs de la pasarela segura a través de tu Cloud VPN o Cloud Interconnect:

  • Enrutamiento dinámico: si utilizas el enrutamiento dinámico, como el protocolo de pasarela fronteriza (BGP) con Cloud Router, comprueba que tu Cloud Router anuncie explícitamente los intervalos de IPs de la pasarela segura a tu dispositivo BGP on‐premise. Google Cloud Aunque BGP intercambia muchas rutas de forma dinámica, los intervalos de IPs de la pasarela segura requieren un anuncio explícito.

  • Enrutamiento estático: si usas rutas estáticas, debes añadir manualmente rutas para cada uno de los intervalos de IPs de la pasarela segura en tu equipo de red local, como el router o el firewall. Estas rutas estáticas deben especificar que el tráfico destinado a los intervalos de IP de la pasarela segura debe enviarse a través de la conexión de Cloud VPN o Cloud Interconnect.

    Cuando se usa el enrutamiento estático, Cloud VPN debe estar en una de las siguientes regiones admitidas:

    • africa-south1
    • asia-east1
    • asia-south1
    • asia-south2
    • asia-southeast1
    • europe-central2
    • europe-north1
    • europe-southwest1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west8
    • europe-west9
    • northamerica-northeast1
    • northamerica-northeast2
    • northamerica-south1
    • southamerica-east1
    • southamerica-west1
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-west1

Configuración de DNS para la resolución de nombres de host privados de la pasarela segura

Para que la pasarela segura resuelva los nombres de host de tu aplicación privada, tu red de VPCGoogle Cloud debe poder resolver los nombres de host mediante Cloud DNS. La configuración específica de Cloud DNS depende de dónde se alojen de forma autorizada tus registros DNS privados:

  • Aplicaciones en Google Cloud que usan zonas privadas de Cloud DNS: si tus aplicaciones privadas están alojadas en Google Cloud y sus registros DNS se gestionan en zonas privadas de Cloud DNS asociadas a tu red de VPC, comprueba que las zonas estén configuradas correctamente y que se pueda acceder a ellas. La pasarela segura usa las funciones de resolución de Cloud DNS de tu VPC.

  • Aplicaciones en entornos que no son deGoogle Cloud o que usan servidores DNS externos: si tus aplicaciones privadas están en entornos que no son deGoogle Cloud(entornos locales u otras nubes) o si sus registros DNS se gestionan mediante servidores DNS externos a las zonas privadas de Cloud DNS de tu VPC, debes configurar Cloud DNS para que reenvíe las consultas de estos dominios privados. Normalmente, esto implica crear zonas de reenvío de Cloud DNS en tu VPC. Estas zonas dirigirán las consultas de DNS de los dominios privados que especifiques a tus servidores DNS privados autorizados, como los locales u otras nubes.

Para obtener instrucciones detalladas sobre la configuración de DNS, consulta Crear una zona de reenvío.

Crear un recurso de aplicación

Para proporcionar acceso a una aplicación web privada, debes establecer la aplicación en el marco de la pasarela segura creando un recurso de aplicación. Este recurso define cómo identifica la pasarela segura el tráfico de tu aplicación (en función del nombre de host) y a dónde debe dirigirlo.

  1. Define las variables de entorno necesarias ejecutando el siguiente comando:
       APPLICATION_ID=MY_APPLICATION_ID
       APP_DISPLAY_NAME="MY_APP_DISPLAY_NAME"
       HOST_NAME=MY_HOST_NAME
       PRIVATE_NETWORK_RESOURCE_NAME=MY_PRIVATE_NETWORK_RESOURCE_NAME
       
    Sustituye lo siguiente:
    • MY_APPLICATION_ID: ID único del recurso de aplicación.
    • MY_APP_DISPLAY_NAME: el nombre legible por humanos que se va a mostrar.
    • MY_HOST_NAME: el nombre de host principal al que acceden los usuarios (por ejemplo, private.local).
    • MY_PRIVATE_NETWORK_RESOURCE_NAME: Nombre completo del recurso de la red de VPC (por ejemplo, projects/my-project/global/networks/my-network).
  2. Crea el recurso de aplicación.

    gcloud

    Ejecuta el siguiente comando para crear el recurso de aplicación.

    gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
      --project=${PROJECT_ID} \
      --security-gateway=${SECURITY_GATEWAY_ID} \
      --location=global \
      --display-name="${APP_DISPLAY_NAME}" \
      --endpoint-matchers="hostname=${HOST_NAME}" \
      --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}"
            

    Para especificar una región de salida (por ejemplo, al usar rutas estáticas), añade la marca --egress-regions:

    gcloud beta beyondcorp security-gateways applications create ${APPLICATION_ID} \
      --project=${PROJECT_ID} \
      --security-gateway=${SECURITY_GATEWAY_ID} \
      --location=global \
      --display-name="${APP_DISPLAY_NAME}" \
      --endpoint-matchers="hostname=${HOST_NAME}" \
      --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}",egressPolicy=regions=us-central1
            

    Sustituye us-central1 por la Google Cloud región (como europe-west1 o asia-northeast1) que se corresponda con tu configuración de enrutamiento estático regional. Si no tienes requisitos específicos de enrutamiento estático regional, puedes omitir la política de salida de tu configuración.

    REST

    Para crear un recurso de aplicación con la API, sigue estos pasos:

    1. Crea un archivo llamado application.json.

      {
      "display_name": "MY_APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "MY_HOST_NAME"}
      ],
      "upstreams": [{
         "network": {
            "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME"
         }
      }]
      }
               

      Para especificar una región de salida (por ejemplo, al usar rutas estáticas), añade un egress_policy a la configuración upstream:

      {
      "display_name": "MY_APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "MY_HOST_NAME"}
      ],
      "upstreams": [{
         "network": {
            "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME"
         },
         "egress_policy": {
            "regions": [
            "us-central1"
            ]
         }
      }]
      }
                

      Sustituye us-central1 por la Google Cloud región (como europe-west1 o asia-northeast1) que se corresponda con tu configuración de enrutamiento estático regional. Si no tienes requisitos específicos de enrutamiento estático regional, puedes omitir la política de salida de tu configuración.

    2. Llama al método de API Create.

      curl \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -X POST \
      -d @application.json \
      "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
                

Configurar el modo proxy de Google Chrome

Para enrutar el tráfico del recurso de la aplicación a través de la pasarela segura, configura Chrome aplicando un archivo PAC en los ajustes de Chrome de la consola de administración de Google.

  1. Crea o actualiza un archivo PAC.

    • Si vas a crear tu primera aplicación, crea un archivo pac_config.js con el siguiente archivo PAC de ejemplo.

    • Si va a crear una segunda aplicación o una posterior, actualice su archivo pac_config.js y añada los dominios de su nueva aplicación a la matriz de sitios, tal como se muestra en el siguiente ejemplo de archivo PAC.

    function FindProxyForURL(url, host) {
     const PROXY = "HTTPS ingress.cloudproxy.app:443";
     const sites = ["MY_HOST_NAME"];
    
     for (const site of sites) {
       if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
         return PROXY;
       }
     }
    return 'DIRECT';
    }

    Si usas un archivo PAC que no es específico de una pasarela segura, combina los archivos PAC añadiendo los dominios de tu aplicación a la matriz de sitios.

  2. Sube el archivo para que se pueda descargar públicamente. Por ejemplo, puedes subir el archivo a Cloud Storage y hacer que se pueda descargar públicamente concediendo a todos los usuarios el rol Usuario de objeto de Storage en el segmento.

  3. Para verificar que el archivo subido sea siempre la versión más reciente, puede ajustar su comportamiento de almacenamiento en caché configurando el encabezado Cache-Control en no-cache. Esta opción impide que los navegadores y los servidores intermedios almacenen una copia del archivo, de modo que Chrome siempre descargue la versión más reciente.

    Para obtener más información sobre Cache-Control y cómo afecta al almacenamiento en caché del navegador, consulta el artículo Encabezado Cache-Control.

  4. Copia la URL pública del archivo subido.

Actualizar la configuración del modo proxy

  1. Ve a la consola de administración de Google.
  2. Haz clic en Dispositivos > Chrome > Configuración.
  3. Selecciona una unidad organizativa o un grupo y, a continuación, haz clic en Modo proxy.
  4. En la página Modo proxy, seleccione Utilizar siempre el proxy de configuración automática especificado a continuación e introduzca la URL del archivo PAC de Cloud Storage.

Configurar una política de acceso

Puedes aplicar una política de acceso a nivel de pasarela segura o de aplicación:

  • Recurso de pasarela segura: aplica una política a nivel de pasarela segura para controlar el acceso a todas las aplicaciones asociadas.
  • Aplicación individual: para tener un control más detallado, puedes aplicar una política de acceso a una aplicación concreta.
  1. Crea un archivo con formato JSON llamado setIamPolicy.json y añade lo siguiente.

    {
     "policy": {
       object (POLICY)
     }
    }

    Sustituye POLICY por una política de gestión de identidades y accesos de permiso. El etag de la política debe ser el mismo que el etag de la política activa, que puedes obtener llamando al método getIamPolicy.

  2. Para permitir que un grupo específico use la pasarela segura, asigna el rol roles/beyondcorp.securityGatewayUser al grupo.

    {
     "policy": {
       "version": 3,
       "bindings": [
         {
           "role": "roles/beyondcorp.securityGatewayUser",
           "members": [
                   "group:"
           ]
         }
       ],
       "etag": "AA1jlb"
     }
    }

    Para obtener más identificadores, como serviceAccount, user, group, principal y principalSet, en las vinculaciones de políticas, consulta Principal de IAM.

  3. Aplica la política de acceso en la pasarela segura especificada en el archivo JSON llamando a la API setIamPolicy.

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d @setIamPolicy.json \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}:setIamPolicy"

    Para aplicar la política de acceso en una aplicación, usa el siguiente comando:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d @setIamPolicy.json \
    "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_NAME}:setIamPolicy"

También puedes definir políticas de acceso con niveles de acceso como condición, tal como se muestra en el siguiente ejemplo.

{
  "policy": {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
                "group:"
        ],
        "condition": {
                "expression": "'accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels",
                "title": "Source IP must be in US"
        }
      }
    ],
    "etag": "A1jlb"
  }
}'

Instalar la extensión Chrome Enterprise Premium

La extensión Chrome Enterprise Premium es una parte integral de una pasarela segura y ayuda con la autenticación. Instala la extensión para todos los usuarios de la pasarela segura. Para obtener información sobre cómo implementar la extensión, consulta el artículo Ver y configurar aplicaciones y extensiones.

  1. Ve a la consola de administración de Google.
  2. Haz clic en Navegador Chrome > Aplicaciones y extensiones.
  3. Haz clic en la pestaña Usuarios y navegadores.
  4. Para añadir una extensión de Chrome, haz clic en el botón +.
  5. Busca ekajlcmdfcigmdbphhifahdfjbkciflj y, a continuación, fuerza la instalación en todos los usuarios de la unidad organizativa o el grupo.
  6. Haz clic en la extensión instalada y, a continuación, ve al campo Política de extensiones y proporciona el siguiente valor JSON:

    {
     "securityGateway": {
       "Value": {
         "authentication": {},
         "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" }
       }
     }
    }

Experiencia de usuario final

Una vez completada la configuración, se concederá o denegará el acceso a la aplicación SaaS protegida a los usuarios finales en función de la política de acceso aplicada a la aplicación.

Acceder a la aplicación en Chrome

La extensión Chrome Enterprise Premium es necesaria para dirigir el tráfico a través de la pasarela segura. La extensión gestiona la autenticación entre el usuario y la pasarela segura. La extensión se instala automáticamente a través de la política de dominio.

Cuando los usuarios acceden a la aplicación SaaS que has configurado, su tráfico pasa por la pasarela segura, que comprueba si cumplen la política de acceso. Si los usuarios superan las comprobaciones de la política de acceso, se les concede acceso a la aplicación.

Si la política de autorización rechaza el acceso del navegador a la aplicación, los usuarios recibirán un mensaje Access denied.

Siguientes pasos