Configurar 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 has configurado tu instancia de Compute Engine y solo necesitas habilitar IAP, consulta el artículo Habilitar IAP para Compute Engine.

Objetivos

En este tutorial, aprenderás lo siguiente:

  • Crear una plantilla de instancia de Compute Engine y un grupo de instancias gestionado (MIG).
  • Obtener un nombre de dominio y un certificado.
  • Crear un balanceador de carga HTTPS con un certificado.
  • Habilitar IAP.
  • Prueba de que las compras en la aplicación funcionan.

Costes

En este tutorial se usan componentes facturables de Google Cloud, como los siguientes:

  • Compute Engine
    • 4 máquinas virtuales (VM)
  • Redes
    • Regla de reenvío de balanceador de carga global
    • Tráfico de entrada

Para obtener una estimación de los costes en función del uso previsto, consulta esta calculadora de precios.

Los usuarios nuevos de Cloud Platform pueden disfrutar de una prueba gratuita.

Antes de empezar

Antes de empezar este tutorial, necesitarás lo siguiente:

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

  2. Habilita la facturación de tu proyecto. Consulta cómo modificar los ajustes de facturación de un proyecto.

Paso 1: Crea una plantilla de Compute Engine

En la consola, ve a la página Compute Engine > Crear una plantilla de instancia y selecciona el proyecto en el que quieras crear una plantilla. Google Cloud

IR A LA PÁGINA CREAR UNA PLANTILLA DE INSTANCIA

Usa los valores predeterminados, excepto los siguientes:

  • Tipo de máquina:
    • micro (f1-micro)
  • Ámbitos de acceso:
    • Definir acceso a cada API
    • Compute Engine: solo lectura
  • Cortafuegos:
    • Permitir el tráfico HTTP
  • En la sección Gestión, vaya a Automatización > Script de inicio, copie y pegue el siguiente script:
    # 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
    

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

Paso 2: Crea un grupo de instancias gestionadas

En la Google Cloud consola, ve a la página Compute Engine > Crear un grupo de instancias y selecciona el proyecto en el que quieras crear un grupo de instancias gestionado.

IR A LA PÁGINA CREAR UN GRUPO DE INSTANCIAS

Usa los valores predeterminados, excepto los siguientes:

  • Nombre: my-managed-instance-group
  • Ubicación: multizona
  • Plantilla de instancia: selecciona la plantilla de instancia que has creado en el paso 1.
  • Número de instancias: para cambiar el número de instancias, primero debes desactivar el autoescalado.
  • Modo de autoescalado: No autoescalar
  • Comprobación del estado: selecciona Crear una comprobación del estado y, a continuación, introduce los siguientes valores:

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

    Para usar la nueva comprobación de estado, haz clic en Guardar y continuar.

Cuando hayas terminado de actualizar los valores, haz clic en Crear para crear el grupo de instancias gestionado (MIG).

Paso 3: Obtén un nombre de dominio y un certificado

Para usar el balanceador de carga con tráfico HTTPS, necesitarás 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 continuar con esta guía.

Configurar tu certificado

Crea un certificado que identifique tu sitio web ante tus usuarios. Para obtener información sobre cómo crear un certificado, consulta Usar certificados SSL gestionados por Google.

Tu CA tiene que verificar que eres el propietario del nombre de dominio que has registrado. En los pasos que se indican a continuación, crearás una VM para autenticar tu dominio con la CA.

Crear una máquina virtual para autenticar la propiedad de tu dominio

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

IR A LA PÁGINA CREAR UNA INSTANCIA

Usa los valores predeterminados, excepto los siguientes:

  • Nombre: certbot-vm
  • Tipo de máquina: micro (f1-micro)
  • Ámbitos de acceso:
    • Definir acceso a cada API
    • Compute Engine: lectura/escritura
  • Imagen de disco de arranque:
    • Debian GNU/Linux 9 (stretch)
  • Cortafuegos:
    • Permitir el tráfico HTTP
    • Permitir el tráfico HTTPS

Cuando hayas terminado de actualizar los valores, haz clic en Crear para crear la instancia de VM. Anota la dirección IP externa de la VM que acabas de crear. Lo necesitarás en el siguiente paso.

Configurar el dominio para que apunte a la VM

Para configurar tu dominio de forma que apunte a la VM, sigue estos pasos para configurar los registros A:

  1. Inicia sesión en la cuenta de tu dominio, en la página de tu host.
  2. Busca la página para actualizar los registros DNS de tu dominio. Es posible que se llame "DNS Management" (Gestión de DNS), "Name Server Management" (Gestión del servidor de nombres) o "Advanced Settings" (Configuración avanzada).
  3. Cambia tus registros A por los siguientes valores:
    • Nombre/Host/Alias: @
    • Valor: la dirección IP externa de la máquina virtual que has creado para autenticar la propiedad de tu dominio más arriba.
    • TTL: el valor predeterminado de tu registrador u 86400 (un día).
  4. Espera a que se actualice el registro DNS. El registro que has añadido puede tardar hasta un día en propagarse.

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

Probar el servidor

Para comprobar que tu servidor funciona correctamente, sigue estos pasos:

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

  2. En Connect (Conectar) de certbot-vm, haz clic en SSH.

  3. Ejecuta los siguientes comandos para ejecutar un pequeño servidor web en tu máquina virtual:

      mkdir web
      cd web
      echo "Hello" > index.html
      sudo busybox httpd -v -f
    
  4. En un navegador web, ve al nombre de dominio que has registrado anteriormente. Tu navegador web debería mostrar Hello y tu sesión SSH debería mostrar un mensaje que contenga ... response:200. Si no es así, espera unos minutos y repite este paso.

  5. Cuando la prueba se haya completado correctamente, pulsa Ctrl+C para detener el servidor web.

Crear un certificado

Para crear un certificado, regístrate en Let's Encrypt ejecutando los siguientes comandos en la VM donde 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

Durante este proceso, Let's Encrypt puede solicitar una dirección de correo electrónico para enviar un recordatorio cuando tu certificado vaya a caducar (de forma predeterminada, 3 meses después de que se emita). También debes aceptar los Términos del Servicio establecidos por Let's Encrypt.

Cuando te hayas registrado correctamente, verás un mensaje que dice: Congratulations! Your certificate and chain have been saved at...

Añadir el certificado a tu proyecto

Para añadir el 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

Una vez que hayas creado el certificado correctamente, deberías ver un mensaje similar a este: 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 carga

Antes de empezar este paso, asegúrate de haber cerrado la sesión SSH que iniciaste en el paso anterior. Cuando lo tengas todo listo, sigue estos pasos para crear un balanceador de carga:

  1. En la Google Cloud consola, ve a la página Servicios de red > Crear un balanceador de carga y selecciona el proyecto en el que quieras crear un balanceador de carga.
    IR A LA PÁGINA DE CREACIÓN DE UN BALANCEADOR DE CARGA

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

  3. Selecciona De Internet a mis máquinas virtuales.

  4. En la página Nuevo balanceador de carga de aplicación externo que aparece, introduzca un Nombre para el balanceador de carga.

  5. Haz clic en Configuración de backend.

  6. En Servicios y segmentos de backend, selecciona Crear un servicio de backend.

  7. Añade un nombre para tu servicio backend, como my-backend-service.

  8. Ve a la sección Seguridad y, a continuación, selecciona Habilitar IAP para proteger el acceso a tus aplicaciones.

    Cloud CDN y IAP no son compatibles. Si tienes Cloud CDN habilitado y seleccionas habilitar IAP, Cloud CDN se inhabilita automáticamente.

  9. Haz clic en Crear. Aparecerá la página Balanceo de carga y el nuevo balanceador de carga se creará en la lista de balanceadores de carga.

  10. Una vez que la consola Google Cloud haya terminado de crear el nuevo balanceador de carga, haz clic en su nombre y anota la dirección IP externa en Detalles > Frontend. Lo necesitarás en el siguiente paso.

Configurar el dominio para que apunte al balanceador de carga

Para configurar tu dominio de forma que apunte al balanceador de carga, configura los registros A siguiendo estos pasos:

  1. Inicia sesión en la cuenta de tu dominio, en la página de tu host.
  2. Busca la página para actualizar los registros DNS de tu dominio. Es posible que se llame "DNS Management" (Gestión de DNS), "Name Server Management" (Gestión del servidor de nombres) o "Advanced Settings" (Configuración avanzada).
  3. Cambia tus registros A por los siguientes valores:
    • Nombre/Host/Alias: @
    • Valor: la dirección IP externa del balanceador de carga que has creado anteriormente. No incluyas el puerto :443 en tu registro DNS.
    • TTL: el valor predeterminado de tu registrador u 86400 (un día).
  4. Espera a que se actualice el registro DNS. El registro que acaba de añadir puede tardar hasta un día en propagarse.
  5. Para probar el balanceador de carga, usa un navegador web para ir a tu dominio con el protocolo https://.
    • Si el balanceador de carga aún no está configurado, verás errores "HTTP 502".
    • Cuando el balanceador de carga esté listo, verás el mensaje "Solicitud no autorizada".

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

Reiniciar las VMs

Para autenticar correctamente las solicitudes de IAP, debes reiniciar las máquinas virtuales de tu MIG siguiendo estos pasos:

  1. En la Google Cloud consola, 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 del grupo de instancias que aparecen, haz clic en Reinicio o sustitución gradual.
  4. En la página Reiniciar o sustituir instancias de mi-grupo-de-instancias-gestionado que aparece, define los siguientes valores:
    • Operación: reiniciar
    • Número máximo de pods no disponibles: 3 instancias de 3 instancias
    • Tiempo de espera mínimo: 0 s
  5. Cuando hayas terminado de actualizar los valores, haz clic en Reiniciar.

Paso 5: Configura las compras en la aplicación

Configurar el cortafuegos

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

  1. Ve a la Google Cloud consola Red de VPC > Reglas de cortafuegos.
    IR A LA PÁGINA REGLAS DE CORTAFUEGOS
  2. Marque la casilla situada junto a las siguientes reglas:
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. Haz clic en Eliminar.
  4. Haz clic en Crear regla de cortafuegos y define los siguientes valores:
    • Nombre: allow-iap-traffic
    • Destinos: todas las instancias de la red
    • Intervalos de IP de origen: pulsa Intro después de pegar cada valor en el cuadro. Los intervalos de IP se han añadido a la lista de permitidas porque es un requisito previo para que los balanceadores de carga se comuniquen con los back-ends.
      • 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.

Configurar IAP

Para configurar las compras en la aplicación en tu proyecto, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Seguridad > Identity-Aware Proxy y selecciona el proyecto en el que quieras habilitar IAP.
    IR A LA PÁGINA DE IDENTITY-AWARE PROXY
  2. Si no has configurado la pantalla de consentimiento de OAuth de tu proyecto, se te pedirá que lo hagas:

    1. Ve a la pantalla de consentimiento de OAuth.
      Configurar página de consentimiento
    2. En Correo de asistencia, selecciona la dirección de correo que quieras mostrar como contacto público. La dirección de correo debe pertenecer a la cuenta de usuario con la que se ha iniciado sesión o a un grupo de Google del que el usuario con la sesión iniciada sea administrador o propietario.
    3. Introduce el nombre de la aplicación que quieras mostrar.
    4. Añade los detalles opcionales que quieras.
    5. Haz clic en Guardar.

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

  3. Junto a my-backend-service,

  4. En la ventana Activar IAP que aparece, marca la casilla situada junto a "He leído los requisitos de configuración y he configurado mi recurso de Compute Engine tal como se especifica en la documentación".

  5. Haz clic en Activar.

Añadir principales a la lista de acceso

A continuación, añadirás principales a la lista de acceso de IAP de tu proyecto.

  1. En la sección Acceso de la parte derecha de Gestión de identidades y accesos > Identity-Aware Proxy, haz clic en Añadir.
  2. Introduce las entidades a las que quieras dar acceso, incluido tú mismo, y asigna a las entidades el rol Usuario de aplicaciones web protegidas mediante IAP. Los directores pueden ser:
    • Cuentas de Google: user@gmail.com
    • Grupos de Google: admins@googlegroups.com
    • Cuentas de servicio: server@example.gserviceaccount.com
    • Dominios de Google Workspace: example.com

Paso 6: Prueba las compras en la aplicación

Para comprobar que las compras en la aplicación funcionan correctamente, sigue estos pasos:

  1. En tu navegador web, ve a tu dominio.
    1. Si aparece el mensaje "Solicitud no autorizada", vuelve a intentarlo en unos minutos.
  2. Cuando veas una pantalla de inicio de sesión de Google, inicia sesión con la cuenta de Google a la que has dado acceso en el paso anterior.
  3. Debería aparecer un mensaje como "Hola, user@example.com. Soy my-managed-instance-group-29z6".
  4. Prueba a actualizar la página. Tu navegador debería mostrar los nombres de las tres máquinas de tu grupo de instancias gestionado. Este es el balanceador de carga que distribuye el tráfico entre las VMs del grupo.

¡Enhorabuena! Has habilitado correctamente un servicio con balanceo de carga mediante IAP.

Limpieza

Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.

Una vez que hayas terminado de configurar IAP para Compute Engine, puedes eliminar los recursos que has creado en Google Cloud para que no se te facturen en el futuro. En las siguientes secciones se explica cómo eliminar o desactivar dichos recursos.

Eliminar el proyecto

La forma más fácil de evitar que te cobren es eliminar el proyecto que has creado para el tutorial.

Para ello, sigue las instrucciones que aparecen a continuación:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Eliminar instancias

Para eliminar una instancia de Compute Engine:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

Eliminar reglas de cortafuegos de la red predeterminada

Puedes eliminar una regla de cortafuegos de este modo:

  1. In the Google Cloud console, go to the Firewall page.

    Go to Firewall

  2. Select the checkbox for the firewall rule that you want to delete.
  3. To delete the firewall rule, click Delete.

Siguientes pasos