GSP499
Présentation
Dans cet atelier, vous allez créer une application Web minimale avec Cloud Run, 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 pourra :
- afficher une page de bienvenue ;
- accéder aux informations d'identité des utilisateurs fournies par IAP ;
- utiliser la validation cryptographique pour prévenir le spoofing des informations d'identité des utilisateurs.
Objectifs de l'atelier
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
- Écrire et déployer un service Cloud Run simple en Python
- Activer et désactiver IAP pour restreindre l'accès à votre application
- Récupérer les informations d'identité des utilisateurs à partir d'IAP dans votre application
- Valider les informations extraites d'IAP par des moyens cryptographiques afin d'assurer la protection contre le spoofing
Prérequis
Une connaissance de base du langage de programmation Python améliorera votre expérience d'apprentissage.
Cet atelier porte sur Cloud Run et IAP. Les concepts et les blocs de codes non pertinents ne sont pas abordés, et vous sont fournis afin que vous puissiez simplement les copier et les coller.
Présentation d'Identity-Aware Proxy
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.
Qu'est-ce qu'Identity-Aware Proxy ?
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é.
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
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 :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Démarrer l'atelier et se connecter à la console Google Cloud
-
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 droite, vous trouverez le panneau Préparation et accès à l'atelier, qui contient les éléments suivants :
- Le bouton Ouvrir la console Google Cloud
- Les identifiants temporaires (nom d'utilisateur et mot de passe) que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier, si nécessaire
Notez que le minuteur de l'atelier se trouve en haut de la page et indique le temps restant.
-
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans une fenêtre en navigation privée si vous utilisez 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.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
-
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
{{{user_0.username | "Username"}}}
Vous trouverez également le nom d'utilisateur dans le panneau Préparation et accès à l'atelier.
-
Cliquez sur Suivant.
-
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
{{{user_0.password | "Password"}}}
Vous trouverez également le mot de passe dans le panneau Préparation et accès à l'atelier.
-
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. N'utilisez pas les identifiants de votre compte Google Cloud.
Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires pourront vous être facturés.
-
Accédez aux pages suivantes :
- Acceptez les conditions d'utilisation.
- N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
- Ne vous inscrivez pas à des essais sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
Activer Cloud Shell
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.
-
Cliquez sur Activer Cloud Shell
en haut de la console Google Cloud.
-
Passez les fenêtres suivantes :
- Accédez à la fenêtre d'informations de Cloud Shell.
- Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API 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 l'ID_PROJET pour cette session :
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
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.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
- Cliquez sur Autoriser.
Résultat :
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Télécharger le code
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 :
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
Ce dossier contient un seul sous-dossier pour chaque étape de cet atelier. Vous devrez accéder au dossier approprié pour effectuer chaque étape.
Tâche 1 : Déployer l'application et la protéger avec IAP
Il s'agit d'un service Cloud Run écrit en Python qui affiche simplement une page de bienvenue "Hello, World". Nous allons déployer et tester cette application, puis en restreindre l'accès à l'aide d'IAP.
Examiner le code de l'application
- À partir du dossier principal du projet, accédez au sous-dossier
1-HelloWorld qui contient le code pour cette étape.
cd 1-HelloWorld
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 en renvoyant le contenu d'un modèle. Ce fichier de modèle se trouve dans templates/index.html et, pour cette étape, contient uniquement du code HTML de base. Un second fichier de modèle contient un exemple de squelette de règles de confidentialité dans templates/privacy.html.
Un autre fichier est présent : requirements.txt. Il recense toutes les bibliothèques Python non incluses par défaut que l'application utilise.
Vous pouvez lister tous les fichiers contenus dans le shell à l'aide de la commande cat, comme dans l'exemple suivant :
cat main.py
Vous pouvez également lancer l'éditeur de code Cloud Shell en cliquant sur l'icône (en forme de crayon) Ouvrir l'éditeur dans la barre d'outils Cloud Shell pour examiner le code.
Il n'est pas nécessaire de modifier des fichiers pour cette étape.
Déployer dans Cloud Run
- Déployez l'application sur Cloud Run :
gcloud run deploy user-auth-lab --source . --allow-unauthenticated --region={{{ project_0.default_region | "REGION" }}}
- Si vous êtes invité à activer l'API, saisissez Y pour "oui". Si vous êtes invité à créer un dépôt Artifact Registry pour continuer, saisissez Y pour "oui".
Le déploiement s'effectue en quelques minutes. Un message contenant l'URL du service s'affiche.
- Ouvrez l'URL du service que vous voyez à l'écran dans un nouvel onglet du navigateur pour afficher la page Web. L'accès n'est pas encore restreint.

Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer un service Cloud Run
Restreindre l'accès avec IAP
-
Dans la console Google Cloud, accédez au menu de navigation (
), puis cliquez sur Sécurité > Identity-Aware Proxy.
-
Cliquez sur Activer l'API.
-
Cliquez sur Accéder à Identity-Aware Proxy.
-
Dans la colonne IAP, cliquez sur le bouton d'activation à côté d'user-auth-lab pour activer IAP.
-
Cliquez sur Activer pour confirmer.
Vérifier qu'IAP est activé
-
Ouvrez un nouvel onglet dans le navigateur et accédez à l'URL de votre application. Une page Se connecter avec Google s'ouvre.
-
Connectez-vous avec les identifiants du compte élève que vous avez utilisés 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 autorisé de comptes utilisateur.
-
Revenez à la page Identity-Aware Proxy dans la console.
-
Cochez la case à côté du service Cloud Run user-auth-lab pour ouvrir la barre latérale des détails à droite.
-
Cliquez sur Ajouter un principal.
-
Pour Nouveaux principaux, saisissez votre adresse e-mail d'élève.
-
Pour Sélectionner un rôle, choisissez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP.
-
Cliquez sur Enregistrer.
Le message "Stratégie mise à jour" s'affiche en bas de la page.
-
Revenez dans votre application et actualisez la page. Comme vous êtes déjà connecté avec un compte autorisé, vous devriez maintenant voir votre application Web.
Remarque : Le changement de rôle prend une minute. Si le message "Vous n'avez pas accès" est toujours affiché sur la page, patientez une minute et actualisez la page.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Activer et ajouter une stratégie à IAP
Si la page "Accès refusé" s'affiche toujours, supprimez le cookie de connexion IAP :
- Ajoutez
/_gcp_iap/clear_login_cookie à la fin de l'URL de votre service (par exemple, https://user-auth-lab-[random-hash].run.app/_gcp_iap/clear_login_cookie) et ouvrez-la.
- Lorsque la nouvelle page Se connecter avec Google s'affiche, cliquez sur Utiliser un autre compte et saisissez à nouveau vos identifiants d'élève.
Tâche 2 : Accéder aux informations d'identité des utilisateurs
Une fois qu'une application est protégée avec IAP, elle peut utiliser les informations d'identité qu'IAP transmet dans les en-têtes des requêtes Web. 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.
- Dans Cloud Shell, accédez au dossier pour cette étape :
cd ~/user-authentication-with-iap/2-HelloUser
Déployer dans Cloud Run
- Déployez l'application sur Cloud Run :
gcloud run deploy user-auth-lab --source . --region={{{ project_0.default_region | "REGION" }}}
- Si vous êtes invité à poursuivre l'opération, saisissez Y pour "oui".
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.
Accéder aux informations d'identité des utilisateurs
Examiner les fichiers de l'application
- Affichez le fichier principal de l'application dans Cloud Shell à l'aide de la commande
cat :
cat main.py
- Affichez le fichier de modèle pour voir comment il présente les données utilisateur :
cat templates/index.html
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 :
user_email = request.headers.get('X-Goog-Authenticated-User-Email')
user_id = request.headers.get('X-Goog-Authenticated-User-ID')
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 :
page = render_template('index.html', email=user_email, id=user_id)
Le modèle index.html peut afficher ces valeurs, encadrées par des accolades doubles :
Hello, {{ email }}! Your persistent ID is {{ id }}.
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.
Tester l'application mise à jour
- Récupérez l'URL de votre application :
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Ouvrez cette URL dans un nouvel onglet du navigateur.
- Si besoin, actualisez la page pour afficher votre adresse e-mail et votre ID persistant.
Désactiver IAP
Que se passe-t-il si IAP est désactivé ou ignoré ? Désactivez IAP pour le savoir.
- Dans la fenêtre de la console Cloud, cliquez sur le menu de navigation, puis sur Sécurité > Identity-Aware Proxy.
- Cliquez sur le bouton de désactivation d'IAP situé à côté de votre service Cloud Run (par exemple,
user-auth-lab) pour désactiver IAP.
- Cliquez sur Autoriser l'accès public.
- Actualisez la page Web de l'application. Vous devez normalement voir la même page, mais sans aucune information utilisateur.
L'application n'étant désormais plus protégée, un utilisateur peut envoyer une requête Web qui semble avoir été transmise par le biais d'IAP. Par exemple, exécutez la commande curl suivante à partir de Cloud Shell (remplacez <your-url-here> par l'URL de votre application) :
curl -X GET YOUR_URL -H "X-Goog-Authenticated-User-Email: totally fake email"
La page Web s'affiche sur la ligne de commande et contient l'adresse e-mail fictive :
<!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>
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.
Tâche 3 : Utiliser la validation cryptographique
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.
- Dans Cloud Shell, accédez au dossier pour cette étape :
cd ~/user-authentication-with-iap/3-HelloVerifiedUser
Déployer dans Cloud Run
-
Recherchez l'ID client de l'audience JWT de l'en-tête signé pour votre service Cloud Run sécurisé par IAP :
-
Dans la console Cloud, accédez à la page Identity-Aware Proxy.
-
Recherchez user-auth-lab dans la liste.
-
Remarque : Vous devrez peut-être faire défiler le tableau des ressources vers la droite (à l'aide de la barre de défilement horizontale en bas du tableau) pour afficher la colonne Actions située tout à droite.
-
Sous Actions, cliquez sur le bouton représentant trois points verticaux à côté de la ressource et sélectionnez Obtenir le code d'audience JWT.
-
Dans la fenêtre modale qui s'affiche, copiez la chaîne de l'ID client et collez-la dans un éditeur de texte. Ensuite, sélectionnez OK.
-
Déployez l'application sur Cloud Run en définissant la variable d'environnement IAP_AUDIENCE avec la valeur de l'ID client que vous avez copiée :
gcloud run deploy user-auth-lab --source . --set-env-vars IAP_AUDIENCE="YOUR_CLIENT_ID" --region={{{ project_0.default_region | "REGION" }}}
- Si vous êtes invité à poursuivre l'opération, saisissez Y pour "oui".
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.
Utiliser la validation cryptographique
Examiner les fichiers de l'application
- Affichez le nouveau fichier d'assistance à l'authentification dans Cloud Shell à l'aide de la commande
cat :
cat auth.py
- Affichez le fichier principal de l'application pour voir comment la méthode d'utilisateur validé est intégrée :
cat main.py
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.
- La nouvelle fonctionnalité réside principalement dans la fonction
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']
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.
Tester la validation cryptographique
Lorsque le déploiement est prêt, vous pouvez obtenir l'URL de votre application avec la commande suivante :
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Ouvrez cette URL dans un nouvel onglet du navigateur.
- Rappelez-vous que vous avez précédemment désactivé IAP, et que l'application ne fournit donc aucune donnée IAP. Vérifiez qu'une page contenant None pour l'adresse e-mail et l'ID s'affiche.
- Dans la console, accédez à la page Identity-Aware Proxy.
- Cliquez sur le bouton d'activation d'IAP situé à côté de votre service Cloud Run pour réactiver IAP.
- Cliquez sur Activer pour confirmer.
- Dans Cloud Shell, exécutez la commande suivante pour autoriser l'agent de service IAP à appeler votre service 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" }}}
- Actualisez la page de l'application. Vérifiez que l'adresse e-mail et l'ID utilisateur avec signature cryptographique s'affichent correctement et qu'ils sont bien validés.
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.
Félicitations !
Vous avez déployé un service Cloud Run. 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.
Étapes suivantes et informations supplémentaires
Formations et certifications Google Cloud
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 : 28 mai 2026
Dernier test de l'atelier : 28 mai 2026
Copyright 2026 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.