Puntos de control
Deploy an App Engine application
/ 20
Enable and add policy to IAP
/ 30
Access User Identity Information
/ 25
Use Cryptographic Verification
/ 25
Autenticación de usuarios: Identity-Aware Proxy
GSP499
Descripción general
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:
- 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 que se falsifique la información de identidad del usuario
Qué aprenderás
- Cómo utilizar Python para escribir y, luego, implementar una aplicación simple de App Engine
- Cómo habilitar o inhabilitar IAP para restringir el acceso a tu app
- Cómo trasladar la información de identidad del usuario de IAP a tu app
- Cómo verificar de manera criptográfica la información de IAP para protegerte de la falsificación de identidad
Introducción
Es necesario autenticar los usuarios de tu app web con frecuencia y, para lograrlo, se requiere programación especial. En el caso de 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.
Requisitos
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.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, 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)
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Cómo iniciar su lab y acceder a la consola de Google Cloud
-
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:
- El botón Abrir la consola de Google
- Tiempo restante
- Las credenciales temporales que debe usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta. -
Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.
-
Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.
Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales. -
Haga clic para avanzar por las páginas siguientes:
- Acepte los términos y condiciones.
- No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No se registre para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Cloud en esta pestaña.
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.
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.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
-
Haz clic en Autorizar.
-
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
- Puedes solicitar el ID del proyecto con este comando (opcional):
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
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:
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
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.
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.
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.
Realiza la implementación en App Engine
- Implementa la aplicación en el entorno estándar de App Engine para Python.
-
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
.
- Escribe ese comando:
- Haz clic en el vínculo que se muestra para abrirlo en una pestaña nueva o, de ser necesario, cópialo y pégalo en una pestaña nueva que hayas abierto manualmente. Como esta es la primera vez que se ejecuta la aplicación, tardará unos segundos en aparecer mientras se inicia una instancia en la nube. Deberías ver la siguiente ventana:
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.
Restringe el acceso con IAP
-
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 app. Puedes encontrarla ejecutando el 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 (p. ej., 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.
- En Cloud Shell, ejecuta este comando para inhabilitar la API de Flex:
- Regresa a la página de Identity-Aware Proxy y actualízala. Ahora deberías ver una lista de los recursos que puedes proteger.
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.
- IAP protegerá el dominio. Haz clic en Activar.
Prueba que IAP esté activado
-
Abre una pestaña del navegador y navega a la URL de tu app. Se abrirá la pantalla Acceder con Google y se te indicará que accedas a la app.
-
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.
- Regresa a la página de Identity-Aware Proxy de la consola, selecciona la casilla de verificación junto a la aplicación de App Engine y consulta la barra lateral de App Engine a la derecha.
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.
- Haz clic en Guardar.
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.
Prueba el acceso
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:
- Abre tu navegador web en la dirección de la página principal, pero agrega
/_gcp_iap/clear_login_cookie
al final de la URL, como enhttps://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie
. - Ahora verás una nueva pantalla de Acceder con Google en la que ya se mostrará tu cuenta. No hagas clic en la cuenta, sino en Usar otra cuenta, y vuelve a ingresar tus credenciales.
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.
Tarea 2: Accede a la información de identidad del usuario
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.
- En Cloud Shell, cambia a la carpeta para este paso:
Realiza la implementación en App Engine
- Como la implementación tardará algunos minutos, primero implementa la aplicación en el entorno estándar de App Engine para Python:
- Cuando se te pregunte si quieres continuar, presiona Y para indicar que sí.
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.
Examina los archivos de la aplicación
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.
Prueba la función IAP actualizada
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
.
- Escribe ese comando:
- 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. Deberías ver una página similar a la siguiente:
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.
Desactiva IAP
¿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.
- En la ventana de la consola de Cloud, haz clic en el Menú de navegación > Seguridad > Identity-Aware Proxy.
- Haz clic en el interruptor IAPjunto a la aplicación de App Engine para desactivar IAP. Haz clic en DESACTIVAR.
Se te advertirá que todos los usuarios podrán acceder a la app.
- 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 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.
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:
Realiza la implementación en App Engine
- Implementa la aplicación en el entorno estándar de App Engine para Python:
- Cuando se te pregunte si quieres continuar, presiona Y para indicar que sí.
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.
Examina los archivos de la aplicación
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()
:
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 muestran 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, verás un mensaje en el cual se indicará que puedes ver tu aplicación con gcloud app browse
.
- Escribe ese comando:
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.
¡Felicitaciones!
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.
Finaliza tu Quest
Este lab de autoaprendizaje forma parte de las Quests Security & Identity Fundamentals y Networking Fundamentals in Google Cloud. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en cualquier Quest que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.
Realiza tu próximo lab
Continúa tu Quest con Cómo comenzar a usar Cloud KMS o prueba un lab diferente de Google Cloud Skills Boost, por ejemplo:
Próximos pasos/Más información
- Obtén más detalles sobre Cloud Identity-Aware Proxy.
- Consulta otros productos de seguridad de Google.
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.
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.
Actualización más reciente del manual: 14 de noviembre de 2023
Prueba más reciente del lab: 14 de noviembre de 2023
Copyright 2024 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.