Acceso seguro a aplicaciones web privadas

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

Una puerta de enlace segura de Chrome Enterprise Premium funciona como un proxy de reenvío, aplica un marco de trabajo de acceso de confianza cero y ofrece un control detallado y adaptado al contexto 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 adaptado al contexto, la puerta de enlace segura mantiene privadas las aplicaciones privadas y protegidas de la exposición a Internet pública. Una configuración del navegador del cliente dirige el tráfico de estas aplicaciones a través del extremo del proxy de la puerta de enlace segura. Luego, la puerta de enlace segura aplica la política de acceso pertinente y, si se permite, enruta la solicitud a la aplicación de destino.

La puerta de enlace segura puede ayudar a proteger las aplicaciones web privadas alojadas en los siguientes entornos:

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

  • NoGoogle Cloud (centros de datos locales o otras nubes): Primero debes establecer una conexión entre tu red de VPC privada enGoogle Cloud y la red que no es deGoogle Cloud . Esto se suele hacer con Cloud VPN o Cloud Interconnect. Luego, la puerta de enlace segura usa la conexión para enviar el tráfico a tu red de VPC privada, que, a su vez, lo enruta al entorno que no es deGoogle Cloud .

Roles obligatorios

Pídele a tu administrador que te otorgue los siguientes roles:

Obtén más información sobre los roles de Identity and Access Management (IAM).

Antes de comenzar

Antes de configurar la puerta de enlace segura, verifica que tengas lo siguiente:

Configura tu entorno de shell

Para optimizar el proceso de configuración y, luego, interactuar con las APIs de la puerta de enlace segura, define las siguientes variables de entorno en tu shell de trabajo.

  • Parámetros generales
    PROJECT_ID=PROJECT_ID
          

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que se crea la puerta de enlace segura.
  • Parámetros de la puerta de enlace segura
    SECURITY_GATEWAY_ID=SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"
          

    Reemplaza lo siguiente:

    • SECURITY_GATEWAY_ID: Es el ID de la puerta de enlace segura que deseas crear. El ID puede tener hasta 63 caracteres y puede contener letras en minúscula, números y guiones. El primer carácter debe ser una letra y el último puede ser una letra o un número.
    • SECURITY_GATEWAY_DISPLAY_NAME: Es el nombre legible de la puerta de enlace segura. El nombre puede tener hasta 63 caracteres y puede incluir caracteres imprimibles.

Crea una puerta de enlace segura

Una puerta de enlace segura de Chrome Enterprise Premium es un componente básico fundamental para establecer conexiones seguras con tus aplicaciones.

Console

Para crear una puerta de enlace segura, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página de la puerta de enlace segura.
    Ir a la puerta de enlace segura
  2. Selecciona el proyecto para el que deseas crear la puerta de enlace segura.
  3. Para crear una puerta de enlace segura, haz clic en Crear puerta de enlace nueva y espera a que se complete el proceso de creación. Puedes hacer un seguimiento del progreso en la sección Notificaciones de la consola de Google Cloud .

gcloud

Para crear una puerta de enlace segura con gcloud, ejecuta el siguiente comando:

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

REST

Para crear una puerta de enlace segura con la API de REST, ejecuta el siguiente comando:

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME", "service_discovery": {} }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways?security_gateway_id=SECURITY_GATEWAY_ID"
      

Configura una aplicación web privada

Antes de definir recursos de aplicaciones específicos en la puerta de enlace segura, debes configurar los permisos y la configuración de red necesarios para habilitar la conectividad y el enrutamiento adecuado.

Otorga permisos a la cuenta de servicio.

Para enviar tráfico correctamente a tu red de VPC, la puerta de enlace segura necesita ciertos permisos de IAM otorgados a su cuenta de servicio delegada. Esto permite que la puerta de enlace segura llegue a tus aplicaciones privadas, ya sea que estén alojadas dentro de una Google Cloud VPC o en un entorno que no sea deGoogle Cloud y que esté conectado a través de Cloud VPN o Cloud Interconnect.

Para otorgar permisos a la cuenta de servicio, haz lo siguiente:

  1. Obtén los detalles de tu puerta de enlace segura para identificar el correo electrónico de la cuenta de servicio delegada. El correo electrónico se encuentra en el campo delegatingServiceAccount de la respuesta.

    gcloud

    gcloud 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://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
                   
  2. Configura variables de entorno para la cuenta de servicio y tu proyecto de VPC de destino. Para obtener el correo electrónico de la cuenta de servicio, puedes usar el siguiente comando:
    DELEGATING_SERVICE_ACCOUNT=`gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID --project=PROJECT_ID --location=global --format="value(delegatingServiceAccount)"`
          
  3. Otorga el rol de IAM roles/beyondcorp.upstreamAccess a la cuenta de servicio de delegación 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
        
    Reemplaza PRIVATE_VPC_PROJECT_ID por el ID del proyecto de la red de VPC en la que se implementa la app web privada o en la que se configura Cloud VPN o Interconnect.

Espera aproximadamente dos minutos para que la política de Identity and Access Management surta efecto después de que otorgues el rol.

Configura el enrutamiento de red y las reglas de firewall

Para permitir que el tráfico de la puerta de enlace segura llegue a tus aplicaciones web privadas, configura las reglas de firewall, el enrutamiento de red y la configuración de DNS.

Reglas de firewall para aplicaciones en Google Cloud

Si tu aplicación web privada está alojada dentro de tu red de Google Cloud VPC, por ejemplo, en una VM de Compute Engine, un servicio de Google Kubernetes Engine con una IP interna o detrás de un balanceador de cargas TCP/UDP interno, configuraGoogle Cloud reglas de firewall de VPC. Esto permite el tráfico de TCP de entrada desde el rango de IP de la puerta de enlace segura: 136.124.16.0/20.

gcloud

Para crear una regla de firewall con gcloud, ejecuta el siguiente comando:

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
   --project=PRIVATE_VPC_PROJECT_ID \
   --network=NETWORK_NAME \
   --allow=tcp \
   --source-ranges=136.124.16.0/20
      

Reemplaza lo siguiente:

  • FIREWALL_RULE_NAME: Es un nombre para tu regla de firewall.
  • PRIVATE_VPC_PROJECT_ID: Es el ID del proyecto en el que se aloja tu red de VPC.
  • NETWORK_NAME: Es el nombre de la red de VPC en la que se aloja tu aplicación.

Reglas de firewall 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 servicios en la nube, y está conectada a tu VPC de Google Cloudcon Cloud VPN o Cloud Interconnect, configura reglas de firewall en tu firewall local o los controles de seguridad de red equivalentes, como grupos de seguridad y ACL de red, en el otro entorno de nube. Esto permite el tráfico de entrada de TCP desde el rango de IP de la puerta de enlace segura: 136.124.16.0/20.

Configura el enrutamiento desde entornos que no son deGoogle Cloud a una puerta de enlace segura

Para facilitar la comunicación bidireccional de las aplicaciones privadas alojadas en entornos que no son deGoogle Cloud , como entornos locales o de otras nubes, tu red externa debe crear una ruta de retorno al siguiente rango de IP de la puerta de enlace segura: 136.124.16.0/20.

Verifica que tu red privada pueda acceder a los rangos de IP de la puerta de enlace segura a través de Cloud VPN o Cloud Interconnect:

  • Enrutamiento dinámico: Si usas enrutamiento dinámico, como el Protocolo de Puerta de Enlace Fronteriza (BGP) con Cloud Router, verifica que tu Cloud Router en Google Cloud anuncie de forma explícita los rangos de IP de la puerta de enlace segura a tu dispositivo BGP local. Si bien el BGP intercambia dinámicamente muchas rutas, los rangos de IP de la puerta de enlace segura requieren un anuncio explícito.

    gcloud

    Para verificar si se anuncia el rango de IP de origen, ejecuta el siguiente comando:

    gcloud compute routers list-bgp-routes ROUTER_NAME \
    --peer=PEER_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --route-direction=OUTBOUND \
    --address-family=IPV4 \
    --destination-range=136.124.16.0/20
          

    Reemplaza lo siguiente:

    • ROUTER_NAME: Es el nombre de tu Cloud Router.
    • PEER_NAME: Es el nombre de tu par de BGP.
    • REGION: Es la región en la que se encuentra el router.
    • PROJECT_ID: Es el ID del proyecto que contiene el router.
  • Enrutamiento estático: Si usas rutas estáticas, debes agregar manualmente rutas para cada uno de los rangos de IP de la puerta de enlace segura en el equipo de tu red local, como el router o el firewall. Estas rutas estáticas deben especificar que el tráfico destinado a los rangos de IP de la puerta de enlace segura se debe enviar 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 puerta de enlace segura

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

  • Aplicaciones dentro de Google Cloud que usan zonas privadas de Cloud DNS: Si tus aplicaciones privadas están alojadas en Google Cloud y sus registros de DNS se administran dentro de las zonas privadas de Cloud DNS que están asociadas con tu red de VPC, verifica que las zonas estén configuradas correctamente y que se pueda acceder a ellas. La puerta de enlace segura usa las capacidades de resolución de Cloud DNS existentes de tu VPC.

  • Aplicaciones en entornos que no son deGoogle Cloud o que usan servidores DNS externos: Si tus aplicaciones privadas se encuentran en entornos que no son deGoogle Cloud(locales o en otras nubes) o si sus registros DNS se administran con 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. Por lo general, esto implica crear zonas de reenvío de Cloud DNS dentro de tu VPC. Estas zonas dirigirán las consultas de DNS para tus dominios privados especificados a tus servidores DNS privados autorizados, como los locales o los de otras nubes.

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

Crea un recurso de aplicación

Para proporcionar acceso a una aplicación web privada, debes establecer la aplicación dentro del marco de trabajo de la puerta de enlace segura creando un recurso de aplicación. Este recurso define cómo la puerta de enlace segura identifica el tráfico de tu aplicación (según el nombre de host) y a dónde enruta ese tráfico.

  1. Ejecuta el siguiente comando para establecer las variables de entorno requeridas:
       APPLICATION_ID=APPLICATION_ID
       APP_DISPLAY_NAME="APP_DISPLAY_NAME"
       HOST_NAME=HOST_NAME
       PRIVATE_NETWORK_RESOURCE_NAME=PRIVATE_NETWORK_RESOURCE_NAME
       
    Reemplaza lo siguiente:
    • APPLICATION_ID: Es un ID único para el recurso de la aplicación.
    • APP_DISPLAY_NAME: Es el nombre legible que se mostrará.
    • HOST_NAME: Es el nombre de host principal al que acceden los usuarios (por ejemplo, private.local).
    • PRIVATE_NETWORK_RESOURCE_NAME: Es el nombre completo del recurso de la red de VPC (por ejemplo, projects/my-project/global/networks/my-network).
  2. Crea el recurso de la aplicación.

    Console

    Para crear el recurso de la aplicación con la consola de Google Cloud , haz lo siguiente:

    1. En la consola de Google Cloud , ve a la página de la puerta de enlace segura.
      Ir a la puerta de enlace segura
    2. Para agregar una aplicación, haz clic en Add application.
    3. Selecciona el tipo de aplicación: Aplicación privada.
    4. Ingresa los detalles de la aplicación:
      • Nombre de la aplicación: Ingresa un nombre, por ejemplo, GitHub.
      • Coincidencia de dominios: Ingresa una lista separada por comas de patrones de dominio para enrutar a través de la puerta de enlace segura. Incluye el puerto en el formato domain:port. Se permiten comodines (*). Por ejemplo: github.com:443.
    5. Configura la red de VPC:
      • En el proyecto actual: Si tu red de VPC se encuentra en el proyecto actual, elige la red de VPC en el menú desplegable.
      • En otro proyecto: Si tu red de VPC se encuentra en un proyecto Google Cloud diferente, especifica el nombre completo del recurso de la red de VPC, por ejemplo, projects/my-project/global/networks/my-network.
    6. Opcional: Define egress policy: Selecciona una o más regiones Google Cloud en el menú desplegable.
    7. Opcional: Define una política de acceso: Selecciona una política de acceso de Access Context Manager. Puedes omitir este paso para esta guía.
    8. Para crear el recurso de la aplicación, haz clic en Crear.

    gcloud

    Para crear el recurso de la aplicación con gcloud, ejecuta el siguiente comando:

    gcloud 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,ports=[443]" \
        --upstreams=network=name="PRIVATE_NETWORK_RESOURCE_NAME"
            

    Para especificar una región de salida (por ejemplo, cuando se usan rutas estáticas), agrega la marca --egress-regions:

    gcloud 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,ports=[443]" \
        --upstreams=network=name="PRIVATE_NETWORK_RESOURCE_NAME",egressPolicy=regions=us-central1
            

    Reemplaza us-central1 por la región Google Cloud (como europe-west1 o asia-northeast1) que se alinea 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, completa los siguientes pasos:

    1. Crea un archivo llamado application.json.

      {
      "display_name": "APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "HOST_NAME", "ports": [443]}
      ],
      "upstreams": [{
         "network": {
            "name": "PRIVATE_NETWORK_RESOURCE_NAME"
         }
      }]
      }
               

      Para especificar una región de salida (por ejemplo, cuando se usan rutas estáticas), agrega un egress_policy a la configuración upstream:

      {
      "display_name": "APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "HOST_NAME", "ports": [443]}
      ],
      "upstreams": [{
         "network": {
            "name": "PRIVATE_NETWORK_RESOURCE_NAME"
         },
         "egress_policy": {
            "regions": [
            "us-central1"
            ]
         }
      }]
      }
                

      Reemplaza us-central1 por la región Google Cloud (como europe-west1 o asia-northeast1) que se alinea 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 la API Create.

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

Configura una política de acceso

Puedes aplicar una política de acceso para controlar el acceso a nivel de la aplicación. Si no se configura ninguna política de acceso, se deniega el acceso a la aplicación de forma predeterminada.

Console

Crea una política para varias aplicaciones

Para configurar una política de acceso, haz lo siguiente:

  1. Para crear una política que se aplique a varias aplicaciones vinculadas a la puerta de enlace segura, ve a la página Políticas.
    Ir a Políticas
  2. Para agregar políticas de acceso a las aplicaciones, haz clic en Crear política.
  3. En la lista desplegable, selecciona las aplicaciones a las que deseas que se apliquen las políticas.
  4. Agrega principales a la política:

    Las entidades pueden ser usuarios, grupos, dominios o cuentas de servicio. A estas principales se les otorga o deniega el acceso según los niveles de acceso que les asignes.

    1. Para agregar una principal, haz clic en Agregar principal.
    2. En el campo Principal, ingresa la dirección de correo electrónico del usuario, el grupo, la cuenta de servicio o el nombre de dominio.
    3. En el menú desplegable Niveles de acceso, selecciona uno o más niveles predefinidos de Acceso adaptado al contexto. El acceso solo se otorga si la principal cumple con las condiciones de los niveles de acceso seleccionados.

    Para agregar más principales, vuelve a hacer clic en Agregar principal y repite los pasos secundarios.

    Puedes crear y administrar niveles de acceso en Access Context Manager.

  5. Para aplicar la política a la aplicación, haz clic en Crear política.

Cómo modificar una política de acceso a nivel de la aplicación

  1. Para modificar una política para una sola aplicación, ve a la página Aplicaciones.
    Ir a Aplicaciones
  2. Para encontrar la aplicación que deseas editar, haz lo siguiente:
    1. En la lista Applications, busca la aplicación que deseas modificar.
    2. Para ver los detalles de la aplicación, haz clic en el menú Más acciones () y selecciona Ver detalles.
  3. Para editar la aplicación, haz clic en Editar.
  4. Agrega principales a la política:

    Las entidades pueden ser usuarios, grupos, dominios o cuentas de servicio. A estas principales se les otorga o deniega el acceso según los niveles de acceso que les asignes.

    1. Para agregar una principal, haz clic en Agregar principal.
    2. En el campo Principal, ingresa la dirección de correo electrónico del usuario, el grupo, la cuenta de servicio o el nombre de dominio.
    3. En la lista desplegable Niveles de acceso, selecciona uno o más niveles de acceso adaptado al contexto predefinidos. El acceso solo se otorga si la principal cumple con las condiciones de los niveles de acceso seleccionados.

    Para agregar más principales, vuelve a hacer clic en Agregar principal y repite los pasos secundarios.

    Puedes crear y administrar niveles de acceso en Access Context Manager.

  5. Para aplicar la política a la aplicación, haz clic en Guardar.

gcloud

Agrega una vinculación a nivel de la puerta de enlace de Service Discovery

Antes de otorgar acceso a un usuario a una aplicación, asegúrate de que tenga permisos de Service Discovery a nivel de Secure Gateway.

gcloud beyondcorp security-gateways add-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

Reemplaza lo siguiente:

  • SECURITY_GATEWAY_ID: ID de la puerta de enlace segura
  • PROJECT_ID: ID del proyecto en el que se configura la puerta de enlace segura
  • MEMBER: Es el usuario, el grupo o la cuenta de servicio a los que deseas asignar el rol de Service Discovery. Para obtener más información, consulta Principales de IAM.

Agrega una vinculación a nivel de la aplicación

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

Reemplaza lo siguiente:

  • APPLICATION_ID: ID del recurso de la aplicación
  • SECURITY_GATEWAY_ID: ID de la puerta de enlace segura
  • PROJECT_ID: ID del proyecto en el que se configura la puerta de enlace segura
  • MEMBER: Es el usuario, el grupo o la cuenta de servicio a los que deseas asignar el rol de Service Discovery. Para obtener más información, consulta Principales de IAM.

Agrega una vinculación condicional

También puedes agregar una vinculación con condiciones. Las condiciones especifican requisitos, como la dirección IP de un usuario que se origina en una ubicación específica. (El nivel de acceso se puede definir en una política de acceso a nivel de la organización o en una política de acceso con alcance).

El siguiente comando de ejemplo otorga acceso solo si la dirección IP de origen se encuentra dentro de un nivel de acceso especificado:

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

Quita una vinculación a nivel de la puerta de enlace de Service Discovery

Revoca los permisos de descubrimiento de servicios de un usuario a nivel de la puerta de enlace segura.

gcloud beyondcorp security-gateways remove-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

Reemplaza lo siguiente:

  • SECURITY_GATEWAY_ID: ID de la puerta de enlace segura
  • PROJECT_ID: ID del proyecto en el que se configura la puerta de enlace segura
  • MEMBER: Es el usuario, el grupo o la cuenta de servicio de los que deseas quitar el rol de Service Discovery. Para obtener más información, consulta Principales de IAM.

Cómo quitar una vinculación a nivel de la aplicación

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

Reemplaza lo siguiente:

  • APPLICATION_ID: ID del recurso de la aplicación
  • SECURITY_GATEWAY_ID: ID de la puerta de enlace segura
  • PROJECT_ID: ID del proyecto en el que se configura la puerta de enlace segura
  • MEMBER: Es el usuario, el grupo o la cuenta de servicio de los que deseas quitar el rol de Service Discovery. Para obtener más información, consulta Principales de IAM.

Cómo quitar una vinculación condicional

También puedes quitar una vinculación con condiciones. Las condiciones especifican requisitos, como la dirección IP de un usuario que se origina en una ubicación específica. (El nivel de acceso se puede definir en una política de acceso a nivel de la organización o en una política de acceso con alcance).

El siguiente comando de ejemplo quita una vinculación condicional con un nivel de acceso especificado:

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

REST

Actualiza una política de acceso de forma segura

El comando setIamPolicy reemplaza toda la política existente por la que proporcionas. Para evitar quitar permisos existentes por accidente, te recomendamos que uses el siguiente patrón de "lectura-modificación-escritura". Este patrón ayuda a evitar la eliminación accidental de permisos existentes.

  1. Read: Guarda la política de acceso actual en un archivo.
  2. Modificar: Edita el archivo de política de forma local para agregar o cambiar permisos.
  3. Write: Aplica tu archivo de política actualizado.

Establece una política a nivel de la puerta de enlace de Service Discovery

Para otorgar permisos de descubrimiento de servicios, debes establecer una política de acceso en la puerta de enlace de seguridad en lugar de en una aplicación individual. Esto sigue el mismo patrón de "lectura-modificación-escritura".

Recupera la política actual y guárdala en un archivo llamado gateway_policy.json.

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID:getIamPolicy" > gateway_policy.json
  

A continuación, abre el archivo gateway_policy.json en un editor de texto y agrega los principales requeridos a la lista members para el rol roles/beyondcorp.serviceDiscoveryUser, de manera similar a las modificaciones a nivel de la aplicación.

El archivo gateway_policy.json es similar al siguiente ejemplo:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.serviceDiscoveryUser",
      "members": [
        "group:existing-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
  

También puedes agregar otros tipos de miembros, como serviceAccount, user, group, principal y principalSet, en las vinculaciones de políticas. Para obtener más información, consulta Principales de IAM.

Aplica la política actualizada:

jq '{policy: .}' gateway_policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID:setIamPolicy"
  

Cómo establecer una política de acceso a nivel de la aplicación

Obtén la política actual

Recupera la política actual. El campo etag evita actualizaciones conflictivas si varios administradores realizan cambios de forma simultánea.

El siguiente comando recupera la política y la guarda en un archivo llamado policy.json.

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:getIamPolicy" > policy.json
  

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que se configura la puerta de enlace segura.
  • SECURITY_GATEWAY_ID: ID de la puerta de enlace segura
  • APPLICATION_ID: ID del recurso de la aplicación

El comando crea un archivo policy.json que contiene la política actual.

Modifica el archivo de políticas

Para otorgar acceso a un grupo para usar la puerta de enlace segura, haz lo siguiente:

  1. Abre el archivo policy.json en un editor de texto.
  2. Agrega el grupo a la lista members para el rol roles/beyondcorp.securityGatewayUser.

El archivo policy.json es similar al siguiente ejemplo:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "members": [
        "group:existing-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
      

Para agregar un grupo adicional, agrega una entrada nueva al array members. Incluye una coma después de la entrada anterior. En el siguiente ejemplo, se agrega new-group@example.com:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "members": [
        "group:existing-group@example.com",
        "group:new-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
    

También puedes agregar otros tipos de miembros, como serviceAccount, user, group, principal y principalSet, en las vinculaciones de políticas. Para obtener más información, consulta Principales de IAM.

Aplica la política actualizada

Después de editar y guardar el archivo policy.json, aplícalo al recurso con el comando setIamPolicy. Este comando usa el etag de tu archivo para garantizar que actualices la versión correcta.

jq '{policy: .}' policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:setIamPolicy"
  

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que se configura la puerta de enlace segura.
  • SECURITY_GATEWAY_ID: ID de la puerta de enlace segura
  • APPLICATION_ID: Es el ID del recurso de la aplicación.

Agrega una política de acceso condicional

También puedes establecer políticas de acceso con condiciones. Las condiciones especifican requisitos, como la dirección IP de un usuario que se origina en una ubicación específica. (El nivel de acceso se puede definir en una política de acceso a nivel de la organización o en una política de acceso con alcance).

La siguiente política de ejemplo otorga acceso solo si la dirección IP de origen se encuentra dentro de un nivel de acceso especificado:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "members": [
        "group:group@example.com"
      ],
      "condition": {
        "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
        "title": "Source IP must be in US"
      }
    }
  ],
  "etag": "BwXN8_d-bOM="
}
  

Para aplicar esta política, sigue los pasos que se describieron anteriormente.

Mejora la seguridad con el acceso adaptado al contexto

Para mejorar aún más la seguridad y garantizar que solo las instancias administradas de Google Chrome puedan acceder a tus aplicaciones web a través de la puerta de enlace de seguridad, te recomendamos que agregues una regla de acceso adaptado al contexto (CAA). Esta regla verifica que el perfil de Chrome del usuario esté bajo administración, lo que evita posibles usos inadecuados de navegadores no administrados o maliciosos.

Nota: Esta función requiere la instalación y configuración de la extensión de Endpoint Verification.

Para implementar esto, agrega una condición a tus niveles de acceso personalizados de Access Context Manager. Este es un ejemplo de condición que puedes adaptar:

  device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
  

Para obtener más información sobre cómo configurar, verificar y administrar este estado, consulta Atributos del navegador Chrome.

Instala la extensión de Chrome Enterprise Premium

La extensión de Chrome Enterprise Premium es una parte integral de una puerta de enlace segura y ayuda con la autenticación. Instala la extensión para todos los usuarios de la puerta de enlace segura. Para obtener información sobre la implementación de la extensión, consulta Cómo ver y configurar apps y extensiones. Para instalar la extensión de Chrome Enterprise Premium, haz lo siguiente:

  1. Ve a la Consola del administrador de Google.
  2. Haz clic en Navegador Chrome > Apps y extensiones.
  3. Haz clic en la pestaña Usuarios y navegadores.
  4. Para agregar la extensión de Chrome, haz clic en el botón + y, luego, selecciona Agregar una app o extensión de Chrome por ID.
  5. Busca la extensión Secure Enterprise Browser con el siguiente ID y, luego, establece su política de instalación en Instalar de forma automática para todos los usuarios de la unidad organizativa o el grupo:

    ekajlcmdfcigmdbphhifahdfjbkciflj
  6. Haz clic en la extensión instalada y, en el campo Política de extensiones, ingresa el siguiente valor JSON:

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" },
          "serviceDiscovery": { "routes": {} }
        }
      }
    }

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que se configura la puerta de enlace segura.
    • SECURITY_GATEWAY_ID: ID de la puerta de enlace segura

  7. Para guardar la configuración, haz clic en Guardar.

Configuración heredada del archivo PAC

Cuando está habilitada, la detección de servicios permite que el cliente del navegador Chrome detecte y enrute automáticamente el tráfico a tus aplicaciones configuradas a través de la puerta de enlace segura, lo que elimina la necesidad de realizar configuraciones de enrutamiento manuales con un archivo PAC.

Si el descubrimiento de servicios no está habilitado en tu puerta de enlace segura, tienes una configuración heredada. Deberás configurar un archivo PAC para controlar el enrutamiento en el cliente del navegador Chrome.

Para verificar si tienes la configuración heredada, usa los siguientes comandos para ver si el descubrimiento de servicios está habilitado:

gcloud

gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global | grep -i "serviceDiscovery"
      

REST

curl --silent \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" | grep -i "serviceDiscovery"
      

Si el comando no devuelve ningún resultado, significa que tu puerta de enlace usa la configuración heredada. En el caso de las puertas de enlace que usan la configuración heredada, el enrutamiento se controla con un archivo PAC alojado.

Paso 1: Crea y aloja el archivo PAC

  1. Crea un archivo llamado pac_config.js con el siguiente código JavaScript y reemplaza HOST_NAME por el dominio de tu aplicación (por ejemplo, myapp.example.com):

    function FindProxyForURL(url, host) {
      const PROXY = "HTTPS via.prod.securegateway.goog:443";
      const sites = ["HOST_NAME"];
    
      for (const site of sites) {
        if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
          return PROXY;
        }
      }
      return 'DIRECT';
    }
  2. Sube el archivo PAC a un servicio de hosting, como un bucket de Cloud Storage.

    • Asegúrate de que el archivo se pueda descargar públicamente.
    • Establece el encabezado HTTP Cache-Control en no-cache para que los navegadores siempre recuperen las reglas de enrutamiento más recientes.
  3. Copia la URL pública del archivo PAC cargado.

Paso 2: Aplica el archivo PAC en la Consola del administrador de Google

  1. Ve a la Consola del administrador de Google.
  2. Navega a Dispositivos > Chrome > Configuración.
  3. Selecciona tu unidad organizativa o grupo y, luego, haz clic en Modo de proxy.
  4. En Modo de proxy, selecciona Usar siempre la configuración automática de proxy que se especifica a continuación.
  5. Ingresa la URL pública de tu archivo PAC alojado en el campo proporcionado.
  6. Haz clic en Guardar.

Paso 3: Configura la extensión de Chrome Enterprise Premium

La extensión debe controlar la autenticación. Esta política de extensiones difiere de la configuración estándar porque excluye el bloque serviceDiscovery.

  1. En la Consola del administrador de Google, ve a Navegador Chrome > Apps y extensiones.
  2. Ve a la pestaña Usuarios y navegadores y asegúrate de que la extensión de Secure Enterprise Browser (ekajlcmdfcigmdbphhifahdfjbkciflj) esté agregada y aplicada.
  3. Haz clic en la extensión y, en el campo Política de extensiones, ingresa el siguiente valor JSON:

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": {
            "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
          }
        }
      }
    }
  4. Haz clic en Guardar.

Transición a la configuración del descubrimiento de servicios

Para migrar tu puerta de enlace segura heredada de una configuración de archivo PAC a la configuración de descubrimiento de servicios más reciente, debes habilitar la función y actualizar tus configuraciones de forma manual.

  1. Habilita el descubrimiento de servicios en tu puerta de enlace segura: Actualiza tu puerta de enlace existente para habilitar el descubrimiento de servicios.

    gcloud

    gcloud beyondcorp security-gateways update SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --service-discovery={}
          

    REST

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{ "service_discovery": {} }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID?updateMask=service_discovery"
          
  2. Establece la política de acceso a nivel de la puerta de enlace: Otorga a los usuarios el rol roles/beyondcorp.serviceDiscoveryUser a nivel de la puerta de enlace para que puedan usar el descubrimiento de servicios. Sigue las instrucciones de la sección Agrega una vinculación a nivel de la puerta de enlace de Service Discovery.

  3. Actualiza la configuración de la extensión de Chrome Enterprise Premium: Sigue las instrucciones de la sección Instala la extensión de Chrome Enterprise Premium para actualizar la política de la extensión. La nueva configuración de JSON debe incluir el bloque "serviceDiscovery": { "routes": {} }.

  4. Quita el archivo PAC heredado: Una vez que el descubrimiento de servicios esté activo, ya no se necesitará el archivo PAC heredado.

    1. En la Consola del administrador de Google, navega a Dispositivos > Chrome > Configuración > Configuración de usuarios y navegadores > Red.
    2. Busca el parámetro de configuración Modo de proxy.
    3. Quita la URL de configuración automática de proxy (PAC) o cambia el parámetro de configuración de Usar siempre la configuración automática de proxy que se especifica a continuación a un modo adecuado para tu red, como Permitir que el usuario configure.
    4. Haz clic en Guardar.

Experiencia del usuario final

Cuando se completa la configuración, a los usuarios finales que acceden a la aplicación SaaS protegida se les otorga o deniega el acceso según la política de acceso aplicada a la aplicación.

Cómo acceder a la aplicación en Chrome

Se requiere la extensión de Chrome Enterprise Premium para dirigir el tráfico a través de la puerta de enlace segura. La extensión controla la autenticación entre el usuario y la puerta de enlace segura. La extensión se instala automáticamente a través de la política del dominio.

Cuando los usuarios acceden a la aplicación de SaaS que configuraste, su tráfico pasa por la puerta de enlace segura, que verifica si cumplen con la política de acceso. Si los usuarios pasan las verificaciones de la política de acceso, se les otorga acceso a la aplicación.

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

¿Qué sigue?