En esta página, se describe cómo configurar y usar el conector de apps de Chrome Enterprise Premium para hacer lo siguiente: aplicaciones seguras que no son de Google Cloud.
Descripción general
Puedes usar el conector de apps Premium de Chrome Enterprise para proporcionar identidad y Acceso adaptado al contexto en aplicaciones HTTPS que se ejecutan en aplicaciones que no son de Google Cloud. entornos de prueba. El conector de apps Premium de Chrome Enterprise es un conector seguro y Interfaz entre el plano de aplicación de Chrome Enterprise Premium y las aplicaciones que se ejecutan en otras nubes y entornos locales.
Un beneficio de usar el conector de apps de Chrome Enterprise Premium es que no necesitas abrir firewalls o configurar conexiones de Cloud VPN de sitio a sitio.
Arquitectura
A continuación, se muestra un diagrama de arquitectura de alto nivel que representa los componentes principales del conector de apps Premium de Chrome Enterprise.
Los componentes del conector de apps de Chrome Enterprise Premium se rigen mediante 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. Conector de apps los agentes remotos se implementan en entornos empresariales remotos, como en otras de Google y entornos locales. Los agentes remotos inician y mantienen el túnel. a Google Cloud, recibir tráfico de Google Cloud y retransmitir 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 desde Google Cloud a un extremo de aplicación específico que esté identificados con 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 a Google Cloud y finaliza las sesiones del túnel desde agentes cuando ya no sean necesarios.
- Puertas de enlace de apps
Una puerta de enlace de apps es una oferta de servicio administrado por Google. Conector de apps remoto se conectan a una o más puertas de enlace que permiten las conexiones para retransmitir tráfico de usuarios finales a agentes remotos. Tráfico de la aplicación que se alojan en la misma puerta de enlace de apps se enruta a través de un de Google Cloud.
Cuando conectas una aplicación con el conector de apps, se inhabilitan que se crean y administran de forma implícita. También puedes crear apps de de enlaces de enlace para organizar los recursos de conexiones de apps en grupos. Aplicación las puertas de enlace brindan la flexibilidad de agrupar o segregar las conexiones de la app Permitir el aislamiento de la app
Cada puerta de enlace de apps puede admitir hasta 1 Gbps de capacidad de procesamiento total para hasta 200,000 conexiones simultáneas. Recomendamos que crees versiones de alta disponibilidad para aplicaciones fundamentales que requieren alto rendimiento. Puedes asignar un máximo de 10 apps por puerta de enlace.
Admite hasta 200,000 conexiones simultáneas y hasta 1 Gbps en total de procesamiento, recomendamos que uses una VM dedicada de 8 núcleos y 8 GB memoria para ejecutar el agente remoto del conector de apps. Por ejemplo, puedes dedicar 2 Agentes remotos del conector de apps en un clúster de alta disponibilidad 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 aplicaciones dedicada (app_gateway1). Crear otro clúster de 2 VMs cada uno con 8 núcleos y 8 GB de memoria para admitir una combinación de 10 con otra puerta de enlace de aplicaciones dedicada (app_gateway2).
Los recursos del conector de apps, la conexión de la app y la puerta de enlace de apps son regionales. Solo puedes usarlas en un contexto regional. Por ejemplo, no puedes asignar un conector de app en la región A a una conexión o puerta de enlace de app creada en la región B.
Antes de comenzar
Puedes usar el conector de apps de Chrome Enterprise Premium solo con aplicaciones HTTPS. Además, los balanceadores de cargas HTTPS no usan el campo Server Name Extensión de indicación (SNI) para 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 Chrome Enterprise Premium, debes tener lo siguiente:
- Una licencia de Chrome Enterprise Premium
- Google Cloud CLI versión 392 o posterior
Cada agente de conector de apps de Chrome Enterprise Premium requiere una VM de Linux que ejecutar 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 las VMs 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 la consola de Google Cloud. Para usar gcloud y las APIs, completa los siguientes pasos. Para usar la consola de Google Cloud, consulta Configura el conector de apps con la consola de Google Cloud.
Configura el proyecto de Google Cloud
Configura un proyecto de Google Cloud para usarlo con la app de Chrome Enterprise Premium debes habilitar la API de Chrome Enterprise Premium. Para habilitar la API, haz lo siguiente: completando los siguientes pasos:
gcloud CLI
Antes de completar los siguientes pasos, asegúrate de tener instalado el SDK de gcloud CLI.
Para configurar la variable de entorno requerida, ejecuta el siguiente comando:
PROJECT_ID=my-project
Reemplaza my-project por el ID del proyecto de Google Cloud.
Para habilitar la API, ejecuta el siguiente comando:
gcloud config set project $PROJECT_ID gcloud services enable beyondcorp.googleapis.com
API
Obtén un acceso token y establece la los alias y las variables de entorno necesarias ejecutando el siguiente comandos:
PROJECT_NUMBER=my-project-number ACCESS_TOKEN=my-access-token
Reemplaza my-project por el ID del proyecto de Google Cloud.
Configura un alias conveniente para usar tu token de acceso:
alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
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 aloja una aplicación que quieres 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:
- Crea una instancia de VM en tu entorno de aplicación.
- Asegúrate de que el firewall de red de VM del agente remoto permita todas tráfico iniciado en el puerto 443 para el rango de IP IAP-TCP 35.235.240.0/20 Consulta Cómo verificar la configuración del firewall. para otros dominios que el firewall de VM del agente remoto debe permitir tráfico.
Instala el agente remoto:
- Verifica que tu DNS esté configurado correctamente y que puedas acceder a la aplicación con curl.
- Instala Docker Engine.
- Opcional: Si usas un proxy, verifica que el daemon de Docker esté configurado correctamente.
- Opcional: Si usas un proxy, verifica que las variables de entorno del proxy HTTP y HTTPS estén configuradas y usen
el esquema de
http://
. - Ejecuta el siguiente comando en la VM del agente remoto para instalarlo:
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
- Para agregar el alias
bce-connctl
a tu shell, ejecuta el siguiente comando:source ~/.bce_alias
Ejecuta los siguientes comandos para configurar las variables de entorno necesarias:
Reemplaza lo siguiente:PROJECT_ID=my-project REGION=us-central1 CONNECTOR_NAME=my-connector
- my-project: el ID del proyecto de Google Cloud.
- us-central1: Es la región en la que se implementará la conexión y las puertas de enlace.
- my-connector: Es el nombre del conector.
Inscribe el conector con uno de los siguientes tipos de credenciales:
Cuenta de servicio
Inscribe el conector ejecutando 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 inscripción. de comandos en tus proyectos de Google Cloud con Cloud Shell gcloud CLI y terminar de inscribir el conector. Para ejecutar 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.
Identidad federada
- Sigue la guía de federación de identidades de cargas de trabajo para otorgarle a tu identidad externa acceso a Google Cloud mediante la identidad temporal como cuenta de servicio.
- Descarga la configuración de la biblioteca cliente
y coloca el archivo en la VM del agente remoto en
/var/beyondcorp/credentials/credentials.json
.- Si usas una instancia EC2 de AWS como VM de agente remoto, realiza una de las siguientes acciones:
- Haz que IMDSv2 sea opcional en la instancia EC2.
- 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"
- Si usas una instancia EC2 de AWS como VM de agente remoto, realiza una de las siguientes acciones:
- 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
- Ejecuta el siguiente comando para reiniciar el agente y hacer que recopile las credenciales:
sudo systemctl restart beyondcorp
- En tu extremo de Cloud Shell o gcloud CLI, ejecuta el siguiente comando para establecer la variable de entorno requerida:
Reemplaza lo siguiente:SERVICE_ACCOUNT=my-service-account
- my-service-account: Es la cuenta de servicio de Google Cloud asociada con la identidad externa.
Ejecuta el siguiente comando para otorgar el rol
BeyondCorp Connection Agent
a la cuenta de servicio de Google Cloud:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role="roles/beyondcorp.connectionAgent"
Ejecuta el siguiente comando para crear el recurso del conector de apps de 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 entorno de ejecución del agente remoto sincroniza automáticamente la configuración del conector.
Verifica la instalación del agente remoto:
- Ejecuta el siguiente comando para asegurarte de que el servicio se esté ejecutando:
sudo systemctl status beyondcorp
- El agente remoto consta de tres contenedores de Docker:
bce-control-runtime
,bce-logagent
ybce-connector
. Ejecuta el siguiente comando para verificar que los tres contenedores se estén ejecutando:docker ps --filter name=bce
- Opcional: Para verificar los archivos de registro de los contenedores de Docker, ejecuta el siguiente comando:
Reemplaza CONTAINER_NAME por el nombre del contenedor de Docker.docker logs -f CONTAINER_NAME
- Ejecuta el siguiente comando para asegurarte de que el servicio se esté ejecutando:
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
.
Ejecuta los siguientes comandos para configurar las variables de entorno necesarias:
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 implementará la conexión y las puertas de enlace.
- APP_HOST: Es la dirección IP local o un FQDN que aloje tu aplicación.
- APP_PORT: Es el número de puerto para conectarte a tu aplicación.
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.
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}"
GATEWAY_URI_L7
se usa para crear una regla de reenvío. El conector de apps Premium de Chrome Enterprise usa Private Service Connect para vincular el proyecto del consumidor a los recursos administrados en los proyectos administrados por Google.
API
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, 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 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.
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.
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'}"
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 de consumidor a los recursos administrados en los proyectos administrados de Google.
Configura un balanceador de cargas de aplicaciones externo
Solo puedes conectar aplicaciones HTTPS a un balanceador de cargas de aplicaciones externo. Las aplicaciones HTTP no son compatibles.
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
.
Ejecuta los siguientes comandos para configurar las variables de entorno necesarias:
Reemplaza lo siguiente:LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
- 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.
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, la red predeterminada del proyecto es que se usan. - 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 de la región en la que se crea el grupo de extremos de red.
- Establece la marca
Crea un servicio de backend basado en NEG y conéctalo a un adjunto del servicio de Private Service Connect con 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
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)')"
Crea un balanceador de cargas de aplicaciones externo basado en el backend del paso anterior ejecutando 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 aplicaciones externo, se puede acceder a tu aplicación a través de a Internet con esa dirección IP.
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 una dirección certificado. Usa las instrucciones de tu proveedor de DNS para asociar la IP de servicio con el nombre de DNS. Ejecuta el siguiente comando para verificar el aprovisionamiento estado:
- Muestra la dirección IP que se configurará en el proveedor de DNS:
echo "Load Balancer ip address - $LB_IP"
- Después de establecer el DNS, verifica si el nombre de dominio se resuelve o no
a la dirección IP ejecutando el siguiente comando:
dig $DOMAIN_NAME
- Ejecuta el siguiente comando para obtener el estado de aprovisionamiento:
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ías poder acceder a tu aplicación con el nombre de DNS.
- Muestra la dirección IP que se configurará en el proveedor de DNS:
API
Ejecuta los siguientes comandos para configurar las variables de entorno necesarias:
Reemplaza lo siguiente:LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
- web-app: Es el prefijo agregado 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.
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 para los extremos de red en el NEG. Si no se especifica, la red predeterminada del proyecto es que se usan. - Establece 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 en la región donde se crea el grupo de extremos de red.
- Establece el campo
Crea un servicio de backend basado en NEG y conéctalo a un adjunto del servicio de Private Service Connect con 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' \ }] \ }"
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')
Crea un balanceador de cargas de aplicaciones externo basado en el backend del paso anterior ejecutando 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 aplicaciones externo, se puede acceder a tu aplicación a través de a Internet con esa dirección IP.
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 una dirección certificado. Usa las instrucciones de tu proveedor de DNS para asociar la IP de servicio con el nombre de DNS. Ejecuta el siguiente comando para verificar el aprovisionamiento estado:
- Muestra la dirección IP que se configurará en el proveedor de DNS:
echo "Load Balancer ip address - $LB_IP"
- Después de establecer el DNS, verifica si el nombre de dominio se resuelve o no
a la dirección IP ejecutando el siguiente comando:
dig $DOMAIN_NAME
- Ejecuta el siguiente comando para obtener el estado de 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 aprovisionar el certificado SSL, deberías poder acceder a tu aplicación con el nombre de DNS.
- Muestra la dirección IP que se configurará en el proveedor 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 completando los siguientes pasos:
Ve a la página de IAP:
IAPEn HTTPS RESOURCES, busca
$LB_PREFIX-backend-service
. Para habilitar IAP para este recurso, haz clic en el botón de activación en la columna IAP. En la ventana Turn On IAP que aparece, selecciona la casilla de verificación para confirmar los requisitos de configuración de este recurso y haz clic en TURN ON para confirmar que deseas que IAP proteja tu recurso.Para permitir que los usuarios accedan a tu aplicación, debes otorgarles el rol de Usuario de app web protegida con IAP para el proyecto. Para ello, sigue estos pasos:
- Selecciona la casilla de verificación
$LB_PREFIX-backend-service
. - 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 deberían tener acceso a tu solicitud.
- En la lista desplegable Selecciona un rol, selecciona Cloud IAP > Usuario de aplicación web protegida con IAP y, luego, haz clic en Guardar.
- Selecciona la casilla de verificación
Ahora tu aplicación local 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 apps Premium de Chrome Enterprise con la consola de Google Cloud.
Ingresa los detalles de tu solicitud
Completa los siguientes pasos para agregar los detalles de tu postulación:
En la consola de Google Cloud, ve a la página de IAP.
Ir a IAPHaz clic en el botón CONECTAR NUEVA APLICACIÓN y, luego, selecciona Conectar mediante Conector de apps.
En Nombre de la aplicación, ingresa el nombre de la aplicación a la que deseas acceder. y mantener seguros los entornos de nube.
En URL externa de la aplicación, ingresa una URL de acceso público para que tus usuarios accedan a la aplicación.
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 de Google Cloud.
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 y el conector de conexión.
Haz clic en el botón CREAR.
Sigue las instrucciones en el panel Aprovisiona una máquina virtual para implementar el agente remoto en tu VM.
Haz clic en el botón PROBAR ESTADO DE CONEXIÓN para probar la conexión.
Configura el conector que creaste en el paso anterior ingresando el siguiente información en ¿Dónde puede Google Cloud encontrar tu aplicación?:
- Nombre de host interno: Es la dirección IP o el FQDN de la ubicación local que aloja tu aplicación.
- Puerto: Es el número de puerto para conectarte a tu aplicación.
Otorga acceso a tu aplicación (opcional)
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.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.
Selecciona uno o más niveles de acceso y, luego, haz clic en SIGUIENTE.
Publica tu aplicación
Para publicar tu aplicación, haz clic en el botón PUBLICAR SEGURIDAD APLICACIÓN.
Luego de publicar tu aplicación y recibir el mensaje Publicado de forma segura aplicación, debes crear un registro DNS para dirigir orientada a la URL de la aplicación 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 para crear un registro DNS. Para ello, sigue las instrucciones de tu proveedor de DNS sobre cómo asociar la dirección IP con el nombre de DNS.
Después de crear el registro DNS, haz clic en el botón TEST para probarlo. Deberías recibir una confirmación que indique que se aprobó la prueba de DNS.
Haz clic en LISTO.
Habilitar IAP
Ve a la página IAP.
Ir a IAPEn la lista de recursos, busca tu aplicación y, luego, selecciona el botón de la columna IAP.
En el 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 apps (opcional)
Las puertas de enlace de apps se crean y administran de forma implícita cuando conectas una aplicación a través del conector de apps. También puedes crear tus propias puertas de enlace de apps para organizar los recursos de conexiones de apps en grupos. Tráfico de 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 aplicaciones, completa los siguientes pasos.
gcloud CLI
Ejecuta el siguiente comando para configurar las variables de entorno necesarias:
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 apps, como
us-central1
. - APP_HOST: Es la dirección IP local o un FQDN que aloje tu aplicación.
- APP_PORT: Es el número de puerto para conectarte a tu aplicación.
Ejecuta el siguiente comando para crear una puerta de enlace de aplicaciones:
gcloud beta beyondcorp app gateways create $GATEWAY_NAME \ --project=$PROJECT_ID --location=$REGION --display-name=$GATEWAY_NAME
Ejecuta el siguiente comando para especificar una puerta de enlace de apps en una llamada de creación de conexión:
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
Ejecuta el siguiente comando para configurar las variables de entorno necesarias:
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 apps, como
us-central1
. - APP_HOST: Es la dirección IP local o un FQDN que aloje tu aplicación.
- APP_PORT: Es el número de puerto para conectarte a tu aplicación.
Ejecuta el siguiente comando para crear una puerta de enlace de aplicaciones:
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}' \ }"
Ejecuta el siguiente comando para especificar una puerta de enlace de apps en una llamada de creación de conexión: :
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
- Consulta Controles del servicio de VPC para obtener información sobre cómo proteger una VPC.
- Establece reglas de contexto enriquecidas mediante la aplicación de niveles de acceso.
- Para ver las solicitudes de acceso, habilita los Registros de auditoría de Cloud.
Soluciona problemas
No se pueden encontrar los recursos creados anteriormente
Cuando uses gcloud CLI versión 392.0.0 o posterior, utiliza los nuevos recursos predeterminados 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
se refieren a los recursos heredados.
Las configuraciones que usan recursos heredados siguen funcionando por ahora, pero dejarán de estar disponibles en el futuro.
Acciones recomendadas
- 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. Sigue los procedimientos que se indican en este documento para volver a crear los recursos. - Si tienes una configuración incompleta que usa recursos heredados, usa la palabra clave
legacy
para ubicar esos recursos y quitarlos. Sigue 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 TLS/SSL similares y no redirecciona a la página de acceso.
Acciones recomendadas
Verificar el estado de los certificados en la página de detalles del balanceador de cargas de Google Cloud
NOTA: Aprovisionar un certificado administrado por Google puede tardar hasta 60 minutos.
TLS error
Después de redireccionar a la página de acceso, 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 TLS/SSL similares.
Acciones recomendadas
- 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 la 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 |
Cambia los conectores asociados con una conexión
gcloud
Ejecuta el siguiente comando para configurar las variables de entorno necesarias:
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.
- my-connector: Es el nombre del conector. También puede ser una lista separada por comas, como
Para cambiar los conectores asociados con una conexión, ejecuta el siguiente comando:
gcloud alpha beyondcorp app connections update $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --connectors=$CONNECTOR_NAME
API
Ejecuta el siguiente comando para configurar las variables de entorno necesarias:
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.
Para cambiar los conectores asociados con 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 revisa 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 la Archivo systemd de BeyondCorp. Si instalaste el agente remoto antes de esto y deseas usar un proxy, vuelve a instalar el agente remoto.
Verifica que el daemon de Docker esté configurado correctamente para funcionar 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 esquemahttps://
ni otros esquemas.Ejecuta el comando
env
para verificar que las variables de entorno del proxy se exporten a 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 usuariobeyondcorp
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 de 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 de forma correcta. Después de crear 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
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 habituales en la VM del agente remoto y, luego, imprime un informe que puedes compartir con el equipo de asistencia al cliente 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 de agente remoto
bce-connctl
es la interfaz de línea de comandos (CLI) de administración del agente remoto para interactuar de forma local con el agente remoto. Esta CLI admite varios comandos, como 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 inscribirlo.
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.
- Lista: Usa este comando para mostrar el estado general del agente remoto, así como el estado de las conexiones compatibles con 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 mostrar una lista de 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 esENROLLED
.
Ayuda
Puedes agregar las marcas -h
o --help
a cualquier comando bce-connctl
para imprimir la información de uso.
bce-connctl init -h