
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Deploy an App Engine application
/ 20
Enable and add policy to IAP
/ 30
Access User Identity Information
/ 25
Use Cryptographic Verification
/ 25
En este lab, compilarás una aplicación web simple con Google App Engine 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:
Tu experiencia de aprendizaje será mejor si cuentas con conocimientos básicos del lenguaje de programación Python.
Este lab se enfoca en Google App Engine y en IAP. Los conceptos y los bloques de código no relevantes se pasan por alto y se proporcionan para que simplemente los copies y pegues.
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.
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.
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:
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 izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
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 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.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
Haz clic en Siguiente.
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haz clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
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.
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:
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.
Haz clic en Autorizar.
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
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:
Esa carpeta contiene una subcarpeta por cada paso de este lab. Deberás cambiar a la carpeta correcta para completar cada paso.
Esta es una aplicación para el entorno estándar de App Engine escrita 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.
1-HelloWorld
, que contiene el código para este paso.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 dos archivos más: requirements.txt
(que enumera todas las bibliotecas de Python no predeterminadas que usa la aplicación) y app.yaml
(que le indica a Google Cloud que es una aplicación de App Engine compilada con Python).
Puedes usar el comando cat para que se muestre cada archivo en la shell, como en el siguiente ejemplo:
Para examinar el código, también puedes iniciar el editor de código de Cloud Shell. Para ello, haz clic en el ícono de lápiz que está en la parte superior derecha de la ventana de Cloud Shell.
No es necesario que modifiques ningún archivo para este paso.
python39
.Selecciona una región
Cuando se te pregunte si quieres continuar, presiona Y para indicar que sí.
gcloud app deploy
.
La implementación se completará en algunos minutos. Verás un mensaje en el cual se indicará que puedes ver tu aplicación con gcloud app browse
.
Para ver esa página web, puedes abrir esa misma URL desde cualquier computadora conectada a Internet. El acceso aún no está restringido.
Haz clic en Revisar mi progreso para verificar el objetivo.
En la ventana de la consola de Cloud, haz clic en el Menú de navegación > Seguridad > Identity-Aware Proxy.
Haz clic en HABILITAR API.
Haz clic en IR A IDENTITY-AWARE PROXY.
Haz clic en CONFIGURAR PANTALLA DE CONSENTIMIENTO.
Selecciona Interno en Tipo de usuario y haz clic en Crear.
Completa los espacios en blanco requeridos con los valores correspondientes:
Campo |
Valor |
Nombre de la app |
Ejemplo de IAP |
Correo electrónico de asistencia del usuario |
Selecciona tu dirección de correo electrónico de estudiante de lab en el menú desplegable. |
Página principal de la aplicación |
La URL que utilizaste para ver tu aplicación. Puedes encontrarla mediante la ejecución del comando gcloud app browse en Cloud Shell de nuevo. |
Vínculo a la política de privacidad de la aplicación |
El vínculo a la página de la política de privacidad de la app, que es igual al vínculo de la página principal con |
Dominios autorizados |
Haz clic en + AGREGAR DOMINIO. La sección de nombre de host correspondiente a la URL de la aplicación, por ejemplo, iap-example-999999.appspot.com. Puedes verla en la barra de direcciones de la página web Hello World que visitaste antes. No incluyas el comienzo |
Información de contacto del desarrollador |
Ingresa al menos un correo electrónico |
Haz clic en Guardar y continuar.
Para ver los Permisos, haz clic en Guardar y continuar.
Para ver el Resumen, haz clic en Volver al panel.
Es posible que se te indique crear las credenciales. Como no es necesario hacerlo para este lab, puedes cerrar la pestaña del navegador.
Haz clic en el botón de activación en la columna IAP de la fila de la aplicación de App Engine para activar IAP.
Abre una pestaña del navegador y navega a la URL de tu aplicación. Se abrirá la pantalla Acceder con Google y se te indicará que accedas a la aplicación.
Ingresa con la cuenta que utilizaste para acceder a la consola. Verás una pantalla en la cual se denegará el acceso.
Lograste proteger correctamente tu app con IAP, pero aún no le has indicado a IAP a qué cuentas dar acceso.
Deberás agregar como Miembro a cada dirección de correo electrónico (o dirección de Grupos de Google o nombre de dominio de Workspace) que deba tener permitido el acceso.
Haz clic en Agregar permisos de cuenta principal.
Ingresa tu dirección de correo electrónico de Estudiante.
Luego, elige el rol Cloud IAP > Usuario de aplicación web protegida con IAP para asignarlo a esa dirección.
Puedes ingresar más direcciones o dominios de Workspace de la misma manera.
Aparecerá el mensaje “Se actualizó la política” en la parte inferior de la ventana.
Haz clic en Revisar mi progreso para verificar el objetivo.
Regresa a tu app y vuelve a cargar la página. Ahora deberías ver tu app web, dado que ya accediste con un usuario que autorizaste.
Si continúas viendo la página “No tienes acceso”, significa que IAP no volvió a verificar tu autorización. En ese caso, completa los siguientes pasos:
/_gcp_iap/clear_login_cookie
al final de la URL, como en https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie
.Si completas estos pasos, IAP volverá a verificar tu acceso, tras lo cual deberías ver la pantalla principal de tu aplicación.
Si tienes acceso a otro navegador o puedes usar el modo Incógnito en tu navegador, y si tienes otra cuenta válida de Gmail o Workspace, puedes usar ese navegador para ir hasta la página de tu aplicación y acceder con la otra cuenta. Dado que no se autorizó esa cuenta, verás la pantalla “No tienes acceso” en lugar de tu aplicación.
Cuando una aplicación está protegida con IAP, puedes utilizar la información de identidad que IAP proporciona en los encabezados de la solicitud web que pasa 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.
python39
.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.
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:
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:
La plantilla index.html puede mostrar esos valores con los nombres entre llaves dobles:
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.
Regresa a la implementación. Cuando esté lista, aparecerá un mensaje en el cual se indicará que puedes ver tu aplicación con gcloud app browse
.
Quizás debas esperar algunos minutos para que la nueva versión de tu aplicación reemplace a la versión anterior. En caso de ser necesario, actualiza la página para ver una página similar a la de arriba.
¿Qué sucederá con esta aplicación si IAP se inhabilita o se omite de alguna manera (por ejemplo, debido a la ejecución de otras aplicaciones en tu mismo proyecto en la nube)? Desactiva IAP para averiguarlo.
Se te advertirá que todos los usuarios podrán acceder a la app.
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 correcta de tu app):
La página web se mostrará en la línea de comandos y será similar a los siguientes ejemplos:
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.
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.
python39
.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.
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.
user()
: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.
Cuando la implementación esté lista, verás un mensaje en el cual se indicará que puedes ver tu aplicación con gcloud app browse
.
Si no se abre una nueva pestaña en tu navegador, copia el vínculo que se muestra y ábrelo normalmente en otra pestaña.
Recuerda que habías inhabilitado IAP, de modo que la aplicación no proporcionará datos de IAP. Deberías ver una página similar a la siguiente:
Como antes, quizás debas esperar algunos minutos para que esté activa la versión más nueva de la página y puedas verla.
Dado que IAP está inhabilitado, no hay información de usuario disponible. Ahora, vuelve a activar IAP.
En la ventana de la consola de Cloud, haz clic en el Menú de navegación > Seguridad > Identity-Aware Proxy.
Para volver a activar IAP, haz clic en el interruptor junto a la aplicación de App Engine. Haz clic en ACTIVAR.
Actualiza la página. Debería ser como la siguiente:
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.
Implementaste una aplicación web de App Engine. 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.
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: 15 de abril de 2024
Prueba más reciente del lab: 28 de febrero de 2024
Copyright 2025 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.
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
One lab at a time
Confirm to end all existing labs and start this one