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 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 la consola de Google Cloud, ve a la página Compute Engine > Crear plantilla de instancias y selecciona el proyecto para 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)
  • Permisos 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:
    # Copyright 2021 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    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 la consola de Google Cloud, ve a la página Compute Engine > Crear un grupo de instancias nuevo y selecciona el proyecto en el que quieres 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: Para cambiar la cantidad de instancias, primero debes desactivar el ajuste de escala automático.
  • Modo de ajuste de escala automático: Sin ajuste de escala automático
  • 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

Crea un certificado que identifique tu sitio web para los usuarios. Para obtener información sobre cómo crear un certificado, consulta Usa certificados SSL administrados por Google.

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 la consola de Google Cloud, 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)
  • Permisos 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. Cambia tus registros A a 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. Puede tomar hasta un día para que el registro que agregaste se propague.

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 la consola de Google Cloud, 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.

Crear 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 la consola de Google Cloud, ve a la página Servicios de red > Crear un balanceador de cargas y selecciona el proyecto para el que deseas 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 balanceador de cargas de aplicaciones externo, ingresa un nombre para el balanceador de cargas.

  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.

  13. 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 la consola de Google Cloud 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. Cambia tus registros A a 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. Si quieres probar el balanceador de cargas, usa 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 la consola de Google Cloud, 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 la consola de Google Cloud Red de VPC > Reglas de firewall.
    IR A LA PÁGINA REGLAS DE FIREWALL
  2. Selecciona la casilla de verificación 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). Los rangos de IP están en la lista de entidades permitidas porque es un requisito para la comunicación del balanceador de cargas con los backends.
      • 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 la consola de Google Cloud, 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. La dirección de correo electrónico debe pertenecer a la cuenta de usuario con la que se accedió o a un grupo de Google del que el usuario es propietario o propietario.
    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 principales a la lista de acceso

A continuación, agregarás principales a la lista de acceso IAP de 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 las principales a las que deseas otorgar acceso, incluido tú mismo, y asígnales el rol Usuario de aplicación web protegida con IAP. Las principales pueden ser las 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.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

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, haz lo siguiente:

  1. En la consola de Google Cloud, 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:

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

    Ir a Instancias de VM

  2. Selecciona tu instancia en la casilla de verificación de es la instancia que deseas borrar.
  3. Para borrar la instancia, haz clic en Más acciones, haz clic en Borrar y, luego, sigue las instrucciones.

Borra reglas de firewall para la red predeterminada

Para borrar una regla de firewall, haz lo siguiente:

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

    Ir a Firewall

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

¿Qué sigue?