Protege aplicaciones que no sean de Google Cloud con el conector de apps

En esta página, se describe cómo configurar y usar el conector de aplicaciones de Chrome Enterprise Premium para proteger aplicaciones que no son deGoogle Cloud .

Descripción general

Puedes usar el conector de aplicaciones de Chrome Enterprise Premium para proporcionar identidad y acceso adaptado al contexto a las aplicaciones HTTPS que se ejecutan en entornos que no son deGoogle Cloud. El conector de apps de Chrome Enterprise Premium es una interfaz segura y autenticada entre el plano de aplicación de Chrome Enterprise Premium y las aplicaciones que se ejecutan en otras nubes y en entornos locales.

Un beneficio de usar el conector de aplicaciones de Chrome Enterprise Premium es que no necesitas abrir firewalls ni configurar conexiones de Cloud VPN de sitio a sitio.

Arquitectura

A continuación, se muestra un diagrama de arquitectura de alto nivel que describe los componentes principales del conector de la app de Chrome Enterprise Premium.

Componentes de los conectores de apps de Chrome Enterprise Premium

Los componentes del conector de apps de Chrome Enterprise Premium se rigen por tres recursos principales de la API: conectores de apps, conexiones de apps y puertas de enlace de apps.

Conectores de apps
Un recurso de conector define un agente remoto del conector de apps único. Los agentes remotos del conector de apps se implementan en entornos empresariales remotos, como en otras nubes y entornos locales. Los agentes remotos inician y mantienen sesiones de túnel a Google Cloud, reciben tráfico deGoogle Cloudy retransmiten tráfico a extremos de aplicaciones remotas en el mismo entorno.
Conexiones de apps
Un recurso de conexión define una conexión lógica desdeGoogle Cloud hasta un extremo de aplicación específico que se identifica con la dirección IP:puerto o el FQDN:puerto. Un recurso de conexión coordina un conjunto de puertas de enlace de conectores de apps administradas que se asignan para un extremo de aplicación determinado. Las puertas de enlace se administran enGoogle Cloud y finalizan las sesiones de túnel de los agentes remotos cuando ya no son necesarias.
Puertas de enlace de la app

Una puerta de enlace de la app es una oferta de servicio administrada por Google. Los agentes remotos del conector de apps se conectan a una o más puertas de enlace que permiten que las conexiones y los conectores de apps retransmitan el tráfico de los usuarios finales a los agentes remotos. El tráfico de las conexiones de apps alojadas en la misma puerta de enlace de la app se enruta a través de una infraestructura virtual común.

Cuando conectas una aplicación con el conector de la app, las puertas de enlace de la app se crean y administran de forma implícita por ti. También puedes crear gateways de apps adicionales si deseas organizar los recursos de conexiones de apps en grupos. Las puertas de enlace de la app proporcionan la flexibilidad para agrupar o segregar las conexiones de la app y permitir su aislamiento.

Cada puerta de enlace de la app puede admitir un rendimiento total máximo de hasta 1 Gbps para un máximo de 200,000 conexiones simultáneas. Te recomendamos que crees puertas de enlace dedicadas para las aplicaciones críticas que requieren un alto rendimiento. Puedes asignar un máximo de 10 apps por puerta de enlace.

Para admitir hasta 200,000 conexiones simultáneas y un rendimiento total de hasta 1 Gbps, te recomendamos que uses una VM dedicada de 8 núcleos y 8 GB de memoria para ejecutar el agente remoto del conector de la app. Por ejemplo, puedes dedicar 2 agentes remotos del conector de la app en un clúster de HA con 8 núcleos y 8 GB de memoria cada uno para admitir una aplicación web de alto rendimiento (app1.examplecompany.com) con una puerta de enlace de la app dedicada (app_gateway1). Crea otro clúster de 2 VMs, cada una con 8 núcleos y 8 GB de memoria, para admitir una combinación de 10 apps de uso bajo con otra puerta de enlace de app dedicada (app_gateway2).

Los recursos de conector de app, conexión de app y puerta de enlace de app son regionales. Solo puedes usarlos en un contexto regional. Por ejemplo, no puedes asignar un conector de aplicación en la región A a una conexión de aplicación o una puerta de enlace de aplicación creadas en la región B.

Antes de comenzar

Solo puedes usar el conector de apps de Chrome Enterprise Premium con aplicaciones HTTPS. Además, los balanceadores de cargas HTTPS no usan la extensión de indicación del nombre del servidor (SNI) para las conexiones al backend. Para obtener más información, consulta Encriptación del balanceador de cargas a los backends.

Para usar el conector de apps de Chrome Enterprise Premium, debes tener lo siguiente:

Cada agente del conector de apps de Chrome Enterprise Premium requiere una VM de Linux que ejecute Docker. Recomendamos las siguientes distribuciones de Linux:

  • Debian 10.7 (buster)
  • Red Hat Enterprise Linux Server 7.8 (Maipo) x86_64
  • Ubuntu 16.04 o superior

Para el hardware de la VM de Linux, recomendamos un mínimo de 2 CPU con 2 GB de RAM.

Puedes configurar y habilitar el conector de la app con gcloud y la API, o bien con la consola de Google Cloud . Para usar gcloud y las APIs, completa los siguientes pasos. Para usar la consola de Google Cloud , ve a Configura el conector de la app con la consola de Google Cloud .

Configura el Google Cloud proyecto

Para configurar un proyecto que se usará con el conector de la app de Chrome Enterprise Premium, debes habilitar la API de Chrome Enterprise Premium. Google Cloud Para habilitar la API, completa los siguientes pasos:

gcloud CLI

Antes de completar los siguientes pasos, asegúrate de tener instalado el SDK de gcloud CLI.

  1. Ejecuta el siguiente comando para establecer la variable de entorno requerida:

    PROJECT_ID=my-project
    

    Reemplaza my-project por el Google Cloud ID del proyecto.

  2. Para habilitar la API, ejecuta el siguiente comando:

    gcloud config set project $PROJECT_ID
    gcloud services enable beyondcorp.googleapis.com
    

API

  1. Obtén un token de acceso y configura las variables de entorno y los alias necesarios ejecutando los siguientes comandos:

    PROJECT_NUMBER=my-project-number
    ACCESS_TOKEN=my-access-token
    

    Reemplaza my-project por el Google Cloud ID del proyecto.

  2. Configura un alias conveniente para usar tu token de acceso:

    alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
    

  3. Para habilitar la API, ejecuta el siguiente comando:

    gcurl https://serviceusage.googleapis.com/v1/projects/${PROJECT_NUMBER}/services/beyondcorp.googleapis.com:enable -d "{}"
    

Cómo instalar un agente remoto del conector de apps

Debes implementar una VM de agente remoto del conector de apps para cada entorno de red que aloje una aplicación que quieras proteger con Chrome Enterprise Premium. Debes tener una VM dedicada o cualquier servidor Bare Metal con Docker instalado para cada agente remoto que crees.

Para crear un agente remoto, completa los siguientes pasos:

  1. Crea una instancia de VM en el entorno de tu aplicación.
    1. Asegúrate de que el firewall de red de la VM del agente remoto permita todo el tráfico saliente iniciado en el puerto 443 para el rango de IP de IAP-TCP 35.235.240.0/20. Consulta Verifica la configuración del firewall para conocer otros dominios a los que el firewall de la VM del agente remoto debería permitir el tráfico saliente.
  2. Instala el agente remoto:

    1. Verifica que tu DNS esté configurado correctamente y que puedas acceder a la aplicación con curl.
    2. Instala Docker Engine.
      1. Opcional: Si usas un proxy, verifica que el daemon de Docker esté configurado correctamente.
    3. Opcional: Si usas un proxy, verifica que las variables de entorno del proxy HTTP y HTTPS estén configuradas y usen el esquema http://.
    4. Ejecuta el siguiente comando en la VM del agente remoto para instalar el agente remoto:
      curl https://raw.githubusercontent.com/GoogleCloudPlatform/beyondcorp-applink/main/bash-scripts/install-beyondcorp-runtime -o ./install-beyondcorp-runtime && chmod +x ./install-beyondcorp-runtime && ./install-beyondcorp-runtime
      
    5. Para agregar el alias bce-connctl a tu shell, ejecuta el siguiente comando:
       source ~/.bce_alias
       
    6. Ejecuta los siguientes comandos para establecer las variables de entorno requeridas:

      PROJECT_ID=my-project
      REGION=us-central1
      CONNECTOR_NAME=my-connector
      
      Reemplaza lo siguiente:

      • my-project: El ID del proyecto de Google Cloud
      • us-central1: Es la región en la que se implementarán la conexión y las puertas de enlace.
      • my-connector: Es el nombre del conector.
    7. Inscribe el conector con uno de los siguientes tipos de credenciales:

    Cuenta de servicio

    1. Ejecuta el siguiente comando en la CLI de bce-connctl para inscribir el conector:

      bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
      

    2. Sigue las instrucciones en pantalla para copiar y pegar la secuencia de comandos de inscripción en tus proyectos de Google Cloud con Cloud Shell o gcloud CLI, y finaliza la inscripción de tu conector. Para ejecutar la secuencia de comandos de inscripción, debes tener permisos de Owner en el proyecto.

      Cuando se completa la secuencia de comandos de inscripción, el tiempo de ejecución sincroniza automáticamente la configuración del conector.

    Identidad federada

    1. Sigue la guía de federación de identidades para cargas de trabajo para otorgar a tu identidad externa acceso a Google Cloudcon la identidad temporal como cuenta de servicio.
    2. Descarga la configuración de la biblioteca cliente y coloca el archivo en la VM del agente remoto en /var/beyondcorp/credentials/credentials.json.
      1. Si usas una instancia EC2 de AWS como VM del agente remoto, haz una de las siguientes acciones:
        1. Haz que IMDSv2 sea opcional en la instancia de EC2.
        2. Agrega la siguiente línea al objeto credential_source en el archivo de configuración de la biblioteca cliente:
          "imdsv2_session_token_url": "http://169.254.169.254/latest/api/token"
          
    3. En la VM del agente remoto, ejecuta los siguientes comandos en la CLI de bce-connctl:
      bce-connctl config set project $PROJECT_ID
      bce-connctl config set region $REGION
      bce-connctl config set connector $CONNECTOR_NAME
      
    4. Ejecuta el siguiente comando para reiniciar el agente y que este tome las credenciales:
      sudo systemctl restart beyondcorp
      
    5. En tu extremo de Cloud Shell o de gcloud CLI, ejecuta el siguiente comando para establecer la variable de entorno requerida:
      SERVICE_ACCOUNT=my-service-account
      
      Reemplaza lo siguiente:
      • my-service-account: La cuenta de servicio Google Cloud asociada a la identidad externa.
    6. Ejecuta el siguiente comando para otorgar a la cuenta de servicio Google Cloud el rol BeyondCorp Connection Agent:

      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member="serviceAccount:$SERVICE_ACCOUNT" \
          --role="roles/beyondcorp.connectionAgent"
      
    7. Ejecuta el siguiente comando para crear el recurso del conector de la app Google Cloud .

      gcloud alpha beyondcorp app connectors create $CONNECTOR_NAME \
          --project=$PROJECT_ID \
          --location=$REGION \
          --member="serviceAccount:$SERVICE_ACCOUNT" \
          --display-name=$CONNECTOR_NAME
      

      Después de crear el recurso del conector de apps, el tiempo de ejecución del agente remoto sincroniza automáticamente la configuración del conector.

  3. Verifica la instalación del agente remoto:

    1. Ejecuta el siguiente comando para asegurarte de que el servicio se esté ejecutando:
      sudo systemctl status beyondcorp
      
    2. El agente remoto consta de tres contenedores de Docker: bce-control-runtime, bce-logagent y bce-connector. Ejecuta el siguiente comando para verificar que los tres contenedores se estén ejecutando:
      docker ps --filter name=bce
      
    3. Opcional: Puedes verificar los archivos de registro de los contenedores de Docker ejecutando el siguiente comando:
      docker logs -f CONTAINER_NAME
      
      Reemplaza CONTAINER_NAME por el nombre del contenedor de Docker.

Conecta una aplicación remota a una VPC

gcloud CLI

Antes de completar los siguientes pasos, asegúrate de tener instalado el SDK de gcloud CLI y de haber accedido con una cuenta que tenga el rol de beyondcorp.admin.

  1. Ejecuta los siguientes comandos para establecer las variables de entorno requeridas:

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    PROJECT_ID=my-project
    REGION=us-central1
    APP_ENDPOINT=APP_HOST:APP_PORT
    

    Reemplaza lo siguiente:

    • my-connector: Es el nombre del conector, definido en un paso anterior.
    • my-connection: Es un nombre único para la conexión.
    • my-project: El ID del proyecto de Google Cloud
    • us-central1: Es la región en la que se implementarán la conexión y las puertas de enlace.
    • APP_HOST: La dirección IP local o un FQDN que aloja tu aplicación.
    • APP_PORT: Es el número de puerto para conectarte a tu aplicación.
  2. Para crear una conexión entre tu aplicación y tu VPC, ejecuta el siguiente comando:

    gcloud alpha beyondcorp app connections create $CONNECTION_NAME \
        --project=$PROJECT_ID \
        --location=$REGION \
        --application-endpoint=$APP_ENDPOINT \
        --type=tcp \
        --connectors=$CONNECTOR_NAME \
        --display-name=$CONNECTION_NAME
    

    Ten en cuenta que este paso puede tardar varios minutos en completarse.

  3. Después de crear la conexión, ejecuta los siguientes comandos para recuperar los URIs de la puerta de enlace:

    GATEWAY_URI="$(gcloud alpha beyondcorp app connections describe $CONNECTION_NAME --project=$PROJECT_ID --location=$REGION --format='get(gateway.uri)')"
    GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/bce-ps7}"
    

    El GATEWAY_URI_L7 se usa para crear una regla de reenvío. El conector de apps de Chrome Enterprise Premium usa Private Service Connect para vincular el proyecto del consumidor a los recursos administrados en los proyectos administrados por Google.

API

  1. Ejecuta los siguientes comandos para establecer las variables de entorno requeridas:

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    PROJECT_ID=my-project
    REGION=us-central1
    APP_HOST=my-app-host
    APP_PORT=my-app-port
    

    Reemplaza lo siguiente:

    • my-connector: Es el nombre del conector, definido en un paso anterior.
    • my-connection: Es un nombre único para la conexión.
    • my-project: El ID del proyecto de Google Cloud
    • us-central1: Es la región en la que se implementarán la conexión y las puertas de enlace.
    • my-app-host: La dirección IP local o un FQDN que aloja tu aplicación.
    • my-app-port: Es el número de puerto para conectarte a tu aplicación.
  2. Para crear una conexión entre tu aplicación y tu VPC, ejecuta el siguiente comando:

    gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \
    -d "{ \
        'application_endpoint': \
        { \
            'host': '${APP_HOST}', \
            'port': '${APP_PORT}' \
        }, \
        'type': 'TCP_PROXY', \
        'display_name': '${CONNECTION_NAME}' \
    }"
    

    Ten en cuenta que este paso puede tardar varios minutos en completarse.

  3. Después de crear la conexión, ejecuta los siguientes comandos para recuperar los URIs de la puerta de enlace:

    GATEWAY_URI=$(gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections/${CONNECTION_NAME} | jq -r '.gateway.uri')
    GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/'bce-ps7'}"
    

    El GATEWAY_URI_L7 se usa para crear una regla de reenvío. El conector de apps de Chrome Enterprise Premium usa Private Service Connect para vincular el proyecto del consumidor a los recursos administrados en los proyectos administrados por Google.

Configura un balanceador de cargas de aplicaciones externo

Solo puedes conectar aplicaciones HTTPS a un balanceador de cargas de aplicaciones externo. No se admiten las aplicaciones HTTP.

gcloud CLI

Antes de completar los siguientes pasos, asegúrate de tener instalado el SDK de gcloud CLI y de haber accedido con una cuenta que tenga el rol de beyondcorp.admin.

  1. Ejecuta los siguientes comandos para establecer las variables de entorno requeridas:

    LB_PREFIX=web-app
    PROJECT_ID=my-project
    REGION=us-central1
    DOMAIN_NAME=app.example.com
    
    Reemplaza lo siguiente:

    • web-app: Es el prefijo que se agrega a los nombres de todos los recursos del balanceador de cargas.
    • my-project: El ID del proyecto de Google Cloud
    • us-central1: Es la región en la que se implementarán la conexión y las puertas de enlace.
    • app.example.com: Es el nombre de dominio de tu aplicación.
  2. Crea un grupo de extremos de red (NEG) con el siguiente comando:

    gcloud beta compute network-endpoint-groups create $LB_PREFIX-neg \
        --region=$REGION \
        --network-endpoint-type=private-service-connect \
        --psc-target-service=$GATEWAY_URI_L7
    

    Marcas opcionales:

    • Establece la marca --network para especificar el nombre de la red para los extremos de red en el NEG. Si no se especifica, se usa la red predeterminada del proyecto.
    • Establece la marca --subnet para especificar el nombre de la subred para los extremos de red en el NEG. Si no se especifica, el extremo de red puede pertenecer a cualquier subred en la región donde se crea el grupo de extremos de red.
  3. Ejecuta los siguientes comandos para crear un servicio de backend basado en un NEG y conectarlo a un adjunto de servicio de Private Service Connect:

    gcloud beta compute backend-services create $LB_PREFIX-backend-service \
        --global \
        --protocol=HTTPS \
        --load-balancing-scheme=EXTERNAL_MANAGED
    
    gcloud beta compute backend-services add-backend $LB_PREFIX-backend-service \
        --global \
        --network-endpoint-group=$LB_PREFIX-neg \
        --network-endpoint-group-region=$REGION
    
  4. Ejecuta los siguientes comandos para crear un certificado administrado por Google para tu dominio:

    gcloud compute addresses create $LB_PREFIX-static-ip \
        --ip-version=IPV4 \
        --global
    gcloud compute ssl-certificates create $LB_PREFIX-ssl-cert \
        --domains=$DOMAIN_NAME \
        --global
    
    LB_IP="$(gcloud compute addresses describe $LB_PREFIX-static-ip --global --format='value(address)')"
    
  5. Ejecuta los siguientes comandos para crear un balanceador de cargas de aplicaciones externo basado en el backend del paso anterior:

    gcloud compute url-maps create $LB_PREFIX-map-https \
        --default-service=$LB_PREFIX-backend-service
    
    gcloud compute target-https-proxies create $LB_PREFIX-https-lb-proxy \
        --url-map=$LB_PREFIX-map-https \
        --ssl-certificates=$LB_PREFIX-ssl-cert
    
    gcloud beta compute forwarding-rules create "$LB_PREFIX-https-lb-forwarding-rule" \
        --global \
        --target-https-proxy=$LB_PREFIX-https-lb-proxy \
        --address=$LB_IP \
        --ports=443 \
        --load-balancing-scheme=EXTERNAL_MANAGED
    

    Después de crear el balanceador de cargas de aplicaciones externo, se podrá acceder a tu aplicación a través de Internet con esa dirección IP.

  6. Después de crear el balanceador de cargas de aplicaciones externo, debes asociar su dirección IP con el nombre de dominio para que Google Cloud pueda aprovisionar un certificado SSL. Sigue las instrucciones de tu proveedor de DNS para asociar la dirección IP con el nombre de DNS. Ejecuta el siguiente comando para verificar el estado del aprovisionamiento:

    1. Mostrar la dirección IP que se configurará en el proveedor de DNS:
      echo "Load Balancer ip address - $LB_IP"
      
    2. Después de configurar el DNS, ejecuta el siguiente comando para verificar si el nombre de dominio se resuelve en la dirección IP:
      dig $DOMAIN_NAME
      
    3. Ejecuta el siguiente comando para obtener el estado del aprovisionamiento:
    gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \
        --global \
        --format="get(name,managed.status, managed.domainStatus)"
    

    Después de que se aprovisione el certificado SSL, deberías poder acceder a tu aplicación con el nombre de DNS.

API

  1. Ejecuta los siguientes comandos para establecer las variables de entorno requeridas:

    LB_PREFIX=web-app
    PROJECT_ID=my-project
    REGION=us-central1
    DOMAIN_NAME=app.example.com
    
    Reemplaza lo siguiente:

    • web-app: Es el prefijo que se agrega a los nombres de todos los recursos del balanceador de cargas.
    • my-project: El ID del proyecto de Google Cloud
    • us-central1: Es la región en la que se implementarán la conexión y las puertas de enlace.
    • app.example.com: Es el nombre de dominio de tu aplicación.
  2. Crea un grupo de extremos de red (NEG) con el siguiente comando:

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups \
    -d "{ \
        'name': '${LB_PREFIX}-neg', \
        'network_endpoint_type': 'private-service-connect', \
        'psc_target_service': '${GATEWAY_URI_L7}' \
    }"
    

    Campos opcionales:

    • Configura el campo network para especificar la URL de la red para los extremos de red en el NEG. Si no se especifica, se usa la red predeterminada del proyecto.
    • Configura el campo subnetwork para especificar la URL de la subred para los extremos de red en el NEG. Si no se especifica, el extremo de red puede pertenecer a cualquier subred de la región en la que se crea el grupo de extremos de red.
  3. Ejecuta los siguientes comandos para crear un servicio de backend basado en un NEG y conectarlo a un adjunto de servicio de Private Service Connect:

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices \
    -d "{ \
        'name': '${LB_PREFIX}-backend-service', \
        'service_protocol': 'HTTPS', \
        'port_name': 'https', \
        'load_balancing_scheme': 'EXTERNAL_MANAGED' \
    }"
    
    gcurl -X PATCH https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service \
    -d "{ \
        'backends': \
        [{ \
            'group': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups/${LB_PREFIX}-neg' \
        }] \
    }"
    
  4. Ejecuta los siguientes comandos para crear un certificado administrado por Google para tu dominio:

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses \
    -d "{ \
        'name': '${LB_PREFIX}-static-ip', \
        'ip_version': 'IPV4' \
    }"
    
    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates \
    -d "{ \
        'name': '${LB_PREFIX}-ssl-cert', \
        'managed': \
        { \
            'domains': '${DOMAIN_NAME}' \
        }, \
        'type': 'MANAGED' \
    }"
    
    LB_IP=$(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses/${LB_PREFIX}-static-ip | jq -r '.address')
    
  5. Ejecuta los siguientes comandos para crear un balanceador de cargas de aplicaciones externo basado en el backend del paso anterior:

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps \
    -d "{ \
        'name': '${LB_PREFIX}-map-https', \
        'default_service': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service' \
    }"
    
    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies \
    -d "{ \
        'name': '${LB_PREFIX}-https-lb-proxy', \
        'url_map': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps/${LB_PREFIX}-map-https', \
        'ssl_certificate': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert' \
    }"
    
    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/forwardingRules \
    -d "{ \
        'name': '${LB_PREFIX}-https-lb-forwarding-rule', \
        target: 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies/${LB_PREFIX}-https-lb-proxy', \
        'ip_address': '${LB_IP}', \
        'port_range': '443-443', \
        'load_balancing_scheme': 'EXTERNAL_MANAGED' \
    }"
    

    Después de crear el balanceador de cargas de aplicaciones externo, se podrá acceder a tu aplicación a través de Internet con esa dirección IP.

  6. Después de crear el balanceador de cargas de aplicaciones externo, debes asociar su dirección IP con el nombre de dominio para que Google Cloud pueda aprovisionar un certificado SSL. Sigue las instrucciones de tu proveedor de DNS para asociar la dirección IP con el nombre de DNS. Ejecuta el siguiente comando para verificar el estado del aprovisionamiento:

    1. Mostrar la dirección IP que se configurará en el proveedor de DNS:
      echo "Load Balancer ip address - $LB_IP"
      
    2. Después de configurar el DNS, ejecuta el siguiente comando para verificar si el nombre de dominio se resuelve en la dirección IP:
      dig $DOMAIN_NAME
      
    3. Ejecuta el siguiente comando para obtener el estado del aprovisionamiento:
    echo $(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert \
    | jq -r '.name + " " + .managed.status + " " + (.managed.domainStatus | keys[]) + "=" + .managed.domainStatus[]')
    

    Después de que se aprovisione el certificado SSL, deberías poder acceder a tu aplicación con el nombre de DNS.

Habilita Identity-Aware Proxy

Sigue la documentación de Identity-Aware Proxy (IAP) para configurar Identity-Aware Proxy. Después de configurar IAP, habilítalo para el servicio de backend completando los siguientes pasos:

  1. Ve a la página de IAP:
    IAP

  2. En RECURSOS HTTPS, busca $LB_PREFIX-backend-service. Para habilitar IAP en este recurso, haz clic en el botón de activación de la columna IAP. En la ventana Activar IAP que aparece, selecciona la casilla de verificación para confirmar los requisitos de configuración de este recurso y haz clic en ACTIVAR para confirmar que deseas que IAP proteja tu recurso.

  3. Para permitir que los usuarios accedan a tu aplicación, debes otorgarles el rol de Usuario de aplicación web protegida con IAP para el proyecto. Para ello, completa los siguientes pasos:

    1. Selecciona la casilla de verificación $LB_PREFIX-backend-service.
    2. En el panel de información, selecciona AGREGAR PRINCIPAL y, luego, ingresa las direcciones de correo electrónico de los grupos o las personas que deben tener acceso a tu aplicación.
    3. En la lista desplegable Seleccionar un rol, selecciona Cloud IAP > Usuario de aplicación web protegida con IAP y, luego, haz clic en Guardar.

Tu aplicación local ahora debería estar publicada en Internet y protegida por Chrome Enterprise Premium.

Configura el conector de apps con la consola de Google Cloud

Completa los procedimientos de esta sección para implementar el conector de la app de Chrome Enterprise Premium con la consola de Google Cloud .

Ingresa los detalles de tu solicitud

Completa los siguientes pasos para agregar los detalles de tu aplicación:

  1. En la consola de Google Cloud , ve a la página de IAP.
    Ir a IAP

  2. Haz clic en el botón CONNECT NEW APPLICATION y, luego, selecciona Connect via App Connector.

  3. En Nombre de la aplicación, ingresa el nombre de la aplicación que deseas proteger.

  4. En URL externa de la aplicación, ingresa una URL de acceso público para que los usuarios accedan a tu aplicación.

  5. Haz clic en Siguiente.

Configura la conexión a Google Cloud

Completa los siguientes pasos para establecer la conectividad entre Google Cloud y tu entorno que no es deGoogle Cloud .

  1. Haz clic en el botón CREATE APP CONNECTOR y, luego, ingresa la siguiente información:

    • Nombre del conector de la app: Es un nombre para el conector.
    • Región: Es la región en la que se implementarán las puertas de enlace de conexión y el conector.
  2. Haz clic en el botón CREAR.

  3. Sigue las instrucciones del panel Aprovisiona una máquina virtual para implementar el agente remoto en tu VM.

  4. Haz clic en el botón PROBAR EL ESTADO DE LA CONEXIÓN para probar la conexión.

  5. Para configurar el conector que creaste en el paso anterior, ingresa la siguiente información en ¿Dónde puede encontrar Google Cloud tu aplicación?:

    • Nombre de host interno: Es la dirección IP local o el FQDN que aloja tu aplicación.
    • Puerto: Es el número de puerto para conectarse a tu aplicación.

Otorga acceso a tu aplicación (opcional)

  1. En Principales nuevas, ingresa uno o más de los siguientes elementos:

    • Correo electrónico de la cuenta de Google: usuario@gmail.com
    • Grupo de Google: administradores@googlegroups.com
    • Cuenta de servicio: servidor@ejemplo.gserviceaccount.com
    • Dominio de Google Workspace: example.com
    • Cualquier usuario: Ingresa allUsers para otorgar acceso a todos los usuarios.
    • Todas las cuentas de Google: allAuthenticatedUsers para otorgar acceso a cualquier usuario que haya accedido a una Cuenta de Google
  2. Selecciona uno o más niveles de acceso y, luego, haz clic en SIGUIENTE.

Publica tu aplicación

  1. Para publicar tu aplicación, haz clic en el botón SECURELY PUBLISH APPLICATION.

  2. Después de publicar tu aplicación y recibir la confirmación de aplicación publicada de forma segura, debes crear un registro DNS para que la URL externa de tu aplicación apunte a la dirección IP del proxy. Realiza los pasos que se indican a continuación:

    • En la sección PASO 2: Actualiza el DNS, copia la dirección IP del campo Dirección IP. Sigue las instrucciones de tu proveedor de DNS para asociar la dirección IP con el nombre de DNS y crear un registro DNS.
  3. Después de crear el registro DNS, haz clic en el botón PROBAR para probarlo. Deberías recibir una confirmación de que se aprobó la prueba de DNS.

  4. Haz clic en LISTO.

Habilitar IAP

  1. Ve a la página de IAP.
    Ir a IAP

  2. En la lista de recursos, busca tu aplicación y, luego, selecciona el botón de la columna IAP.

  3. En el cuadro de diálogo Activar IAP que aparece, selecciona la casilla de verificación Leí los requisitos de configuración y configuré mi servicio de backend según la documentación. y, luego, haz clic en ACTIVAR.

Tu aplicación local ahora debería estar publicada en Internet y protegida por Chrome Enterprise Premium.

Crea una puerta de enlace de la app (opcional)

Las puertas de enlace de la app se crean y administran de forma implícita cuando conectas una aplicación con el conector de apps. También puedes crear tus propias puertas de enlace de la app para organizar los recursos de conexiones de apps en grupos. El tráfico de las conexiones de apps alojadas en diferentes puertas de enlace de apps se enruta a través de una infraestructura virtual independiente.

Para crear y especificar una puerta de enlace de la app, completa los siguientes pasos.

gcloud CLI

  1. Ejecuta el siguiente comando para establecer las variables de entorno requeridas:

    CONNECTOR_NAME=CONNECTOR_NAME
    CONNECTION_NAME=CONNECTION_NAME
    GATEWAY_NAME=GATEWAY_NAME
    PROJECT_ID=PROJECT_ID
    REGION=REGION
    APP_ENDPOINT=APP_HOST:APP_PORT
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: Es el nombre del conector, definido en un paso anterior.
    • CONNECTION_NAME: Es un nombre único para la conexión.
    • GATEWAY_NAME: Es el nombre de la puerta de enlace de la app.
    • PROJECT_ID: El ID del proyecto de Google Cloud
    • REGION: Es la región en la que se implementará la puerta de enlace de la app, como us-central1.
    • APP_HOST: La dirección IP local o un FQDN que aloja tu aplicación.
    • APP_PORT: Es el número de puerto para conectarte a tu aplicación.
  2. Ejecuta el siguiente comando para crear una puerta de enlace de la app:

    gcloud beta beyondcorp app gateways create $GATEWAY_NAME \
    --project=$PROJECT_ID --location=$REGION --display-name=$GATEWAY_NAME
    
  3. Para especificar una puerta de enlace de la app en una llamada de conexión de creación, ejecuta el siguiente comando:

    gcloud beta beyondcorp app connections create $CONNECTION_NAME \
    --project=$PROJECT_ID \
    --location=$REGION \
    --application-endpoint=$APP_ENDPOINT \
    --type=tcp \
    --connectors=$CONNECTOR_NAME \
    --display-name=$CONNECTION_NAME \
    --app-gateway=$GATEWAY_NAME
    

API

  1. Ejecuta el siguiente comando para establecer las variables de entorno requeridas:

    CONNECTOR_NAME=CONNECTOR_NAME
    CONNECTION_NAME=CONNECTION_NAME
    GATEWAY_NAME=GATEWAY_NAME
    PROJECT_ID=PROJECT_ID
    REGION=REGION
    APP_ENDPOINT=APP_HOST:APP_PORT
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: Es el nombre del conector, definido en un paso anterior.
    • CONNECTION_NAME: Es un nombre único para la conexión.
    • GATEWAY_NAME: Es el nombre de la puerta de enlace de la app.
    • PROJECT_ID: El ID del proyecto de Google Cloud
    • REGION: Es la región en la que se implementará la puerta de enlace de la app, como us-central1.
    • APP_HOST: La dirección IP local o un FQDN que aloja tu aplicación.
    • APP_PORT: Es el número de puerto para conectarte a tu aplicación.
  2. Ejecuta el siguiente comando para crear una puerta de enlace de la app:

    gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appGateways?app_gateway_id=${GATEWAY_NAME} \
    -d "{ \
    'type': 'TCP_PROXY', \
    'display_name': '${CONNECTION_NAME}' \
    }"
    
  3. Para especificar una puerta de enlace de la app en una llamada de conexión de creación, ejecuta el siguiente comando:

    gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \
    -d "{ \
    'application_endpoint': \
    { \
    'host': '${APP_HOST}', \
    'port': '${APP_PORT}' \
    }, \
    'gateway': { 'app_gateway' : 'projects/${PROJECT_ID}/locations/${REGION}/appGateways/${GATEWAY_NAME}'}, \
    'connectors':['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \
    'type': 'TCP_PROXY', \
    'display_name': '${CONNECTION_NAME}' \
    

Próximos pasos

Soluciona problemas

No se encuentran los recursos creados anteriormente

Cuando uses la versión 392.0.0 o posterior de gcloud CLI, usa los nuevos recursos predeterminados del conector de la app AppConnector y AppConnection. Por ejemplo, gcloud alpha beyondcorp app connectors y gcloud alpha beyondcorp app connections hacen referencia a los recursos nuevos.

Para acceder a los recursos heredados creados con una versión de gcloud CLI anterior a la versión 392.0.0, usa la palabra clave legacy. Por ejemplo, gcloud alpha beyondcorp app legacy connectors y gcloud alpha beyondcorp app legacy connections hacen referencia a los recursos heredados.

Las configuraciones que usan recursos heredados seguirán funcionando por ahora, pero quedarán obsoletas en el futuro.

  • Sigue los procedimientos que se indican en esta guía para configurar recursos nuevos.
  • Si tu configuración usa recursos heredados, usa la palabra clave legacy para ubicarlos y quitarlos. Vuelve a crear los recursos siguiendo los procedimientos que se indican en este documento.
  • Si tienes una configuración incompleta que usa recursos heredados, usa la palabra clave legacy para ubicar esos recursos y quitarlos. Vuelve a crear los recursos siguiendo los procedimientos que se indican en este documento.

Errores de TLS/SSL

ERR_SSL_VERSION_OR_CIPHER_MISMATCH

El navegador muestra el error ERR_SSL_VERSION_OR_CIPHER_MISMATCH o errores similares de TLS/SSL, y no redirecciona a la página de acceso.

  • Verifica el estado de los certificados en la Google Cloud página de detalles del balanceador de cargas.

    NOTA: El aprovisionamiento de un certificado administrado por Google puede tomar hasta 60 minutos.

TLS error

El navegador muestra el error upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection failure, transport failure reason: TLS error o errores similares de TLS/SSL después de redireccionar a la página de acceso.

  • Verifica que el extremo de la aplicación que se usa en la conexión sea HTTPS.
  • Verifica que se pueda acceder al extremo de la app desde la VM del agente remoto con curl:

    curl https://$APP_ENDPOINT
    

    Es posible que debas usar la marca -k si el certificado de tu aplicación está autofirmado.

Verifica la configuración del firewall

Asegúrate de que los firewalls entre el agente remoto y la Internet permitan conexiones salientes a los siguientes dominios:

Tipo de conexión Dominio Puerto
TCP raw.githubusercontent.com 443
TCP gcr.io 443
TCP *.googleapis.com 443
TCP tunnel.cloudproxy.app 443
TCP *.tunnel.cloudproxy.app 443
TCP accounts.google.com 443
TCP oauth2.googleapis.com 443

Cómo cambiar los conectores asociados a una conexión

gcloud

  1. Ejecuta el siguiente comando para establecer las variables de entorno requeridas:

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    REGION=us-central1
    PROJECT_ID=my-project
    

    Reemplaza lo siguiente:

    • my-connector: Es el nombre del conector. También puede ser una lista separada por comas, como connector1,connector2.
    • my-connection: Es el nombre de la conexión que se actualizará.
    • us-central1: Es la región en la que se implementa la conexión.
    • my-project: El ID del proyecto de Google Cloud
  2. Para cambiar los conectores asociados a una conexión, ejecuta el siguiente comando:

    gcloud alpha beyondcorp app connections update $CONNECTION_NAME \
        --project=$PROJECT_ID \
        --location=$REGION \
        --connectors=$CONNECTOR_NAME
    

API

  1. Ejecuta el siguiente comando para establecer las variables de entorno requeridas:

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    REGION=us-central1
    PROJECT_ID=my-project
    

    Reemplaza lo siguiente:

    • my-connector: Es el nombre del conector.
    • my-connection: Es el nombre de la conexión que se actualizará.
    • us-central1: Es la región en la que se implementa la conexión.
    • my-project: El ID del proyecto de Google Cloud
  2. Para cambiar los conectores asociados a una conexión, ejecuta el siguiente comando:

    gcurl -X PATCH \
    https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}?update_mask=connectors \
    -d "{ \
        'connectors': ['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \
    }"
    

    Para verificar la actualización, ejecuta el siguiente comando y verifica el campo connectors del resultado:

    gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}
    

Proxy

La compatibilidad con proxies se introdujo a principios de 2024 y requiere cambios en el archivo systemd de BeyondCorp. Si instalaste el agente remoto antes de esta hora y quieres usar un proxy, vuelve a instalar el agente remoto.

  • Verifica que el daemon de Docker esté configurado correctamente para trabajar con proxies.

  • Verifica que estén configuradas las variables de entorno del proxy HTTP y HTTPS, y que ambas usen el esquema http://. No se admiten el esquema https:// ni otros esquemas.

  • Ejecuta el comando env para verificar que las variables de entorno del proxy se exporten a los subprocesos.

  • Solo se admiten HTTP_PROXY, HTTPS_PROXY, NO_PROXY y sus equivalentes en minúsculas.

  • Si necesitas actualizar la configuración del proxy después de la instalación, actualiza las variables de entorno en /var/beyondcorp/env/PROXY si usas el usuario beyondcorp predeterminado. Si usas un usuario personalizado, actualiza /home/$USER/.docker/config.json según las instrucciones para configurar el cliente de Docker. Para aplicar los cambios del proxy, reinicia el agente remoto con el siguiente comando:

    sudo systemctl restart beyondcorp
    

Herramientas de diagnóstico

run-post-install-checks

run-post-install-checks es una secuencia de comandos instalada en /var/beyondcorp/scripts/ que verifica si tu agente remoto está instalado, inscrito y en buen estado correctamente. Después de crear correctamente un app connection y asignarlo a un agente remoto (conector), ve a la VM del agente remoto y ejecuta run-post-install-checks con el siguiente comando:

sudo /var/beyondcorp/scripts/run-post-install-checks

Si todo está en orden, la secuencia de comandos imprimirá un mensaje de éxito.

run-diagnostics

run-diagnostics es una secuencia de comandos instalada en /var/beyondcorp/scripts/ que diagnostica problemas comunes en la VM del agente remoto y muestra un informe que puedes compartir con el equipo de asistencia de Chrome Enterprise Premium. Para ejecutar esta secuencia de comandos de diagnóstico, ejecuta el siguiente comando:

sudo /var/beyondcorp/scripts/run-diagnostics

El informe de diagnóstico se escribe en la consola y en ./diagnostics-report.txt.

CLI del agente remoto

bce-connctl es la interfaz de línea de comandos (CLI) del administrador del agente remoto para interactuar con el agente remoto de forma local. Esta CLI admite varios comandos, como los que se usan para inscribir el agente remoto, verificar el estado y establecer valores de configuración.

Comando init

Puedes usar el comando Init para inicializar el agente remoto y generar una secuencia de comandos para inscribir el agente.

Ejemplo:

bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME

Comandos de estado

Puedes usar los comandos de estado para administrar el estado del agente remoto.

  • List: Usa este comando para enumerar el estado general del agente remoto, así como el estado de cualquier conexión que admita este agente. Ejemplo: bce-connctl status list

Comandos de configuración

Puedes usar los comandos de Config para administrar los valores de configuración de tu agente remoto.

  • List: Usa este comando para enumerar los valores de configuración del agente remoto. Ejemplo: bce-connctl config list
  • Set: Usa este comando para establecer un valor de configuración del agente remoto. Ejemplo: bce-connctl config set <key> <value>

Comandos de inscripción

Puedes usar los comandos de inscripción para administrar la inscripción del agente remoto.

  • Describe: Usa este comando para obtener el estado de inscripción del agente remoto. Ejemplo: bce-connctl enrollment describe

    Cuando la secuencia de comandos de inscripción de bce-connctl init se completa correctamente y la clave pública se sube correctamente, el estado es ENROLLED.

Ayuda

Puedes agregar la marca -h o --help a cualquier comando bce-connctl para imprimir información de uso.

bce-connctl init -h