Configurer IAP pour Compute Engine

Ce guide explique comment configurer une instance Compute Engine avec Identity-Aware Proxy (IAP). Si votre instance Compute Engine est déjà configurée et que vous avez simplement besoin d'activer IAP, consultez la page Activer IAP pour Compute Engine.

Objectifs

Dans ce tutoriel, vous allez apprendre à :

  • créer un modèle d'instance Compute Engine et un groupe d'instances géré ;
  • obtenir un nom de domaine et un certificat ;
  • créer un équilibreur de charge HTTPS avec un certificat ;
  • activer IAP ;
  • tester le fonctionnement d'IAP.

Coûts

Ce tutoriel utilise des composants facturables de Google Cloud, dont :

  • Compute Engine
    • Quatre machines virtuelles (VM)
  • Mise en réseau
    • Règle générale de transfert de l'équilibreur de charge
    • Trafic entrant

Pour obtenir une estimation du coût en fonction de votre utilisation prévue, accédez au simulateur de coût.

Les nouveaux utilisateurs de Cloud Platform peuvent bénéficier d'un essai gratuit.

Avant de commencer

Avant de commencer ce tutoriel, vous devrez effectuer les opérations suivantes :

  1. Sélectionnez ou créez un projet Google Cloud.
    ACCÉDER À LA PAGE "PROJETS"

  2. Activer la facturation pour votre projet Découvrez comment modifier les paramètres de facturation d'un projet.

Étape 1 : Créez un modèle Compute Engine

Dans Cloud Console, accédez à la page Compute Engine > Créer un modèle d'instance, puis sélectionnez le projet dans lequel vous souhaitez créer un modèle.

ACCÉDER À LA PAGE "CRÉER UN MODÈLE D'INSTANCE"

Utilisez les valeurs par défaut, sauf pour les champs suivants :

  • Type de machine :
    • micro (f1-micro)
  • Niveaux d'accès :
    • Définir l'accès pour chaque API
    • Compute Engine : lecture seule
  • Pare-feu :
    • Autoriser le trafic HTTP
  • Dans la section Gestion, sous Automatisation > Script de démarrage, copiez et collez le script suivant :
    apt-get -y update
    apt-get -y install git
    apt-get -y install virtualenv
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    cd python-docs-samples/iap
    virtualenv venv -p python3
    source venv/bin/activate
    pip install -r requirements.txt
    cat example_gce_backend.py |
      sed -e "s/YOUR_BACKEND_SERVICE_ID/$(gcloud compute backend-services describe my-backend-service --global --format="value(id)")/g" |
      sed -e "s/YOUR_PROJECT_ID/$(gcloud config get-value account | tr -cd "[0-9]")/g" > real_backend.py
    gunicorn real_backend:app -b 0.0.0.0:80
    

Une fois les valeurs mises à jour, cliquez sur Créer pour créer le modèle.

Étape 2 : Créez un groupe d'instances géré

Dans Cloud Console, accédez à la page Compute Engine > Créer un groupe d'instances, puis sélectionnez le projet dans lequel vous souhaitez créer un groupe d'instances géré.

ACCÉDER À LA PAGE "CRÉER UN GROUPE D'INSTANCES"

Utilisez les valeurs par défaut, sauf pour les champs suivants :

  • Nom : my-managed-instance-group
  • Zone : Multizone
  • Modèle d'instance : sélectionnez le modèle d'instance créé à l'étape 1.
  • Nombre d'instances : 3
  • Vérification d'état : sélectionnez Créer une vérification d'état, puis saisissez les valeurs suivantes :

    • Nom : my-health-check
    • Protocole : HTTP

    Pour utiliser la nouvelle vérification d'état, cliquez sur Enregistrer et continuer.

Une fois les valeurs mises à jour, cliquez sur Créer pour créer le groupe d'instances géré.

Étape 3 : Obtenez un nom de domaine et un certificat

Pour utiliser l'équilibreur de charge avec le trafic HTTPS, vous avez besoin d'un nom de domaine et d'un certificat signé. Vous pouvez enregistrer un domaine sur Google Domains ou utiliser le service d'enregistrement de noms de domaine que vous souhaitez. Enregistrez votre domaine avant de poursuivre.

Configurer le certificat

Let's Encrypt est une autorité de certification gratuite et à but non lucratif. Grâce à ses services, vous allez pouvoir créer un certificat qui identifie votre site Web auprès de vos utilisateurs.

L'autorité de certification doit vérifier que vous êtes le propriétaire du nom de domaine que vous avez enregistré. Lors des étapes suivantes, vous allez créer une VM pour authentifier votre domaine auprès de l'autorité de certification.

Créer une VM pour authentifier la propriété du domaine

Dans Cloud Console, accédez à la page Compute Engine > Créer une instance.

ACCÉDER À LA PAGE "CRÉER UNE INSTANCE"

Utilisez les valeurs par défaut, sauf pour les champs suivants :

  • Nom : certbot-vm
  • Type de machine : micro (f1-micro)
  • Niveaux d'accès :
    • Définir l'accès pour chaque API
    • Compute Engine : lecture/écriture
  • Image du disque de démarrage :
    • Debian GNU/Linux 9 (stretch)
  • Pare-feu :
    • Autoriser le trafic HTTP
    • Autoriser le trafic HTTPS

Une fois les valeurs mises à jour, cliquez sur Créer pour créer l'instance de VM. Notez l'adresse IP externe de la VM que vous venez de créer. Vous en aurez besoin à l'étape suivante.

Configurer le domaine pour qu'il pointe vers la VM

Pour configurer votre domaine de sorte qu'il pointe vers la VM, suivez cette procédure de configuration des enregistrements A :

  1. Connectez-vous au compte que vous possédez auprès de votre hébergeur de domaine.
  2. Recherchez la page pour mettre à jour les enregistrements DNS de votre domaine. Cette page porte généralement un nom tel que "Gestion DNS", "Gestion du serveur de noms" ou "Paramètres avancés".
  3. Modifiez les valeurs de vos enregistrements A comme suit :
    • Nom/Hôte/Alias : @
    • Valeur : adresse IP externe de la VM que vous avez créée pour authentifier la propriété de votre domaine précédemment.
    • Valeur TTL : valeur par défaut de votre bureau d'enregistrement, soit 86 400 (un jour).
  4. Patientez jusqu'à la mise à jour de l'enregistrement DNS. La propagation de l'enregistrement ajouté peut prendre jusqu'à un jour complet.

Pour en savoir plus, consultez l'article À propos des enregistrements A.

Tester le serveur

Pour vérifier que votre serveur fonctionne correctement, procédez comme suit :

  1. Dans Cloud Console, accédez à la page Compute Engine > Instances de VM.
    ACCÉDER À LA PAGE "INSTANCES DE VM"

  2. Sous Se connecter pour certbot-vm, cliquez sur SSH.

  3. Exécutez un petit serveur Web sur votre VM à l'aide de la commande suivante :

      mkdir web
      cd web
      echo "Hello" > index.html
      sudo busybox httpd -v -f
    
  4. Dans un navigateur Web, accédez au nom de domaine que vous avez enregistré. Hello doit être indiqué dans votre navigateur Web, et votre session SSH doit afficher un message contenant ... response:200. Si ce n'est pas le cas, patientez quelques minutes, puis répétez cette opération.

  5. Une fois le test réussi, appuyez sur les touches Ctrl+C pour interrompre le serveur Web.

Créer un certificat

Pour créer un certificat, enregistrez-vous auprès de Let's Encrypt en exécutant les commandes suivantes sur la VM, où YOUR_DOMAIN correspond à votre nom de domaine (sans le protocole) :

sudo pkill busybox
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d YOUR-DOMAIN

Au cours de cette procédure, Let's Encrypt pourra vous demander une adresse e-mail afin de pouvoir vous envoyer un rappel avant l'expiration de votre certificat (par défaut, trois mois après son émission). Vous devrez également accepter les conditions d'utilisation de Let's Encrypt.

Une fois que vous êtes enregistré, le message suivant doit s'afficher : Congratulations! Your certificate and chain have been saved at...

Ajouter le certificat au projet

Pour ajouter le certificat à votre projet, exécutez les commandes suivantes sur la machine VM :

sudo su
cd /etc/letsencrypt/live/YOUR_DOMAIN
gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem

Une fois le certificat créé, un message de ce type doit s'afficher : Created [https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert]

Avant de continuer, fermez la session SSH.

Étape 4 : Créez un équilibreur de charge

Avant de commencer cette étape, assurez-vous de bien avoir fermé la session SSH que vous avez lancée à l'étape précédente. Lorsque vous êtes prêt, procédez comme suit pour créer un équilibreur de charge :

  1. Dans Cloud Console, accédez à la page Services réseau > Créer un équilibreur de charge, puis sélectionnez le projet pour lequel vous souhaitez créer un équilibreur de charge.
    ACCÉDER À LA PAGE "CRÉER UN ÉQUILIBREUR DE CHARGE"

  2. Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.

  3. Sélectionnez D'Internet vers mes VM.

  4. Sur la page Nouvel équilibreur de charge HTTP(S) externe qui s'affiche, saisissez un Nom pour votre équilibreur de charge.

  5. Cliquez sur Configuration du backend, puis sélectionnez Services backend > Créer un service backend.

  6. Dans le panneau Créer un service de backend, saisissez my-backend-service dans le champ Nom.

  7. Sous Nouveau backend, utilisez les valeurs par défaut, sauf pour le champ suivant :

    • Groupe d'instances : my-managed-instance-group
  8. Sous Vérification d'état, sélectionnez my-health-check.

  9. Une fois les valeurs mises à jour, cliquez sur Créer. Le panneau Nouvel équilibreur de charge HTTP(S) s'affiche de nouveau.

  10. Cliquez sur Règles d'hôte et de chemin d'accès pour charger les valeurs par défaut. Vous n'avez pas besoin d'ajouter de règles.

  11. Cliquez sur Configuration du frontend. Utilisez les valeurs par défaut, sauf pour les champs suivants :

    • Protocole : HTTPS
    • Adresse IP : cliquez sur Créer une adresse IP.
      • Saisissez un nom à associer à votre nouvelle adresse IP statique.
      • Cliquez sur Réserver pour réserver l'adresse IP statique.
    • Certificat : my-cert
  12. Une fois les valeurs de la configuration du frontend saisies, cliquez sur OK. Le panneau Nouvel équilibreur de charge HTTP(S) externe s'affiche de nouveau.

  13. Sous Nouvel équilibreur de charge HTTP(S) externe, cliquez sur Créer. La page Équilibrage de charge s'affiche, et votre équilibreur de charge est créé dans la liste des équilibreurs de charge.

  14. Une fois que Cloud Console a fini de créer l'équilibreur de charge, cliquez sur le nom de celui-ci et notez l'adresse IP externe sous Détails > Interface. Vous en aurez besoin à l'étape suivante.

Configurer le domaine pour qu'il pointe vers l'équilibreur de charge

Pour configurer votre domaine afin qu'il pointe vers l'équilibreur de charge, configurez les enregistrements A en procédant comme suit :

  1. Connectez-vous au compte que vous possédez auprès de votre hébergeur de domaine.
  2. Recherchez la page pour mettre à jour les enregistrements DNS de votre domaine. Cette page porte généralement un nom tel que "Gestion DNS", "Gestion du serveur de noms" ou "Paramètres avancés".
  3. Modifiez les valeurs de vos enregistrements A comme suit :
    • Nom/Hôte/Alias : @
    • Valeur : adresse IP externe de l'équilibreur de charge que vous venez de créer. N'incluez pas le port :443 dans votre enregistrement DNS.
    • Valeur TTL : valeur par défaut de votre bureau d'enregistrement, soit 86 400 (un jour).
  4. Patientez jusqu'à la mise à jour de l'enregistrement DNS. La propagation de l'enregistrement que vous venez d'ajouter peut prendre jusqu'à un jour entier.
  5. Pour tester l'équilibreur de charge, utilisez un navigateur Web pour accéder à votre domaine à l'aide d'un protocole https://.
    • Si l'équilibreur de charge n'est pas encore configuré, des erreurs "HTTP 502" s'affichent.
    • Lorsque l'équilibreur de charge est prêt, le message "Requête non autorisée" apparaît.

Pour en savoir plus, consultez l'article À propos des enregistrements A.

Redémarrer les VM

Pour authentifier correctement les requêtes d'IAP, vous devez redémarrer les VM de votre groupe d'instances géré en procédant comme suit :

  1. Dans Cloud Console, accédez à la page Compute Engine > Groupes d'instances.
    ACCÉDER À LA PAGE "GROUPES D'INSTANCES"
  2. Cliquez sur my-managed-instance-group.
  3. En haut des informations relatives au groupe d'instances qui s'affichent, cliquez sur Redémarrer/Remplacer progressivement.
  4. Sur la page Redémarrer/Remplacer les instances de my-managed-instance-group qui s'affiche, définissez les valeurs suivantes :
    • Opération : Redémarrer
    • Nombre maximal d'instances indisponibles : 3 instances sur 3
    • Durée d'attente minimale : 0 s
  5. Une fois les valeurs mises à jour, cliquez sur Redémarrer.

Étape 5 : Configurez IAP

Configurer le pare-feu

Vous allez ensuite configurer votre pare-feu pour bloquer l'accès des VM sous-jacentes et n'autoriser que les accès via IAP :

  1. Dans Cloud Console, accédez à Réseau VPC > Règles de pare-feu.
    ACCÉDER À LA PAGE "RÈGLES DE PARE-FEU"
  2. Cochez les cases situées à côté des règles suivantes :
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. Cliquez sur Supprimer.
  4. Cliquez sur Créer une règle de pare-feu, puis définissez les valeurs suivantes :
    • Nom : allow-iap-traffic
    • Cibles : Toutes les instances du réseau
    • Plages d'adresses IP sources (appuyez sur Entrée après avoir collé chaque valeur dans le champ) :
      • 130.211.0.0/22
      • 35.191.0.0/16
    • Protocoles et ports :
      • Protocoles et ports spécifiés
      • tcp:80
  5. Une fois les valeurs mises à jour, cliquez sur Créer.

Configurer IAP

Pour configurer IAP pour votre projet, procédez comme suit :

  1. Dans Cloud Console, accédez à la page Sécurité > Identity-Aware Proxy et sélectionnez le projet pour lequel vous souhaitez activer IAP.
    ACCÉDER À LA PAGE "IDENTITY-AWARE PROXY"
  2. Si vous n'avez pas configuré l'écran d'autorisation OAuth de votre projet, vous êtes invité à le faire :

    1. Accédez à l'écran d'autorisation OAuth.
      Configurer l'écran d'autorisation
    2. Sous Adresse e-mail d'assistance, sélectionnez l'adresse e-mail que vous souhaitez afficher en tant que contact public. Celle-ci doit correspondre à votre adresse e-mail ou à un groupe Google dont vous êtes le propriétaire.
    3. Saisissez le nom de l'application que vous souhaitez afficher.
    4. Ajoutez des détails, si nécessaire.
    5. Cliquez sur Save.

    Pour modifier ultérieurement les informations affichées sur l'écran d'autorisation OAuth, comme le nom du produit ou l'adresse e-mail, répétez les étapes de configuration précédentes.

  3. En regard de my-backend-service,

  4. Dans la fenêtre Activer IAP qui s'affiche, cochez la case en regard de "J'ai consulté la configuration requise, et j'ai configuré ma ressource Compute Engine conformément à la documentation".

  5. Cliquez sur Activer.

Ajouter des membres à la liste d'accès

Vous allez ensuite ajouter des membres à la liste d'accès IAP de votre projet.

  1. Dans la section Accès située sur le côté droit de la page IAM et administration > Identity-Aware Proxy, cliquez sur Ajouter.
  2. Saisissez les membres auxquels vous souhaitez accorder l'accès, y compris vous-même. Voici les types de membres possibles :
    • Comptes Google : utilisateur@gmail.com
    • Groupes Google : administrateurs@googlegroups.com
    • Comptes de service : serveur@example.gserviceaccount.com
    • Domaines Google Workspace : example.com

Étape 6 : Testez IAP

Pour savoir si IAP fonctionne correctement, procédez comme suit :

  1. Dans votre navigateur Web, accédez à votre domaine.
    1. Si le message "Requête non autorisée" s'affiche, réessayez dans quelques minutes.
  2. Lorsque l'écran de connexion Google s'affiche, connectez-vous à l'aide du compte Google auquel vous avez accordé l'accès lors de l'étape précédente.
  3. Un message du type "Bonjour, user@example.com. Je suis my-managed-instance-group-29z6" doit s'afficher.
  4. Essayez d'actualiser la page. Votre navigateur doit afficher le nom des trois machines de votre groupe d'instances géré. Il s'agit de l'équilibreur de charge, qui répartit le trafic sur les VM du groupe.

Félicitations ! Vous avez activé un service à équilibrage de charge à l'aide d'IAP.

Nettoyer

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud Platform :

Une fois que vous avez fini de configurer IAP pour Compute Engine, vous pouvez nettoyer les ressources que vous avez créées sur Google Cloud, pour éviter qu'elles ne vous soient facturées par la suite. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans Cloud Console, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer des instances

Pour supprimer une instance Compute Engine, procédez comme suit :

  1. Dans Cloud Console, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cochez la case correspondant à instance que vous souhaitez supprimer.
  3. Pour supprimer l'instance, cliquez sur  Supprimer.

Supprimer des règles de pare-feu pour le réseau par défaut

Pour supprimer une règle de pare-feu, procédez comme suit :

  1. Dans Cloud Console, accédez à la page Pare-feu.

    Accéder à la page "Pare-feu"

  2. Cochez la case correspondant à règle de pare-feu que vous souhaitez supprimer.
  3. Pour supprimer la règle de pare-feu, cliquez sur  Supprimer.

Étape suivante

  • Modifiez l'exemple d'application que nous avons utilisé dans ce tutoriel pour diffuser d'autres données.
  • Lisez les bonnes pratiques pour savoir comment écrire vos propres applications et les sécuriser avec IAP.