Sécuriser les applications et les ressources sur site avec IAP

Ce guide explique comment sécuriser une application sur site basée sur HTTP en dehors de Google Cloud à l'aide d'Identity-Aware Proxy (IAP) en déployant un connecteur IAP.

Pour en savoir plus sur la manière dont IAP sécurise les applications et ressources sur site, consultez la présentation d'IAP pour les applications sur site.

Avant de commencer

Avant de commencer, vous avez besoin des éléments suivants :

  • Le SDK Google Cloud préalablement installé.
  • Une application sur site basée sur HTTP, accessible via un nom d'hôte DNS et acceptant le trafic HTTPS. L'application doit également posséder sa propre instance IAP.
  • Si votre application n'est pas accessible au public, établissez une connexion entre Google Cloud et votre application sur site à l'aide de Cloud Interconnect.
  • Un membre Cloud Identity auquel le rôle Propriétaire a été accordé sur votre projet Google Cloud.
  • Un projet Google Cloud avec facturation activée.
  • Le nom d'hôte DNS à utiliser comme point d'entrée du trafic vers Google Cloud. Par exemple, www.hr-domain.com.
  • Le nom d'hôte DNS de votre application sur site. Par exemple, hr-internal.domain.com.
  • Un certificat SSL ou TLS pour le nom d'hôte DNS utilisé comme point d'entrée du trafic vers Google Cloud. Un certificat existant autogéré ou géré par Google peut être utilisé. Si vous n'avez pas de certificat, créez-en un à l'aide de Let's Encrypt.

Activer les API requises

Pour configurer un connecteur IAP, vous devez activer les API suivantes :

  1. Activez l'API Compute Engine.

    Activer l'API Compute Engine

  2. Activez l'API Google Kubernetes Engine.

    Activer l'API Google Kubernetes Engine

  3. Activez l'API Cloud Deployment Manager V2.

    Activer l'API Cloud Deployment Manager V2

Créer un déploiement de connecteur IAP

Un connecteur IAP est un modèle Deployment Manager. Une fois déployé, le modèle génère les ressources et des règles de routage nécessaires pour transférer les requêtes authentifiées et autorisées par IAP vers votre application sur site. Les sections suivantes expliquent comment configurer et déployer un connecteur IAP.

Définir des autorisations

Pour que vous puissiez déployer un connecteur IAP, le compte d'agent de service des API Google de votre projet Google Cloud doit disposer du rôle Administrateur de Kubernetes Engine. Ce compte de service permet à Deployment Manager de créer un cluster Google Kubernetes Engine (GKE) et toutes les ressources qui y sont exécutées.

Pour attribuer le rôle Administrateur de Kubernetes Engine au compte d'agent de service des API Google, procédez comme suit :

  1. Accéder à la page IAM.
    Accéder à la page IAM
  2. Modifiez les autorisations du membre PROJECT_NUMBER@cloudservices.gserviceaccount.com en cliquant sur Modifier le membre .
  3. Cliquez sur Ajouter un autre rôle, puis sélectionnez Kubernetes > Administrateur de Kubernetes Engine dans la liste déroulante Rôle.
  4. Cliquez sur Save.

Votre compte d'agent de service des API Google dispose désormais des rôles Éditeur et Administrateur Kubernetes Engine sur votre projet.

Créer une ressource de certificat SSL

Une nouvelle ressource de certificat SSL est nécessaire lors de la configuration du proxy de l'équilibreur de charge HTTP(S) de votre connecteur IAP.

Pour créer une ressource de certificat SSL à partir de l'outil de ligne de commande gcloud à l'aide de votre certificat SSL ou TLS et de votre clé privée, procédez comme suit :

  1. Créez une ressource de certificat SSL à l'aide de compute ssl-certificates create.

    gcloud compute ssl-certificates create CERTIFICATE_NAME --private-key=PRIVATE_KEY_FILE.pem
    --certificate=CERTIFICATE_FILE.pem
    
  2. Si besoin, vérifiez que votre nouvelle ressource de certificat SSL est disponible.

    1. Accédez à la page Équilibrage de charge.
      Accéder à la page Équilibrage de charge
    2. Sous la liste des équilibreurs de charge, cliquez sur le menu avancé.
    3. Cliquez sur Certificats.

Télécharger et configurer un connecteur IAP

Pour répondre à vos besoins de déploiement, vous devez mettre à jour le modèle Deployment Manager configurable de votre connecteur IAP. Pour télécharger et configurer votre modèle, procédez comme suit :

  1. Téléchargez le modèle Deployment Manager du connecteur IAP en clonant le dépôt GitHub du connecteur IAP.

  2. Ouvrez le dossier du dépôt cloné, puis mettez à jour les champs obligatoires du fichier iap-connector.yaml. Pour en savoir plus sur les règles de routage, consultez la présentation d'IAP pour les applications sur site.

         resources:
         - name: iap-connector
           type: iap-connector.py
           properties:
             zone: ZONE
             serviceAccountName: PROJECT_NUMBER@cloudservices.gserviceaccount.com
             routing:
             - name: BACKEND_SERVICE_NAME
               mapping:
               - name: host
                 source: SOURCE
                 destination: DESTINATION_URL
             tls:
             - CERTIFICATE_NAME
    
    Champs obligatoires :

    • zone : zone dans laquelle le connecteur IAP est déployé. Par exemple, us-central1-a.
    • serviceAccountName : nom du compte d'agent de service des API Google auquel le rôle Administrateur Kubernetes Engine a été attribué.
    • routing.mapping.source : URL des requêtes envoyées à Google Cloud. Cette URL correspond au trafic entrant dans l'environnement.
    • routing.mapping.destination : URL de l'application locale vers laquelle IAP achemine le trafic après qu'un utilisateur a été autorisé et authentifié. IAP achemine le trafic vers cette URL à l'aide de TLS, et l'application hébergée ici est requise pour fournir un point de terminaison HTTPS.
    • tls : nom de votre ressource de certificat SSL.
    • routing.name : nom du nouveau service de backend situé derrière l'équilibreur de charge HTTP(S).

    Champs facultatifs :

    • initialNodeCount : nombre initial de nœuds souhaités dans le cluster. Par défaut, le nombre de nœuds initial est 3.
    • imageVersion : version de l'image Ambassador à exécuter. Par défaut, la version de l'image est 0.39.0.
    • instances dupliquées : nombre initial d'instances dupliquées pour le déploiement de l'ambassadeur. Par défaut, le nombre d'instances dupliquées est 3.

    Pour voir la spécification du connecteur IAP, consultez le fichier iap-connector.py.schema.

  3. Enregistrez votre fichier iap-connector.yaml mis à jour.

Déployer un connecteur IAP

  1. Pour déployer le connecteur IAP et son cluster Google Kubernetes Engine, exécutez la commande gcloud suivante :

    gcloud deployment-manager deployments create NAME_OF_DEPLOYMENT --config=iap-connector.yaml
    
  2. Vous pouvez également surveiller le déploiement depuis Google Cloud Console :

    1. Accédez à la page Deployment Manager.
      Accéder à la page Deployment Manager
    2. Affichez l'état de votre déploiement en sélectionnant le nom de ce dernier. Si vous avez déployé votre connecteur IAP récemment, vous devrez peut-être patienter quelques minutes avant que votre déploiement ne soit terminé pour pouvoir afficher son état.
  3. Vous pouvez également consulter l'état de votre cluster Google Kubernetes Engine en accédant à la page Clusters Kubernetes.
    Accéder à la page "Clusters Kubernetes"

  4. Le déploiement crée un équilibreur de charge HTTP(S) Cloud Load Balancing. Associez votre domaine source à l'adresse IPv4 publique de l'équilibreur de charge en mettant à jour les enregistrements de ressources DNS de votre gestionnaire de domaines.

    Pour obtenir l'adresse IPv4 publique, procédez comme suit :

    1. Accédez à la page Équilibrage de charge.
      Accéder à la page Équilibrage de charge
    2. Cliquez sur le nom de la ressource de l'équilibreur de charge générée.

      L'adresse IPv4 se trouve sous Interface et est associée au nom de votre certificat.

Le trafic des requêtes Web vers votre application est maintenant transféré du connecteur IAP vers votre application sur site.

Configurer l'écran d'autorisation OAuth

Si vous n'avez pas configuré l'écran d'autorisation OAuth de votre projet, cette étape est obligatoire. Vous devez saisir une adresse e-mail et un nom de produit.

  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.

Configurer l'accès à IAP

  1. Accédez à la page Identity-Aware Proxy.
    Accéder à la page "Identity-Aware Proxy"
  2. Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
  3. Cochez la case à côté de la ressource à laquelle vous souhaitez ajouter des membres.
  4. Dans le panneau d'informations situé à droite, cliquez sur Ajouter un membre.
  5. Dans la boîte de dialogue Ajouter des membres qui s'affiche, ajoutez les adresses e-mail des groupes ou des personnes auxquels vous souhaitez accorder le rôle Utilisateur de l'application Web sécurisée par IAP dans le cadre du projet.

    Les types de comptes suivants peuvent être ajoutés en tant que membres :

    • Compte Google : user@gmail.com
    • Groupe Google : admins@googlegroups.com
    • Compte de service : server@example.gserviceaccount.com
    • Domaine Google Workspace : example.com

    Veillez à ajouter un compte Google auquel vous avez accès.

  6. Sélectionnez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP dans la liste déroulante Rôles.
  7. Cliquez sur Save.

Activer IAP

  1. Sur la page Identity-Aware Proxy, sous Ressources HTTPS, recherchez le nom de votre déploiement de connecteur IAP. Pour activer IAP,
  2. Dans la fenêtre Activer IAP qui s'affiche, cliquez sur Activer pour confirmer que vous souhaitez qu'IAP sécurise votre application sur site. Une fois IAP activé, des identifiants de connexion sont requis pour toutes les connexions à votre équilibreur de charge. Seuls les comptes disposant du rôle Utilisateur de l'application Web sécurisée par IAP sur le projet y ont accès.
  3. Pour vérifier qu'IAP est activé, accédez à l'URL interne de votre application sur site. IAP est activé si une invite d'authentification s'affiche.

IAP authentifie et autorise désormais l'ensemble du trafic vers votre application sur site.

Sécuriser le trafic sortant

Un connecteur IAP transfère les requêtes vers votre backend sur site une fois déployé. Puisque la stratégie d'accès IAM est appliquée au connecteur IAP, assurez-vous qu'IAP a authentifié et autorisé toutes les requêtes adressées à votre backend.

Pour confirmer que le trafic sortant est passé par le connecteur IAP, vérifiez que les requêtes comportent un en-tête signé IAP. Les requêtes authentifiées et autorisées par IAP ont un en-tête JWT signé IAP.

Mettre à jour un déploiement de connecteur IAP

Les règles de routage de votre connecteur IAP peuvent être mises à jour et transférées vers votre cluster GKE déployé à l'aide du processus ci-dessous. Pour en savoir plus, consultez la page Mettre à jour un déploiement.

  1. Mettez à jour votre fichier iap-connector.yaml avec les nouveaux paramètres de routage.
  2. Exécutez la commande gcloud suivante :

    gcloud deployment-manager deployments update NAME_OF_DEPLOYMENT
    

Supprimer un déploiement de connecteur IAP

La suppression de votre déploiement de connecteur IAP désactive IAP, laissant votre application sans système d'authentification d'accès. Toutes les ressources créées par le déploiement sont supprimées, y compris les règles de routage.

Pour supprimer votre déploiement de connecteur IAP, procédez comme suit :

  1. Accédez à la page Deployment Manager.
    Accéder à la page Deployment Manager
  2. Dans la liste des déploiements, cochez la case située à côté de votre déploiement IAP.
  3. En haut de la page, cliquez sur Supprimer.

Si vous devez recréer le déploiement de connecteur IAP que vous avez supprimé, vous pouvez utiliser votre fichier de configuration d'origine. Un déploiement recréé est considéré comme un nouveau déploiement, avec de nouvelles ressources.

Étapes suivantes