Activer IAP pour Cloud Run

Cette page explique comment sécuriser un service Cloud Run avec Identity-Aware Proxy (IAP).

Limitations connues

L'une des limites connues est que IAM doit être configuré pour attribuer à allUsers le rôle de demandeur sur le service Cloud Run. Vous pouvez toujours verrouiller l'accès au niveau du réseau afin que toutes les requêtes externes doivent être autorisées via IAP. Pour en savoir plus, consultez la page Configurer Cloud Run pour limiter l'accès. Cette restriction a été prise en compte pour que vous puissiez accorder explicitement au service Cloud Run un accès IAP spécifique à un projet.

Avant de commencer

Afin d'activer IAP pour Cloud Run, vous avez besoin des éléments suivants:

Activer IAP

Console

Si vous n'avez pas configuré l'écran d'autorisation OAuth de votre projet, vous devez le faire. Une adresse e-mail et un nom de produit sont requis pour l'écran d'autorisation OAuth.

  1. Accédez à l'écran d'autorisation OAuth.
  2. Sous Assistance par e-mail, sélectionnez l'adresse e-mail que vous souhaitez afficher en tant que coordonnée publique. 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 d'éventuelles informations facultatives.
  5. Cliquez sur Enregistrer.

Pour modifier les informations sur l'écran d'autorisation OAuth, telles que le nom de produit ou l'adresse e-mail, répétez les étapes précédentes pour configurer l'écran d'autorisation.

Configurer l'accès à IAP

  1. Accédez à la page Identity-Aware Proxy.
  2. Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
  3. Sous HTTPS RESOURCES (RESSOURCES HTTPS), cochez la case située à côté du service de backend d'équilibreur de charge auquel 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, saisissez les comptes des groupes ou des personnes qui doivent disposer du rôle Utilisateur de l'application Web sécurisée par IAP pour le projet. Les types de comptes suivants peuvent être ajoutés en tant que membres :

    • Compte Google : utilisateur@gmail.com : il peut s'agir d'un compte Google Workspace, par exemple utilisateur@google.com ou d'un autre domaine Workspace.
    • Groupe Google : admins@googlegroups.com
    • Compte de service : server@example.gserviceaccount.com
    • Domaine Google Workspace : example.com
  6. Sélectionnez Cloud IAP > IAP-secured Web App User (Utilisateur de l'application Web sécurisée par IAP) dans la liste déroulante Roles (Rôles).

  7. Cliquez sur Enregistrer.

Activer IAP

  1. Sur la page Identity-Aware Proxy, sous RESSOURCES HTTPS, recherchez le service de backend d'équilibreur de charge auquel vous souhaitez limiter l'accès. Pour activer IAP pour une ressource, activez ou désactivez le bouton dans la colonne IAP. Pour activer IAP :
    • La configuration de l'interface de l'équilibreur de charge doit comporter au moins un protocole HTTPS. En savoir plus sur la configuration d'un équilibreur de charge
    • Vous devez disposer des autorisations compute.backendServices.update, clientauthconfig.clients.create et clientauthconfig.clients.getWithSecret. Ces autorisations sont accordées par des rôles (par exemple, Éditeur de projet). Pour en savoir plus, consultez la page Gérer l'accès aux ressources sécurisées par IAP.
  2. Dans la fenêtre Turn on IAP (Activer l'IAP) qui s'affiche, cliquez sur Turn on (Activer) pour confirmer que vous souhaitez qu'IAP sécurise votre ressource. Une fois IAP activé, il nécessite des identifiants de connexion pour toutes les connexions à votre équilibreur de charge. Seuls les comptes dotés du rôle Utilisateur de l'application Web sécurisée par IAP auront accès.

gcloud

  1. Suivez les instructions dans Créer des clients OAuth par programmation pour IAP pour configurer l'écran de consentement OAuth et créer le client OAuth.
  2. Enregistrez l'ID client et le code secret OAuth.
  3. Activez IAP en exécutant la commande globale ou régionale, selon que votre service de backend d'équilibreur de charge est mondial ou régional. Utilisez l'ID client et le code secret OAuth de l'étape précédente.

    Champ d'application global:

    gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

    Portée régionale:

    gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    
    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • CLIENT_ID : ID client OAuth de l'étape précédente.
    • CLIENT_SECRET : code secret du client OAuth obtenu à l'étape précédente.
    • REGION_NAME: région dans laquelle vous souhaitez activer IAP.

Après avoir activé IAP, vous pouvez utiliser la CLI Google Cloud pour manipuler une règle d'accès IAP à l'aide du rôle Identity and Access Management roles/iap.httpsResourceAccessor. Pour en savoir plus, consultez Gérer les rôles et les autorisations.

Configurer Cloud Run pour limiter l'accès

Pour configurer l'accès à votre service Cloud Run, procédez comme suit :

  1. Configurez le service Cloud Run et définissez l'entrée sur Internal and Cloud Load Balancing. Pour en savoir plus, consultez Limiter le trafic entrant pour Cloud Run.

    Cette étape garantit que seuls les clients internes et l'équilibreur de charge externe peuvent appeler le service Cloud Run, et que les requêtes directes provenant d'Internet sont bloquées.

  2. Pour le service Cloud Run, accordez à allUsers le rôle de demandeur. Pour en savoir plus, consultez Autoriser l'accès public (non authentifié).

    Cette étape est importante pour s'assurer que votre configuration IAP fonctionne correctement, car elle configure Cloud Run pour qu'elle n'essaie pas de s'authentifier et d'autoriser les requêtes seule. À la place, IAP effectue l'authentification et l'autorisation.

Notez que cette configuration permet à tous les clients considérés comme internes (par définition) (par limitation de l'entrée Cloud Run) d'accéder au service Cloud Run sans authentification. Tous les autres clients entrants via l'équilibreur de charge externe s'authentifient via IAP. Il s'agit d'une limitation connue qui sera traitée à l'avenir.