Protege aplicaciones que no son de Google Cloud mediante el conector de apps

En esta página, se describe cómo configurar y usar el conector de apps de BeyondCorp Enterprise para proteger las aplicaciones que no son de Google Cloud.

Descripción general

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

Un beneficio de usar el conector de apps de BeyondCorp Enterprise 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 en el que se muestran los componentes principales del conector de la app de BeyondCorp Enterprise.

Componentes del conector de apps de BeyondCorp Enterprise

Los componentes del conector de apps de BeyondCorp Enterprise se rigen por dos recursos de API principales, conectores y conexiones:

  • Conectores: Un recurso de conector define un agente remoto único del conector de apps. 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 de Google Cloud y retransmiten tráfico a extremos de aplicaciones remotas en el mismo entorno que los agentes.
  • Conexiones: Un recurso de conexión define una conexión lógica de Google Cloud a un extremo de aplicación específico que se identifica mediante la dirección IP:Puerto o FQDN:Puerto. Un recurso de conexión organiza un conjunto de puertas de enlace de conectores de apps administradas que se asignan a un extremo de aplicación determinado. Las puertas de enlace se administran en Google Cloud y finalizan las sesiones del túnel de los agentes remotos cuando ya no son necesarios.

El conector y los recursos de conexión son regionales y solo se pueden usar dentro de un contexto regional. Por ejemplo, un conector asociado con la región A no se puede asignar a una conexión creada para la región B.

Antes de comenzar

En este momento, puedes usar el conector de aplicaciones de BeyondCorp Enterprise solo con aplicaciones HTTPS. Además, los balanceadores de cargas de HTTPS no usan la extensión de indicación del nombre del servidor (SNI) para las conexiones al backend. Para obtener más detalles, consulta Encriptación del balanceador de cargas a los backends.

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

Cada agente de conector de app de BeyondCorp Enterprise requiere una VM de Linux que ejecute Docker. Te 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 VM de Linux, recomendamos un mínimo de 2 CPU con 2 GB de RAM.

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

Configura el proyecto de Google Cloud

A fin de configurar un proyecto de Google Cloud para usarlo con el conector de apps de BeyondCorp Enterprise, debes habilitar la API de BeyondCorp Enterprise. Habilita la API mediante los siguientes pasos:

gcloud

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

  1. Configura la variable de entorno requerida mediante la ejecución del siguiente comando:

    PROJECT_ID=my-project
    

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

  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 requeridos mediante la ejecución de los siguientes comandos:

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

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

  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 "{}"
    

Instala 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 BeyondCorp Enterprise. 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 de agente remoto permita todo el tráfico saliente iniciado en el puerto 443 para el rango de IP IAP-TCP 35.235.240.0/20.
  2. Instala el agente remoto:

    1. Verifica que tu DNS esté configurado de forma correcta y que puedas acceder a la aplicación con curl.
    2. Instala el Docker Engine.
    3. Ejecuta el siguiente comando en la VM del 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
      
    4. Para agregar el alias bce-connctl a tu shell, ejecuta el siguiente comando:
       source ~/.bce_alias
       
    5. Configura las variables de entorno necesarias mediante la ejecución de los siguientes comandos:

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

      • my-project: Es el ID del proyecto de Google Cloud.
      • us-central1: Es la región en la que se implementan la conexión y las puertas de enlace.
      • my-connector: Es el nombre del conector.
    6. Para inscribir el conector, ejecuta el siguiente comando en la CLI de bce-connctl:

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

      Sigue las instrucciones en pantalla para copiar y pegar la secuencia de comandos de inscripción y terminar de inscribir el conector. Para ejecutar la secuencia de comandos de inscripción, debes tener permisos OWNER en el proyecto.

      Cuando se completa la secuencia de comandos de inscripción, el entorno de ejecución 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 esté en ejecución:
      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 estén en ejecución:
      docker ps --filter name=bce
      
    3. (Opcional) Puedes verificar los archivos de registro de los contenedores de Docker si ejecutas 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

Antes de completar los siguientes pasos, asegúrate de tener instalado el SDK de gcloud CLI y de acceder con una cuenta que tenga la función beyondcorp.admin.

  1. Configura las variables de entorno necesarias mediante la ejecución de los siguientes comandos:

    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, que se definió 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 implementan 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 conectar 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
    

    Tenga 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 URI de 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}"
    

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

API

  1. Configura las variables de entorno necesarias mediante la ejecución de los siguientes comandos:

    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, que se definió 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 implementan 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 conectar 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}' \
    }"
    

    Tenga 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 URI de 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'}"
    

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

Configura un balanceador de cargas de HTTP(S) externo

Solo puedes conectar aplicaciones HTTPS a un balanceador de cargas de HTTP(S) externo. Las aplicaciones HTTP no son compatibles.

gcloud

Antes de completar los siguientes pasos, asegúrate de tener instalado el SDK de gcloud CLI y de acceder con una cuenta que tenga la función beyondcorp.admin.

  1. Configura las variables de entorno necesarias mediante la ejecución de los siguientes comandos:

    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 del proyecto predeterminada.
    • Establece la marca --subnet para especificar el nombre de la subred de los extremos de red en el NEG. Si no se especifica, el extremo de red puede pertenecer a cualquier subred en la región en la que se crea el grupo de extremos de red.
  3. Crea un servicio de backend basado en NEG y conéctalo a un adjunto de servicio de Private Service Connect mediante la ejecución de los siguientes comandos:

    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. Crea un certificado administrado por Google para tu dominio mediante la ejecución de los siguientes comandos:

    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. Crea un balanceador de cargas de HTTP(S) externo basado en el backend del paso anterior mediante la ejecución de los siguientes comandos:

    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 HTTP(S) externo, se puede acceder a tu aplicación a través de Internet mediante esa dirección IP.

  6. Después de crear el balanceador de cargas de HTTP(S) externo, debes asociar su dirección IP al nombre de dominio para que Google Cloud pueda aprovisionar un certificado SSL. Usa las instrucciones del proveedor de DNS para saber cómo asociar la dirección IP al nombre de DNS. Ejecuta el siguiente comando para verificar el estado de aprovisionamiento:

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

    Después de aprovisionar el certificado SSL, debería poder acceder a su aplicación con el nombre de DNS.

API

  1. Configura las variables de entorno necesarias mediante la ejecución de los siguientes comandos:

    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:

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

    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. Crea un certificado administrado por Google para tu dominio mediante la ejecución de los siguientes comandos:

    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. Crea un balanceador de cargas de HTTP(S) externo basado en el backend del paso anterior mediante la ejecución de los siguientes comandos:

    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 HTTP(S) externo, se puede acceder a tu aplicación a través de Internet mediante esa dirección IP.

  6. Después de crear el balanceador de cargas de HTTP(S) externo, debes asociar su dirección IP al nombre de dominio para que Google Cloud pueda aprovisionar un certificado SSL. Usa las instrucciones del proveedor de DNS para saber cómo asociar la dirección IP al nombre de DNS. Ejecuta el siguiente comando para verificar el estado de aprovisionamiento:

    1. Muestra la dirección IP para configurar en el proveedor de DNS:
      echo "Load Balancer ip address - $LB_IP"
      
    2. Después de configurar el DNS, verifica si el nombre de dominio se resuelve en la dirección IP mediante la ejecución del siguiente comando:
      dig $DOMAIN_NAME
      
    3. Obtén el estado de aprovisionamiento ejecutando el siguiente comando:
    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 aprovisionar el certificado SSL, debería poder acceder a su 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, habilita IAP para el servicio de backend mediante 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, haga clic en el botón de activación en la columna IAP. En la ventana Activar IAP que aparece, seleccione la casilla de verificación para confirmar los requisitos de configuración de este recurso y haga clic en ACTIVAR para confirmar que desea que IAP proteja su recurso.

  3. Para permitir que los usuarios accedan a tu aplicación, debes otorgarles la función Usuario de aplicación web protegida con IAP para el proyecto completando 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 personas que deberían tener acceso a tu solicitud.
    3. En la lista desplegable Seleccionar una función, selecciona Cloud IAP > Usuario de aplicación web protegida con IAP y, luego, haz clic en Guardar.

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

Configura el conector de apps con la consola de Google Cloud

Completa los procedimientos de esta sección para implementar el conector de apps de BeyondCorp Enterprise mediante la consola de Google Cloud.

Ingresa los detalles de tu solicitud

Para agregar los detalles de tu aplicación, completa los siguientes pasos:

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

  2. Haz clic en el botón CONECTAR APLICACIÓN NUEVA y, luego, selecciona Conectar a través de App Connector.

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

  4. En URL orientada a la aplicación externa, 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 el entorno que no es de Google Cloud.

  1. Haz clic en el botón CREAR CONECTOR DE APLICACIONES y, luego, ingresa la siguiente información:

    • Nombre del conector de apps: Un nombre para el conector.
    • Región: La región en la que se implementan las puertas de enlace de conexión y el conector.
  2. Haz clic en el botón CREAR.

  3. Sigue las instrucciones en el 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. Configura el conector que creaste en el paso anterior. Para ello, ingresa la siguiente información en ¿Dónde puede Google Cloud encontrar tu aplicación?

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

Otorga acceso a tu aplicación (opcional)

  1. En Principales nuevas, ingresa una o más de las siguientes opciones:

    • Correo electrónico de la cuenta de Google: usuario@gmail.com
    • Grupo de Google: administradores@googlegroups.com
    • Cuenta de servicio: servidor@ejemplo.cuentadeserviciog.com
    • Dominio de Google Workspace: example.com
    • cualquiera: 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. Seleccione uno o más niveles de acceso y, luego, haga 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 la 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 la aplicación se dirija a la dirección IP del proxy. Realiza los pasos que se indican a continuación:

    • En la sección PASO 2: Actualizar DNS, copia la dirección IP del campo Dirección IP. Usa la dirección a fin de crear un registro DNS. Para ello, sigue las instrucciones de tu proveedor de DNS sobre cómo asociar la dirección IP al nombre de DNS.
  3. Después de crear el registro DNS, haga clic en el botón PROBAR para probarlo. Debería recibir una confirmación de prueba de DNS aprobada.

  4. Haz clic en LISTO.

Habilita 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 en la columna IAP.

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

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

Próximos pasos

Soluciona problemas

No se pueden encontrar los recursos creados anteriormente

Cuando uses la versión 392.0.0 o posterior de la CLI de gcloud, usa los recursos predeterminados nuevos del conector de apps 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 que se crearon 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 de esta guía para configurar recursos nuevos.
  • Si tu configuración usa recursos heredados, usa la palabra clave legacy para ubicar esos recursos y quitarlos. Siga los procedimientos que se indican en este documento para volver a crear los recursos.
  • Si tiene una configuración incompleta que utiliza recursos heredados, use la palabra clave legacy para localizarlos y quitarlos. Siga los procedimientos que se indican en este documento para volver a crear los recursos.

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 página de detalles del balanceador de cargas de Google Cloud.

    NOTA: El aprovisionamiento de un certificado administrado por Google puede demorar 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 de TLS/SSL similares 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 mediante curl:

    curl https://$APP_ENDPOINT
    

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

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 el agente remoto está instalado correctamente, inscrito y en buen estado. Después de crear con éxito una app connection y asignarla 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

La secuencia de comandos imprime un mensaje de éxito si todo está en orden.

run-diagnostics

run-diagnostics es una secuencia de comandos instalada en /var/beyondcorp/scripts/ que diagnostica problemas comunes de la VM del agente remoto y, luego, imprime un informe que puedes compartir con el equipo de asistencia de BeyondCorp. 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 de agente remoto

bce-connctl es la interfaz de línea de comandos (CLI) del administrador remoto para interactuar de forma local con el agente remoto. Esta CLI admite varios comandos, como la inscripción del agente remoto, la verificación del estado y la configuración de los 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 compatible con este agente. Ejemplo: bce-connctl status list

Comandos de configuración

Puedes usar los comandos de configuración 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
  • Configurar: 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.

  • Describir: 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 complete correctamente y la clave pública se suba correctamente, el estado será ENROLLED.

Ayuda

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

bce-connctl init -h