
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
Dans cet atelier, vous allez créer une application Web minimale avec Google App Engine, puis explorer diverses manières d'utiliser Identity-Aware Proxy (IAP) pour restreindre l'accès à l'application et lui fournir les informations d'identité des utilisateurs. Cette application réalise les opérations suivantes :
Une connaissance de base du langage de programmation Python améliorera votre expérience d'apprentissage.
Cet atelier porte sur Google App Engine et IAP. Les concepts et les blocs de code non pertinents ne sont pas abordés, et sont seulement fournis afin que vous puissiez les copier et les coller facilement.
L'authentification des utilisateurs de votre application Web est souvent nécessaire et requiert généralement une programmation spéciale dans votre application. Pour les applications Google Cloud, vous pouvez déléguer ces tâches au service Identity-Aware Proxy. Si vous avez seulement besoin de restreindre l'accès aux utilisateurs sélectionnés, aucune modification ne doit être apportée à l'application. Si l'application doit connaître l'identité de l'utilisateur (par exemple pour conserver les préférences utilisateur côté serveur), Identity-Aware Proxy peut fournir cette information avec un code d'application minimal.
Identity-Aware Proxy (IAP) est un service Google Cloud qui intercepte les requêtes Web envoyées à votre application, authentifie l'utilisateur qui effectue la requête à l'aide de Google Identity Service et transmet la requête seulement si elle provient d'un utilisateur que vous autorisez. De plus, IAP peut modifier les en-têtes de requête pour inclure des informations sur l'utilisateur authentifié.
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau "Détails concernant l'atelier", qui contient les éléments suivants :
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".
Cliquez sur Suivant.
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".
Cliquez sur Suivant.
Accédez aux pages suivantes :
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :
gcloud
est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
Cliquez sur Autoriser.
Vous devez à présent obtenir le résultat suivant :
Résultat :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Cliquez sur la zone de la ligne de commande dans Cloud Shell afin de pouvoir saisir des commandes.
Téléchargez le code depuis un bucket de stockage public, puis accédez au dossier du code :
Ce dossier contient un seul sous-dossier pour chaque étape de cet atelier. Vous devrez accéder au dossier approprié pour effectuer chaque étape.
Il s'agit d'une application standard App Engine codée en Python qui affiche simplement une page d'accueil "Hello, World". Nous allons déployer et tester cette application, puis en restreindre l'accès à l'aide d'IAP.
1-HelloWorld
qui contient le code pour cette étape.Le code de l'application est contenu dans le fichier main.py
. L'application utilise le framework Web Flask pour répondre aux requêtes Web avec le contenu d'un modèle. Ce fichier de modèle est situé dans templates/index.html
et, pour cette étape, contient uniquement du code HTML. Un second fichier de modèle contient un exemple de squelette de règles de confidentialité dans templates/privacy.html
.
Il existe deux autres fichiers : requirements.txt
qui contient la liste complète des bibliothèques Python autres que celles que l'application utilise par défaut, et app.yaml
qui indique à Google Cloud qu'il s'agit d'une application Python App Engine.
Vous pouvez lister tous les fichiers contenus dans le shell à l'aide de la commande cat, comme dans l'exemple suivant :
Vous pouvez également lancer l'éditeur de code Cloud Shell en cliquant sur l'icône en forme de crayon située en haut à droite dans la fenêtre Cloud Shell pour examiner le code.
Aucun fichier n'a besoin d'être modifié pour cette étape.
python39
.Sélectionnez une région
Lorsque vous êtes invité à poursuivre l'opération, saisissez Y pour "oui".
gcloud app deploy
.
Le déploiement s'effectue en quelques minutes. Un message vous indique que vous pouvez afficher votre application avec gcloud app browse
.
Vous pouvez ouvrir cette même URL à partir de n'importe quel ordinateur connecté à Internet pour afficher cette page Web. L'accès n'est pas encore restreint.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Dans la fenêtre de la console Cloud, cliquez sur le menu de navigation > Sécurité > Identity-Aware Proxy.
Cliquez sur ACTIVER L'API.
Cliquez sur ACCÉDER À IDENTITY-AWARE PROXY.
Cliquez sur CONFIGURER L'ÉCRAN D'AUTORISATION.
Sous "Type d'utilisateur", sélectionnez Interne, puis cliquez sur Créer.
Renseignez les champs obligatoires à l'aide des valeurs appropriées :
Champ |
Valeur |
Nom de l'application |
IAP Example |
Adresse e-mail d'assistance utilisateur |
Sélectionnez votre adresse e-mail de participant à l'atelier dans le menu déroulant. |
Page d'accueil de l'application |
L'URL que vous avez utilisée pour afficher votre application. Vous pouvez la retrouver en exécutant à nouveau la commande gcloud app browse dans Cloud Shell. |
Lien vers les règles de confidentialité de l'application |
Il s'agit du lien vers les règles de confidentialité dans l'application, identique au lien vers la page d'accueil avec |
Domaines autorisés |
Cliquez sur + AJOUTER UN DOMAINE et saisissez la partie nom d'hôte de l'URL de l'application, par exemple, iap-example-999999.appspot.com. Vous pouvez la voir dans la barre d'adresse de la page Web Hello World que vous avez ouverte précédemment. N'incluez pas la partie |
Coordonnées du développeur |
Saisissez au moins une adresse e-mail. |
Cliquez sur Enregistrer et continuer.
Pour Champs d'application, cliquez sur Enregistrer et continuer.
Pour Résumé, cliquez sur Revenir au tableau de bord.
Vous serez peut-être invité à créer des identifiants. Pour cet atelier, vous n'avez pas besoin d'effectuer cette opération. Vous pouvez donc simplement fermer cet onglet du navigateur.
Cliquez sur le bouton d'activation dans la colonne IAP sur la ligne de l'application App Engine pour activer IAP.
Ouvrez un onglet du navigateur et accédez à l'URL de votre application. Un écran "Se connecter avec Google" s'ouvre, vous invitant à vous connecter pour accéder à l'application.
Connectez-vous avec le compte que vous avez utilisé pour vous connecter à la console. Un écran vous refusant l'accès s'affiche.
Cela signifie que vous avez correctement protégé votre application avec IAP, mais que vous n'avez pas encore indiqué les comptes autorisés à y accéder.
Chaque adresse e-mail (ou adresse de groupe Google, ou nom de domaine Workspace) à laquelle vous voulez autoriser l'accès doit être ajoutée en tant que membre.
Cliquez sur Ajouter un compte principal.
Saisissez à nouveau votre adresse e-mail de participant.
Ensuite, cliquez sur Cloud IAP, puis sélectionnez le rôle Utilisateur de l'application Web sécurisée par IAP pour l'attribuer à cette adresse.
Vous pouvez saisir de la même manière d'autres adresses ou domaines Workspace.
Le message "Règle mise à jour" apparaît au bas de la fenêtre.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Revenez dans votre application et rechargez la page. Vous devez maintenant voir votre application Web, car vous vous êtes déjà connecté avec un compte utilisateur que vous avez autorisé.
Si vous voyez apparaître la page "Vous n'avez pas accès", cela signifie qu'IAP n'a pas revérifié votre autorisation. Dans ce cas, effectuez la procédure suivante :
/_gcp_iap/clear_login_cookie
à la fin de l'URL, comme dans https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie
.Cette procédure oblige IAP à revérifier votre accès, et l'écran d'accueil de votre application doit maintenant s'afficher.
Si vous avez accès à un autre navigateur ou si vous pouvez utiliser le mode navigation privée dans votre navigateur, et que vous avez accès à un autre compte Gmail ou Workspace valide, vous pouvez vous servir de ce navigateur pour accéder à la page de votre application et vous connecter avec l'autre compte. Ce compte n'ayant pas été autorisé, l'écran "Vous n'avez pas accès" apparaît à la place de votre application.
Une fois qu'une application est protégée avec IAP, elle peut utiliser les informations d'identité qu'IAP fournit dans les en-têtes de requête Web qu'elle transmet. Dans cette étape, l'application récupérera l'adresse e-mail de l'utilisateur connecté et un ID utilisateur unique persistant attribué par Google Identity Service à cet utilisateur. Ces données seront affichées pour l'utilisateur dans la page d'accueil.
python39
.Le déploiement devrait s'effectuer en quelques minutes. En attendant, vous pouvez examiner les fichiers de l'application comme décrit ci-dessous.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Ce dossier contient le même ensemble de fichiers que celui affiché dans la précédente application déployée, 1-HelloWorld
, mais deux des fichiers ont été modifiés : main.py
et templates/index.html
. Le programme a été modifié pour récupérer les informations utilisateur qu'IAP fournit dans les en-têtes de requête, et le modèle affiche maintenant ces données.
main.py
contient deux lignes qui récupèrent les données d'identité fournies par IAP :
Les en-têtes X-Goog-Authenticated-User- sont fournis par IAP, et les noms ne sont pas sensibles à la casse. Vous pouvez donc les saisir indifféremment en minuscules ou en majuscules. L'instruction render_template inclut maintenant ces valeurs qui peuvent alors être affichées :
Le modèle index.html peut afficher ces valeurs, encadrées par des accolades doubles :
Comme vous pouvez le voir, les données fournies sont précédées d'accounts.google.com
, indiquant la provenance des informations. Votre application peut supprimer toutes les informations situées avant le signe deux-points, y compris ce signe, pour extraire les valeurs brutes, selon les besoins.
Lorsque vous revenez au déploiement, une fois celui-ci terminé, un message indique que vous pouvez afficher votre application à l'aide de la commande gcloud app browse
.
Le remplacement de l'ancienne version de votre application par la nouvelle peut prendre quelques minutes. Si besoin, actualisez la page pour afficher une page semblable à celle illustrée ci-dessus.
Que se passe-t-il si le service IAP est désactivé ou ignoré d'une quelconque façon (par exemple par d'autres applications s'exécutant sur votre même projet Cloud) ? Désactivez IAP pour le savoir.
Un message d'avertissement vous informe que tous les utilisateurs pourront alors accéder à l'application.
L'application n'étant désormais plus protégée, un utilisateur peut envoyer une requête Web qui semble avoir été transmise via IAP. Par exemple, vous pouvez exécuter la commande curl suivante à partir de Cloud Shell pour réaliser cette opération (remplacez <your-url-here>
par l'URL de votre application) :
La page Web sera affichée sur la ligne de commande et sera semblable au résultat suivant :
L'application n'a aucun moyen de savoir qu'IAP a été désactivé ou ignoré. Si cela représente un risque dans certains cas, la validation cryptographique offre une solution.
S'il existe un risque qu'IAP soit désactivé ou ignoré, votre application peut effectuer une vérification pour s'assurer que les informations d'identité qu'elle reçoit sont valides. Cette validation utilise un troisième en-tête de requête Web ajouté par IAP, appelé X-Goog-IAP-JWT-Assertion
. La valeur de cet en-tête est un objet avec signature cryptographique qui contient également les données d'identité de l'utilisateur. Votre application peut valider la signature numérique et utiliser les données fournies dans cet objet pour s'assurer qu'elles sont fournies par IAP sans altération.
La validation de la signature numérique requiert quelques étapes supplémentaires, telles que l'extraction du dernier ensemble de clés publiques Google. Vous pouvez déterminer la nécessité d'ajouter ces étapes supplémentaires à votre application en fonction du risque qu'un utilisateur puisse désactiver ou ignorer IAP, et également du caractère sensible de l'application.
python39
.Le déploiement devrait s'effectuer en quelques minutes. En attendant, vous pouvez examiner les fichiers de l'application comme décrit ci-dessous.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Ce dossier contient le même ensemble de fichiers que dans 2-HelloUser
, avec deux fichiers modifiés et un nouveau fichier. Le nouveau fichier est auth.py
, qui fournit une méthode user()
pour récupérer et valider les informations d'identité avec signature cryptographique. Les fichiers modifiés sont main.py
et templates/index.html
, qui utilisent maintenant les résultats de cette méthode. Les en-têtes non validés présents dans le dernier déploiement sont également affichés à des fins de comparaison.
user()
:assertion
représente les données avec signature cryptographique fournies dans l'en-tête de requête spécifié. Le code utilise une bibliothèque pour valider et décoder ces données. La validation utilise les clés publiques fournies par Google pour vérifier les données qu'il signe, et pour connaître le public pour lequel les données ont été préparées (essentiellement le projet Google Cloud en cours de protection). Les fonctions de l'outil d'aide keys()
et audience()
recueillent et renvoient ces valeurs.
L'objet signé contient deux données dont nous avons besoin : l'adresse e-mail validée et la valeur d'identifiant unique (fournie dans le champ standard sub
pour "subscriber" [abonné]).
Cette opération met fin à l'étape 3.
Lorsque le déploiement est prêt, un message s'affiche pour vous indiquer que vous pouvez afficher votre application avec gcloud app browse
.
Si un nouvel onglet ne s'ouvre pas dans votre navigateur, copiez le lien affiché et ouvrez-le normalement dans un nouvel onglet.
Rappelez-vous que vous avez précédemment désactivé IAP, et que l'application ne fournit donc aucune donnée IAP. Une page semblable à la suivante s'affiche :
Comme précédemment, vous devrez peut-être patienter quelques minutes avant que la nouvelle version soit activée dans la nouvelle version de la page.
IAP étant désactivé, aucune information relative aux utilisateurs n'est disponible. Vous allez maintenant réactiver IAP.
Dans la fenêtre de la console Cloud, cliquez sur le menu de navigation > Sécurité > Identity-Aware Proxy.
Cliquez sur le bouton d'activation d'IAP situé à côté de la ressource "Application App Engine" pour réactiver IAP. Cliquez sur ACTIVER.
Actualisez la page. La page devrait ressembler à l'exemple ci-dessous :
Notez que l'adresse e-mail fournie par la méthode validée ne comporte pas le préfixe accounts.google.com:
.
Si IAP est désactivé ou ignoré, les données valides seront manquantes ou non valides, car elles ne peuvent pas avoir de signature valide à moins d'avoir été créées par le détenteur des clés privées de Google.
Vous avez déployé une application Web App Engine. Pour commencer, vous avez restreint l'accès à l'application uniquement aux utilisateurs que vous avez choisis. Ensuite, vous avez récupéré et affiché l'identité des utilisateurs auxquels IAP a autorisé l'accès à votre application, et vous avez vu comment ces informations pouvaient être spoofées si IAP était désactivé ou ignoré. Enfin, vous avez validé les assertions à signature cryptographique de l'identité de l'utilisateur, qui ne peut pas être spoofée.
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 15 avril 2024
Dernier test de l'atelier : 28 février 2024
Copyright 2025 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
One lab at a time
Confirm to end all existing labs and start this one