Configura IAP para Compute Engine

En esta guía, se describe cómo configurar una instancia de Compute Engine con Identity-Aware Proxy (IAP). Si ya configuraste tu instancia de Compute Engine y solo necesitas habilitar IAP, consulta la sección sobre cómo habilitar IAP para Compute Engine.

Objetivos

En este instructivo, aprenderás lo siguiente:

  • Cómo crear una plantilla de instancias para Compute Engine y un grupo de instancias administrado (MIG)
  • Cómo obtener un nombre de dominio y un certificado
  • Cómo crear un balanceador de cargas de HTTPS con un certificado
  • Cómo habilitar IAP
  • Cómo probar que IAP esté funcionando

Costos

En este instructivo, se usan componentes facturables de Google Cloud, que incluyen lo siguiente:

  • Compute Engine
    • 4 máquinas virtuales (VM)
  • Herramientas de redes
    • Regla de reenvío del balanceador de cargas
    • Tráfico de entrada

Para obtener un costo estimado de acuerdo con el uso proyectado, consulta la siguiente calculadora de precios.

Los usuarios nuevos de Cloud Platform pueden ser aptos para una prueba gratuita.

Antes de comenzar

Antes de comenzar con este instructivo, deberás realizar los siguientes pasos:

  1. Selecciona o crea un proyecto de Google Cloud.
    IR A LA PÁGINA DE PROYECTOS

  2. Habilita la facturación en tu proyecto. Obtén más información sobre cómo modificar la configuración de facturación de un proyecto.

Paso 1: Crear una plantilla de Compute Engine

En Cloud Console, ve a la página Compute Engine > Crear una plantilla de instancias y selecciona el proyecto en el que deseas crear una plantilla.

IR A LA PÁGINA CREAR UNA PLANTILLA DE INSTANCIAS

Usa los valores predeterminados, excepto para lo siguiente:

  • Tipo de máquina:
    • micro (f1-micro)
  • Niveles de acceso:
    • Configurar acceso para cada API
    • Compute Engine: solo lectura
  • Firewall:
    • Permitir tráfico HTTP
  • En la sección Administración, en Automatización > Secuencia de comandos de inicio, copia y pega la siguiente secuencia de comandos:
    apt-get -y update
    apt-get -y install git
    apt-get -y install virtualenv
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    cd python-docs-samples/iap
    virtualenv venv -p python3
    source venv/bin/activate
    pip install -r requirements.txt
    cat example_gce_backend.py |
      sed -e "s/YOUR_BACKEND_SERVICE_ID/$(gcloud compute backend-services describe my-backend-service --global --format="value(id)")/g" |
      sed -e "s/YOUR_PROJECT_ID/$(gcloud config get-value account | tr -cd "[0-9]")/g" > real_backend.py
    gunicorn real_backend:app -b 0.0.0.0:80
    

Una vez que hayas terminado de actualizar los valores, haz clic en Crear para crear la plantilla.

Paso 2: Crear un grupo de instancias administrado

En Cloud Console, ve a la página Compute Engine > Crear un nuevo grupo de instancias y selecciona el proyecto en el que deseas crear un grupo de instancias administrado.

IR A LA PÁGINA CREAR UN GRUPO DE INSTANCIAS

Usa los valores predeterminados, excepto para lo siguiente:

  • Nombre: my-managed-instance-group
  • Ubicación: multi-zona
  • Plantilla de instancias: Selecciona la plantilla de instancias que creaste en el Paso 1
  • Cantidad de instancias: 3
  • Verificación de estado: Selecciona Crear una verificación de estado y, a continuación, ingresa los siguientes valores:

    • Nombre: my-health-check
    • Protocolo: HTTP

    Para usar tu nueva verificación de estado, haz clic en Guardar y continuar.

Una vez que termines de actualizar los valores, haz clic en Crear para crear el Grupo de instancias administrado (MIG).

Paso 3: Obtener un nombre de dominio y un certificado

Para usar el balanceador de cargas con tráfico HTTPS, deberás tener un nombre de dominio y un certificado firmado. Puedes registrar un dominio en Google Domains o usar el registrador de dominios que prefieras. Registra tu dominio antes de seguir leyendo esta guía.

Configura tu certificado

Let's Encrypt es una Autoridad certificada (CA) sin fines de lucro. Mediante sus servicios, podrás crear un certificado que identifica tu sitio web para tus usuarios.

El CA debe verificar que el nombre de dominio que has registrado te pertenezca. En los siguientes pasos, podrás crear una VM para autenticar tu dominio con el CA.

Crea una VM para autenticar la propiedad del dominio

En Cloud Console, ve a la página Compute Engine > Crear una instancia.

IR A LA PÁGINA CREAR UNA INSTANCIA

Usa los valores predeterminados, excepto para lo siguiente:

  • Nombre certbot-vm
  • Tipo de máquina: micro (f1-micro)
  • Niveles de acceso:
    • Configurar acceso para cada API
    • Compute Engine: lectura/escritura
  • Imagen de disco de arranque:
    • Debian GNU/Linux 9 (stretch)
  • Firewall:
    • Permitir tráfico HTTP
    • Permitir tráfico HTTPS

Una vez que hayas terminado de actualizar los valores, haz clic en Crear para crear la instancia de VM. Toma nota de la dirección IP externa de la VM que acabas de crear. La necesitarás en la próxima sección.

Configura tu dominio para que se oriente a la VM

A fin de configurar tu dominio de modo que se oriente a la VM, sigue estos pasos para configurar los registros A:

  1. Accede a la cuenta de tu dominio en el host del dominio.
  2. Encuentra la página para actualizar los registros DNS de tu dominio. La página podría llamarse “Administración de DNS”, “Administración de servidor de nombres”, “Configuración avanzada” o alguna opción similar.
  3. Modifica tus registros A con los siguientes valores:
    • Nombre/Host/Alias: @
    • Valor: La dirección IP externa de la VM que creaste para autenticar la propiedad del dominio anterior.
    • TTL: El valor predeterminado de tu registrador o 86400 (un día).
  4. Espera a que se actualice el registro DNS. El registro puede tardar hasta un día en propagarse.

Para obtener más información, consulta Acerca de los registros A.

Prueba tu servidor

Para probar que tu servidor esté funcionando correctamente, sigue estos pasos:

  1. En Cloud Console, ve a la página Compute Engine > Instancias de VM.
    IR A LA PÁGINA INSTANCIAS DE VM INSTANCES

  2. En Conectar para certbot-vm, haz clic en SSH.

  3. Ejecuta los siguientes comandos para implementar un pequeño servidor web en tu VM:

      mkdir web
      cd web
      echo "Hello" > index.html
      sudo busybox httpd -v -f
    
  4. En un navegador web, ve al nombre de dominio que registraste antes. El navegador web debe mostrar Hello, y la sesión SSH debe mostrar un mensaje que contenga ... response:200. De no ser así, espera algunos minutos y, a continuación, repite el paso.

  5. Cuando la prueba no arroje ningún error, presiona Ctrl+C para detener el servidor web.

Crea un certificado

Para crear un certificado, regístrate en Let's Encrypt. Para ello, ejecuta los siguientes comandos en la VM, en los que YOUR_DOMAIN es tu nombre de dominio, sin incluir el protocolo:

sudo pkill busybox
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d YOUR-DOMAIN

En este proceso, es probable que Let's Encrypt te solicite una dirección de correo electrónico para poder enviarte un recordatorio antes de que venza tu certificado (de forma predeterminada, 3 meses después de su emisión). Además, debes aceptar las Condiciones del Servicio establecidas por Let's Encrypt.

Cuando te hayas registrado correctamente, verás un mensaje como el siguiente Congratulations! Your certificate and chain have been saved at...

Agrega un certificado a tu proyecto

Para agregar un certificado a tu proyecto, ejecuta los siguientes comandos en la VM:

sudo su
cd /etc/letsencrypt/live/YOUR_DOMAIN
gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem

Después de crear el certificado correctamente, verás un mensaje similar el siguiente: Created [https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert]

Antes de continuar, cierra la sesión SSH.

Paso 4: Crear un balanceador de cargas

Antes de comenzar con este paso, asegúrate de haber cerrado la sesión SSH que abriste en el paso anterior. Cuando estés listo, sigue estos pasos para crear un balanceador de cargas:

  1. En Cloud Console, ve a la página Servicios de red > Crear un balanceador de cargas y selecciona el proyecto para el que desea crear un balanceador de cargas.
    IR A LA PÁGINA CREAR UN BALANCEADOR DE CARGAS

  2. En Balanceo de cargas de HTTP(S), haga clic en Iniciar configuración.

  3. Selecciona De Internet a mis VM.

  4. En la página Nuevo equilibrador de carga HTTP(S) externo que aparece, ingresa un Nombre para tu equilibrador de carga.

  5. Haz clic en Configuración de backend y, a continuación, selecciona Servicios de backend > Crear un servicio de backend.

  6. En el panel Crear servicio de backend, en el cuadro Nombre, ingresa my-backend-service.

  7. En Nuevo backend, usa los valores predeterminados, salvo para el siguiente elemento:

    • Grupo de instancias: my-managed-instance-group
  8. En Verificación de estado, selecciona my-health-check.

  9. Cuando hayas terminado de actualizar los valores, haz clic en Crear. Volverá a aparecer el panel Nuevo balanceador de cargas de HTTP(S).

  10. Haz clic en Reglas de host y ruta para cargar los valores predeterminados. No es necesario agregar ninguna regla.

  11. Haz clic en Configuración de front-end. Usa los valores predeterminados, excepto para los siguientes elementos:

    • Protocolo: HTTPS
    • Dirección IP: haz clic en Crear dirección IP
      • Ingresa un Nombre para vincularlo a tu nueva dirección IP estática.
      • Haz clic en Reservar para reservar la dirección IP estática.
    • Certificado: my-cert
  12. Cuando hayas terminado de agregar los valores de configuración de frontend, haz clic en Listo. Vuelve a aparecer el panel Balanceador de cargas HTTP(S) externo nuevo.

  13. En Balanceador de cargas HTTP(S) externo nuevo, haz clic en Crear. Aparecerá la página Balanceo de cargas y se creará el nuevo balanceador de cargas en la lista de balanceadores de cargas.

  14. Una vez que Cloud Console termine de crear el nuevo balanceador de cargas, haz clic en el nombre del balanceador de cargas y toma nota de la dirección IP externa en Detalles > Frontend. La necesitarás en el próximo paso.

Configura tu dominio para que se oriente al balanceador de cargas

Para configurar tu dominio de tal forma que se oriente al balanceador de cargas, configura los registros A con los pasos que se muestran a continuación:

  1. Accede a la cuenta de tu dominio en el host del dominio.
  2. Encuentra la página para actualizar los registros DNS de tu dominio. La página podría llamarse “Administración de DNS”, “Administración de servidor de nombres”, “Configuración avanzada” o alguna opción similar.
  3. Modifica tus registros A con los siguientes valores:
    • Nombre/Host/Alias: @
    • Valor: la dirección IP externa del balanceador de cargas que creaste antes. No incluyas el puerto :443 en tu Registro DNS.
    • TTL: el valor predeterminado de tu registrador o 86400 (un día).
  4. Espera a que se actualice el registro DNS. El registro puede tardar hasta un día en propagarse.
  5. A fin de probar el balanceador de cargas, utiliza un navegador web para ir a tu dominio con un protocolo https://.
    • Si el balanceador de cargas aún no está configurado, verás los errores “HTTP 502”.
    • Una vez que el balanceador de cargas esté listo, verás el mensaje “Solicitud no autorizada”.

Para obtener más información, consulta Acerca de los registros A.

Reinicia tus VM

Para autenticar correctamente las solicitudes de IAP, debes reiniciar las VM en tu MIG siguiendo estos pasos:

  1. En Cloud Console, ve a la página Compute Engine > Grupos de instancias.
    IR A LA PÁGINA GRUPOS DE INSTANCIAS
  2. Haz clic en my-managed-instance-group.
  3. En la parte superior de los detalles sobre el grupo de instancias, haz clic en Reemplazo o reinicio progresivo.
  4. En la página Reiniciar o reemplazar instancias de my-managed-instance-group que aparece, configura los siguientes valores:
    • Operación: Reinicio
    • Máximo no disponible: 3 instancias de 3 instancias
    • Tiempo de espera mínimo: 0 s
  5. Cuando termines de actualizar los valores, haz clic en Reiniciar.

Paso 5: Configurar IAP

Configura tu firewall

A continuación, configurarás el firewall para bloquear el acceso a las VM subyacentes y solo permitir el acceso a través de IAP:

  1. Ve a Red de VPC > Reglas de firewall.
    IR A LA PÁGINA REGLAS DE FIREWALL
  2. Selecciona la casilla de verificación que aparece junto a las siguientes reglas:
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. Haz clic en Borrar.
  4. Haz clic en Crear regla de firewall y configura los siguientes valores:
    • Nombre: allow-iap-traffic
    • Objetivos: todas las instancias de la red
    • Rangos de IP de origen (presiona Intro después de pegar cada valor en el cuadro):
      • 130.211.0.0/22
      • 35.191.0.0/16
    • Protocolos y puertos:
      • Protocolos y puertos especificados
      • tcp:80
  5. Cuando hayas terminado de actualizar los valores, haz clic en Crear.

Configura IAP

A fin de configurar IAP para tu proyecto, sigue estos pasos:

  1. En Cloud Console, ve a la página Seguridad > Identity-Aware Proxy y selecciona el proyecto para el que deseas habilitar IAP.
    IR A LA PÁGINA IDENTITY-AWARE PROXY
  2. Si aún no has configurado la pantalla de consentimiento de OAuth para tu proyecto, se te solicitará hacerlo:

    1. Ve a la pantalla de consentimiento de OAuth.
      Configuración de la pantalla de consentimiento
    2. En Correo electrónico de asistencia, selecciona la dirección de correo electrónico que deseas mostrar como contacto público. Esta debe ser tu dirección de correo electrónico o un Grupo de Google de tu propiedad.
    3. Ingresa el Nombre de la aplicación que deseas mostrar.
    4. Agrega otro tipo de información opcional que desees mostrar.
    5. Haz clic en Guardar.

    Para cambiar la información en la pantalla de consentimiento de OAuth más tarde, como el nombre del producto o la dirección de correo electrónico, repite los pasos anteriores para configurarla.

  3. Junto a my-backend-service,

  4. En la ventana Activar IAP que aparece, selecciona la casilla de verificación junto a “Leí los requisitos de configuración y configuré mi recurso de Compute Engine según se indica en la documentación”.

  5. Haz clic en Activar.

Agrega miembros a la lista

A continuación, agregarás miembros a la lista de acceso de IAP para tu proyecto.

  1. En la sección Acceso ubicada a la derecha en IAM y administración > Identity-Aware Proxy, haz clic en Agregar.
  2. Ingresa los miembros a los que te gustaría permitir el acceso, incluido tú mismo. Los miembros pueden ser los siguientes:
    • Cuentas de Google: user@gmail.com
    • Grupos de Google: admins@googlegroups.com
    • Cuentas de servicio: server@example.gserviceaccount.com
    • Dominios de lugar de trabajo de Google Workspace: example.com

Paso 6: Probar IAP

Para probar que IAP funcione correctamente, sigue estos pasos:

  1. En tu navegador web, ve a tu dominio.
    1. Si ves "Solicitud no autorizada", vuelve a intentarlo en unos minutos.
  2. Cuando veas una pantalla de Acceso con Google, accede con la Cuenta de Google a la que diste acceso en el paso anterior.
  3. Deberías ver un mensaje como “Hola, user@example.com. Soy my-managed-instance-group-29z6”.
  4. Intenta actualizar la página. Tu navegador debería mostrar los nombres de las 3 máquinas que integran tu grupo de instancias administrado. Se trata del balanceador de cargas que está distribuyendo el tráfico entre todas las VM del grupo.

¡Felicitaciones! Habilitaste correctamente un servicio de balanceo de cargas mediante IAP.

Limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo, haz lo siguiente:

Una vez que hayas terminado de configurar IAP para Compute Engine, puedes limpiar los recursos que creaste en Google Cloud a fin de que no se facturen en el futuro. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra instancias

Para borrar una instancia de Compute Engine, haz lo siguiente:

  1. En Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Selecciona la casilla de verificación para es la instancia que deseas borrar.
  3. Para borrar la instancia, haz clic en Borrar.

Borra reglas de firewall para la red predeterminada

Para borrar una regla de firewall, haz lo siguiente:

  1. En Cloud Console, ve a la página Firewall.

    Ir a Firewall

  2. Selecciona la casilla de verificación para es la regla de firewall que quieres borrar.
  3. Para borrar la regla de firewall, haz clic en Borrar.

Qué sigue