Proteger aplicaciones que no son de Google Cloud mediante el conector de apps de BeyondCorp Enterprise

En esta página, se describe cómo configurar y usar el conector de apps de BeyondCorp Enterprise.

Descripción general

Puedes usar el conector de apps de BeyondCorp Enterprise para proporcionar identidad y acceso adaptado al contexto a las aplicaciones HTTPS que se ejecutan en entornos locales que no son de Google Cloud y en entornos 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 entornos locales que no son de Google Cloud ni de Google Cloud.

El conector de apps de BeyondCorp Enterprise es un proxy de TCP que conecta a Google Cloud y los entornos de las organizaciones. El proxy TCP tiene un componente orientado al usuario final alojado en Google Cloud y un componente orientado a la aplicación alojado en el entorno de tu organización. Para usar el conector de apps de BeyondCorp Enterprise, no necesitas abrir firewalls ni configurar conexiones de Cloud VPN de sitio a sitio.

Antes de comenzar

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

Por el momento, solo puedes usar el conector de apps de BeyondCorp Enterprise con aplicaciones HTTPS.

Cada agente de conector de apps 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

Recomendamos un mínimo de 2 CPU con 2 GB de RAM para el hardware de VM de Linux.

Configura e implementa el conector de apps de BeyondCorp Enterprise

A continuación, se indican los pasos principales necesarios para configurar e implementar el conector de apps de BeyondCorp Enterprise:

  • Configura el proyecto de Google Cloud
  • Instala un agente remoto del conector de apps
  • Conecta una aplicación remota a una VPC
  • Configurar un balanceador de cargas de HTTP(S) externo
  • Habilita Identity-Aware Proxy

Configura el proyecto de Google Cloud

Si quieres configurar un proyecto de Google Cloud para usarlo con el conector de apps de BeyondCorp Enterprise, debes habilitar la API de BeyondCorp Enterprise. Para habilitar la API, completa los siguientes pasos:

  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
    

Instala un agente remoto del conector de apps

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

Para crear un agente remoto, completa los siguientes pasos:

  1. Cree una instancia de VM en el entorno de su aplicación.
  2. Instala el agente remoto:

    1. Verifica que el DNS esté configurado correctamente y que puedas acceder a la aplicación mediante la ejecución de curl.
    2. Instala 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. Sigue las instrucciones en pantalla a fin de crear un alias para bce-connctl, la CLI del agente remoto.
    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: 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.
    6. 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
      

      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 los 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. Verifique la instalación del agente remoto:

    1. Ejecute el siguiente comando para asegurarse 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. Puedes verificar los archivos de registro de contenedores de Docker si ejecutas el siguiente comando (opcional):
      docker logs -f CONTAINER_NAME
      
      Reemplaza CONTAINER_NAME por el nombre del contenedor de Docker.

Conecta una aplicación remota a una VPC

Antes de completar los siguientes pasos, asegúrate de tener instalado el SDK de CLI de gcloud 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, 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 conectar a tu aplicación.
  2. Para crear una conexión entre su aplicación y su VPC, ejecute 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 por Google.

Configurar un balanceador de cargas de HTTP(S) externo

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

  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 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 network-endpoint-groups create $LB_PREFIX-neg \
        --region=$REGION \
        --network-endpoint-type=private-service-connect \
        --psc-target-service=$GATEWAY_URI_L7
    
    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
    
  3. Ejecuta los siguientes comandos para crear un certificado administrado por Google para el 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)')"
    
  4. 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.

  5. 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 con el 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 o no en la dirección IP mediante la ejecución del siguiente comando:
        dig $DOMAIN_NAME
        
    3. Para obtener el estado de aprovisionamiento, ejecuta 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ías poder acceder a tu aplicación con el nombre de DNS.

Habilita Identity-Aware Proxy

Sigue la documentación de Identity-Aware Proxy para configurar Identity-Aware Proxy. Después de configurar Identity-Aware Proxy, habilita Identity-Aware Proxy para el servicio de backend mediante los siguientes pasos:

  1. Ve a la página de Identity-Aware Proxy:
    Ve a la página de Identity-Aware Proxy.

  2. En HTTPS RESOURCES, busca $LB_PREFIX-backend-service. Si quieres habilitar Identity-Aware Proxy para este recurso, haz clic en el botón de activación en la columna de 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 Identity-Aware Proxy 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, seleccione AGREGAR PRINCIPAL y, luego, ingrese las direcciones de correo electrónico de los grupos o personas físicas que deberían tener acceso a su solicitud.
    3. En la lista desplegable Selecciona una función, selecciona Usuario de aplicaciones web protegido con IAP y, luego, haz clic en Guardar.

Ahora, su aplicación local debería publicarse en Internet y estar protegida por BeyondCorp Enterprise.