GSP499
Descripción general
En este lab, crearás una aplicación web simple con Cloud Run y explorarás distintas maneras de usar Identity-Aware Proxy (IAP) para restringir el acceso a la aplicación y proporcionarle información de identidad del usuario. Tu app hará lo siguiente:
- Mostrará una página de bienvenida.
- Accederá a la información de identidad del usuario que brinda IAP.
- Usará la verificación criptográfica para impedir el spoofing de la información de identidad del usuario.
Qué aprenderás
En este lab, aprenderás a realizar las siguientes tareas:
- Escribir e implementar un servicio de Cloud Run simple con Python
- Habilitar o inhabilitar IAP para restringir el acceso a tu app
- Trasladar la información de identificación del usuario de IAP a tu app
- Verificar de manera criptográfica la información de IAP para protegerse del spoofing
Requisitos previos
Tu experiencia de aprendizaje será mejor si cuentas con conocimientos básicos del lenguaje de programación Python.
Este lab se enfoca en Cloud Run y en IAP. Los conceptos y los bloques de código no relacionados con esos temas se abordan superficialmente y se proporcionan para que solo los copies y pegues.
Introducción a Identity-Aware Proxy
Es necesario autenticar los usuarios de tu app web con frecuencia y, para lograrlo, se requiere una programación especial. En las apps de Google Cloud, puedes transferir esas responsabilidades al servicio de Identity-Aware Proxy. Si solamente necesitas restringir el acceso a determinados usuarios, no tendrás que realizar cambios en la aplicación. En caso de que la aplicación deba conocer la identidad del usuario (por ejemplo, para mantener las preferencias del usuario del lado del servidor), Identity-Aware Proxy puede hacerlo con un código mínimo de la aplicación.
¿Qué es Identity-Aware Proxy?
Identity-Aware Proxy (IAP) es un servicio de Google Cloud que intercepta las solicitudes web que se envían a tu aplicación, autentica al usuario que hace la solicitud mediante Google Identity Services y solo acepta las solicitudes si provienen de un usuario que esté autorizado. Además, puedes modificar los encabezados de las solicitudes para que incluyan información sobre el usuario autenticado.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la derecha, se encuentra el panel Configuración del lab y acceso, que tiene los siguientes elementos:
- El botón Abrir la consola de Google Cloud
- Las credenciales temporales (nombre de usuario y contraseña) que debes usar para este lab
- Otra información para completar el lab (si es necesaria)
Ten en cuenta que el cronómetro del lab se encuentra cerca de la parte superior de la página y muestra el tiempo restante.
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia los recursos y abre otra pestaña, en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usa otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación ni autenticación de dos factores, ya que esta cuenta es temporal.
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Descarga el código
En Cloud Shell, haz clic en el área de la línea de comandos para poder escribir los comandos.
Descarga el código de un bucket de almacenamiento público y, luego, cambia a la carpeta de código:
gcloud storage cp gs://{{{project_0.project_id}}}-bucket/user-authentication-with-iap.zip .
unzip user-authentication-with-iap.zip
cd user-authentication-with-iap
Esa carpeta contiene una subcarpeta por cada paso de este lab. Deberás cambiar a la carpeta correcta para completar cada paso.
Tarea 1: Implementa la aplicación y protégela con IAP
La aplicación es un servicio de Cloud Run escrito en Python que simplemente muestra una página de bienvenida con el mensaje "Hello World". Lo que haremos será implementarla, probarla y usar IAP para restringir el acceso a ella.
Revisa el código de la aplicación
- Cambia de la carpeta principal del proyecto a la subcarpeta
1-HelloWorld, que contiene el código para este paso.
cd 1-HelloWorld
El código de la aplicación se encuentra en el archivo main.py. Utiliza el framework web Flask para responder las solicitudes web con el contenido de una plantilla. Ese archivo de plantilla está en templates/index.html y, para este paso, contiene solamente HTML simple. Un segundo archivo de plantilla contiene un ejemplo básico de una política de privacidad en templates/privacy.html.
Hay otro archivo, requirements.txt, que incluye una lista de todas las bibliotecas de Python no predeterminadas que usa la aplicación.
Puedes usar el comando cat para que se muestre cada archivo en la shell, como en el siguiente ejemplo:
cat main.py
Para examinar el código, también puedes iniciar el editor de código de Cloud Shell haciendo clic en Abrir editor (ícono de lápiz), que está en la barra de herramientas de Cloud Shell.
No es necesario que modifiques ningún archivo para este paso.
Implementa en Cloud Run
- Implementa la app en Cloud Run:
gcloud run deploy user-auth-lab --source . --allow-unauthenticated --region={{{ project_0.default_region | "REGION" }}}
- Si se te solicita habilitar la API, ingresa Y para indicar que aceptas hacerlo. Si se te solicita crear un repositorio de Artifact Registry para continuar, ingresa Y para confirmar que quieres hacerlo.
La implementación se completará en algunos minutos. Verás un mensaje con la URL del servicio.
- Abre la URL del servicio que se muestra en una nueva pestaña del navegador para ver la página web. El acceso aún no está restringido.

Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar un servicio de Cloud Run
Restringe el acceso con IAP
-
En el menú de navegación (
) de la consola de Google Cloud, haz clic en Seguridad > Identity-Aware Proxy.
-
Haz clic en Habilitar API.
-
Haz clic en Ir a Identity-Aware Proxy.
-
Haz clic en el botón de activación en la columna IAP junto a user-auth-lab para activar IAP.
-
Haz clic en Activar para confirmar.
Prueba que IAP esté activado
-
Abre una pestaña nueva del navegador y ve a la URL de tu app. Se abrirá la página Acceder con Google.
-
Accede con las credenciales de la cuenta de estudiante que usaste para ingresar a la consola.
Aparecerá una pantalla que te negará el acceso.
Lograste proteger correctamente tu app con IAP, pero aún no autorizaste ninguna cuenta de usuario.
-
Regresa a la página Identity-Aware Proxy en la consola.
-
Selecciona la casilla de verificación junto al servicio user-auth-lab de Cloud Run para abrir la barra lateral de detalles del lado derecho.
-
Haz clic en Agregar entidad.
-
En Entidades nuevas, ingresa tu dirección de correo electrónico de estudiante.
-
En Seleccionar un rol, elige Cloud IAP > Usuario de app web protegida con IAP.
-
Haz clic en Guardar.
Aparecerá el mensaje "Se actualizó la política" en la parte inferior de la página.
-
Regresa a tu app y vuelve a cargar la página. Como ya accediste con una cuenta autorizada, ahora deberías ver tu app web.
Nota:
El cambio de rol tarda unos minutos en aplicarse. Si la página sigue mostrando el mensaje "No tienes acceso", espera unos minutos y actualízala.
Haz clic en Revisar mi progreso para verificar el objetivo.
Habilitar y agregar la política a IAP
Si sigues viendo la página de acceso denegado, borra la cookie de acceso de IAP:
- Agrega
/_gcp_iap/clear_login_cookie al final de la URL de tu servicio (p. ej., https://user-auth-lab-[random-hash].run.app/_gcp_iap/clear_login_cookie) y ábrela.
- Cuando aparezca la nueva página Acceder con Google, haz clic en Usar otra cuenta y vuelve a ingresar tus credenciales de estudiante.
Tarea 2: Accede a la información de identidad del usuario
Cuando una aplicación está protegida con IAP, puede utilizar la información de identidad que IAP proporciona en los encabezados de la solicitud web que pasan por este servicio. En este paso, la aplicación obtendrá la dirección de correo electrónico del usuario que accedió y un ID persistente de usuario único que el servicio de identidad de Google asignó a ese usuario. Esos datos se mostrarán al usuario en la página de bienvenida.
- En Cloud Shell, cambia a la carpeta para este paso:
cd ~/user-authentication-with-iap/2-HelloUser
Implementa en Cloud Run
- Implementa la app en Cloud Run:
gcloud run deploy user-auth-lab --source . --region={{{ project_0.default_region | "REGION" }}}
- Si se te solicita continuar, ingresa Y para confirmar.
La implementación debería completarse después de algunos minutos. Mientras esperas, puedes examinar los archivos de la aplicación como se describe a continuación.
Haz clic en Revisar mi progreso para verificar el objetivo.
Acceder a la información de identidad del usuario
Examina los archivos de la aplicación
- Visualiza el archivo principal de la aplicación en Cloud Shell con el comando
cat:
cat main.py
- Consulta el archivo de plantilla para ver cómo muestra los datos del usuario:
cat templates/index.html
Esta carpeta contiene el mismo conjunto de archivos que incluye la app anterior que implementaste, 1-HelloWorld, pero se modificaron dos de los archivos: main.py y templates/index.html. El programa se modificó para que recupere la información del usuario que IAP proporciona en los encabezados de solicitud, y la plantilla ahora muestra esos datos.
En main.py, hay dos líneas que obtienen los datos de identidad proporcionados por IAP:
user_email = request.headers.get('X-Goog-Authenticated-User-Email')
user_id = request.headers.get('X-Goog-Authenticated-User-ID')
IAP proporciona los encabezados X-Goog-Authenticated-User-, y los nombres no distinguen mayúsculas de minúsculas, así que puedes escribirlos como prefieras. La instrucción render_template ahora incluye esos valores para que puedan mostrarse:
page = render_template('index.html', email=user_email, id=user_id)
La plantilla index.html puede mostrar esos valores con los nombres entre llaves dobles:
Hello, {{ email }}! Your persistent ID is {{ id }}.
Como puedes ver, los datos proporcionados tienen el prefijo accounts.google.com para mostrar de dónde provino la información. Tu aplicación puede quitar todo hasta los dos puntos (incluidos) para obtener los valores sin procesar, si así lo deseas.
Prueba la app actualizada
- Recupera la URL de tu aplicación:
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Abre esa URL en una nueva pestaña del navegador.
- Si es necesario, actualiza la página para ver tu dirección de correo electrónico y el ID persistente.
Desactiva IAP
¿Qué sucederá con esta app si IAP se inhabilita o se omite? Desactiva IAP para averiguarlo.
- En la ventana de la consola de Cloud, en el menú de navegación, haz clic en Seguridad > Identity-Aware Proxy.
- Haz clic en el interruptor IAP junto a tu servicio de Cloud Run (p. ej.,
user-auth-lab) para desactivar IAP.
- Haz clic en Permitir acceso público.
- Actualiza la página web de la aplicación. Deberías ver la misma página, pero sin información del usuario.
Como la aplicación ahora está desprotegida, un usuario podría enviar una solicitud web que parecería haber pasado por IAP. Para hacer eso, por ejemplo, puedes ejecutar el siguiente comando curl desde Cloud Shell (reemplaza <your-url-here> por la URL de tu app):
curl -X GET YOUR_URL -H "X-Goog-Authenticated-User-Email: totally fake email"
La página web aparecerá en la línea de comandos y mostrará el correo electrónico falso:
<!doctype html>
<html>
<head>
<title>IAP Hello User</title>
</head>
<body>
<h1>Hello World</h1>
<p>
Hello, totally fake email! Your persistent ID is None.
</p>
<p>
This is step 2 of the User Authentication with IAP</em>
codelab.
</p>
</body>
</html>
La aplicación no tiene manera de saber que se inhabilitó o se omitió IAP. Para los casos en los que existe un posible riesgo, la verificación criptográfica tiene la solución.
Tarea 3: Utiliza la verificación criptográfica
Si existe el riesgo de que se desactive o se omita IAP, tu app puede realizar una verificación para asegurarse de que la información de identidad que recibe sea válida. Para hacerlo, se utiliza un tercer encabezado de solicitud web que agrega IAP, llamado X-Goog-IAP-JWT-Assertion. El valor del encabezado es un objeto con firma criptográfica que también contiene los datos de identidad del usuario. Tu aplicación puede verificar la firma digital y usar los datos proporcionados en este objeto para asegurarse de que los haya proporcionado IAP sin alteraciones.
La verificación de la firma digital requiere varios pasos adicionales, como la recuperación del conjunto más reciente de claves públicas de Google. Puedes decidir si tu aplicación necesita estos pasos adicionales en función del riesgo de que alguien pueda omitir o desactivar IAP, y según la sensibilidad de la aplicación.
- En Cloud Shell, cambia a la carpeta para este paso:
cd ~/user-authentication-with-iap/3-HelloVerifiedUser
Implementa en Cloud Run
-
Encuentra el ID de cliente de Público de JWT del encabezado firmado para tu servicio de Cloud Run protegido por IAP:
-
Ve a la página Identity-Aware Proxy en la consola de Cloud.
-
Busca user-auth-lab en la lista.
-
Nota: Es posible que debas desplazar la tabla de recursos hacia la derecha (con la barra de desplazamiento horizontal que está en la parte inferior de la tabla) para revelar la columna Acciones en el extremo derecho.
-
En Acciones, haz clic en el botón de tres puntos verticales junto al recurso y selecciona Obtener el código de público de JWT.
-
En la ventana modal que aparece, copia y pega en un editor de texto la cadena ID de cliente que se muestra y selecciona Aceptar.
-
Implementa la app en Cloud Run y configura la variable de entorno IAP_AUDIENCE con el valor del ID de cliente que copiaste:
gcloud run deploy user-auth-lab --source . --set-env-vars IAP_AUDIENCE="YOUR_CLIENT_ID" --region={{{ project_0.default_region | "REGION" }}}
- Si se te solicita continuar, ingresa Y para confirmar.
La implementación debería completarse después de algunos minutos. Mientras esperas, puedes examinar los archivos de la aplicación como se describe a continuación.
Haz clic en Revisar mi progreso para verificar el objetivo.
Utilizar la verificación criptográfica
Examina los archivos de la aplicación
- Visualiza el nuevo archivo de ayuda para la autenticación en Cloud Shell con el comando
cat:
cat auth.py
- Consulta el archivo principal de la aplicación para ver cómo se integra el método de usuario verificado:
cat main.py
Esta carpeta contiene el mismo conjunto de archivos que 2-HelloUser, pero se modificaron dos de los archivos y hay uno nuevo. El archivo nuevo es auth.py. Este proporciona un método user() para recuperar y verificar la información de identidad con firma criptográfica. Los archivos modificados son main.py y templates/index.html, que ahora utilizan los resultados de ese método. A modo de comparación, también se muestran los encabezados no verificados como en la última implementación.
- La nueva funcionalidad se encuentra principalmente en la función
user():
def user():
assertion = request.headers.get('X-Goog-IAP-JWT-Assertion')
if assertion is None:
return None, None
info = jwt.decode(
assertion,
keys(),
algorithms=['ES256'],
audience=audience()
)
return info['email'], info['sub']
La confirmación assertion representa los datos con firma criptográfica que se proporcionan en el encabezado de la solicitud especificado. El código usa una biblioteca para validar y decodificar esos datos. La validación utiliza las claves públicas que proporciona Google para verificar los datos que firma y averiguar para qué público se prepararon los datos (básicamente, el proyecto de Google Cloud que se protege). Las funciones auxiliares keys() y audience() recopilan y devuelven esos valores.
El objeto con firma tiene dos datos que necesitamos: la dirección de correo electrónico verificada y el valor de ID único (proporcionado en el campo estándar sub, de suscriptor).
Aquí termina el paso 3.
Prueba la verificación criptográfica
Cuando la implementación esté lista, puedes obtener la URL de tu aplicación con el siguiente comando:
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Abre esa URL en una nueva pestaña del navegador.
- Recuerda que habías inhabilitado IAP, de modo que la aplicación no proporcionará datos de IAP. Verifica que veas una página que muestre Ninguno para el correo electrónico y el ID.
- Ve a la página Identity-Aware Proxy en la consola.
- Para volver a activar IAP, haz clic en el interruptor junto a tu servicio de Cloud Run.
- Haz clic en Activar para confirmar.
- En Cloud Shell, ejecuta el siguiente comando para otorgarle permiso al agente de servicio de IAP para invocar a tu servicio de Cloud Run:
gcloud run services add-iam-policy-binding user-auth-lab \
--member="serviceAccount:service-$(gcloud projects describe {{{project_0.project_id}}} --format='value(projectNumber)')@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker" \
--region={{{ project_0.default_region | "REGION" }}}
- Actualiza la página de la aplicación. Comprueba que el correo electrónico y el ID de usuario con firma criptográfica ahora se muestren y verifiquen correctamente.
Observa que la dirección de correo electrónico que proporciona el método verificado no tiene el prefijo accounts.google.com:.
Si se desactiva o se omite IAP, faltarán los datos verificados o estos no serán válidos, dado que no pueden tener una firma válida a menos que los haya creado el titular de las claves privadas de Google.
¡Felicitaciones!
Implementaste un servicio de Cloud Run. Primero, restringiste el acceso a la aplicación para que solo puedan acceder los usuarios que tú elijas. Luego, recuperaste y mostraste la identidad de los usuarios a los que IAP permitió acceder a tu aplicación y viste cómo esa información podría falsificarse si se inhabilitara o se omitiera IAP. Por último, verificaste las aserciones con firma criptográfica para que no se pueda falsificar la identidad del usuario.
Próximos pasos y más información
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 28 de mayo de 2026
Prueba más reciente del lab: 28 de mayo de 2026
Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.