Activer IAP pour Cloud Run

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

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

Limitations connues

  • IAM doit être configuré pour accorder à 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 Configurer Cloud Run pour limiter l'accès. Cette limitation est corrigée afin que vous puissiez accorder explicitement un accès IAP spécifique au projet au service Cloud Run.

  • Les services Cloud Run pour lesquels le protocole HTTP/2 est activé rencontrent une boucle de redirection infinie sur les requêtes lorsqu'ils sont sécurisés avec IAP. Ce comportement n'est pas intentionnel et nous prévoyons de remédier à ce problème à l'avenir. Pour éviter ce comportement à l'heure actuelle, Google recommande de désactiver la configuration HTTP/2 (paramètre par défaut) lorsqu'un service est situé derrière IAP.

  • Les services Cloud Run diffusés par un mode d'équilibrage de charge Envoy (Global external HTTP(S) load balancer) ne disposent pas de l'en-tête IAP X-Goog-IAP-JWT-Assertion. Pour éviter ce comportement, nous vous recommandons d'utiliser le mode Global external HTTP(S) load balancer (classic).

  • Cloud Run avec un équilibreur de charge interne nécessite un abonnement BeyondCorp Enterprise.

Avant de commencer

Pour activer IAP pour Cloud Run, vous avez besoin des éléments suivants:

  • Un projet dans la console Google Cloud avec la facturation activée
  • Un groupe d'un ou de plusieurs services Cloud Run desservi par un équilibreur de charge.
  • Un code d'application pour vérifier que toutes les requêtes ont une identité

Activer IAP

Console

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

  1. Accédez à l'écran d'autorisation OAuth.
  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 d'éventuels détails.
  5. Cliquez sur Enregistrer.

Pour modifier les informations sur l'écran d'autorisation OAuth, comme le nom du 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 APPLICATIONS, cochez la case à 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 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: utilisateur@gmail.com. Il peut également s'agir d'un compte Google Workspace, par exemple utilisateur@google.com ou 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 > Utilisateur de l'application Web sécurisée par IAP dans la liste déroulante Rôles.

  7. Cliquez sur Enregistrer.

Activer IAP

  1. Sur la page IAP, sous APPLICATIONS (APPLICATIONS), recherchez le service de backend d'équilibreur de charge auquel vous souhaitez restreindre l'accès. Pour activer IAP pour une ressource, cliquez sur le bouton IAP. Pour activer IAP :
    • La configuration du frontend 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 Gérer l'accès aux ressources sécurisées par IAP.
  2. Dans la fenêtre Activer IAP qui s'affiche, cliquez sur Activer pour confirmer que vous souhaitez qu'IAP sécurise votre ressource. 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. Sur la page IAM, ajoutez une nouvelle autorisation avec la configuration suivante:

    • Compte principal : service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
    • Rôle: Demandeur Cloud Run

    Vous pouvez ajouter des conditions pour limiter ce rôle aux services Cloud Run requis.

    Accéder à la page IAM

gcloud

  1. Suivez les instructions de la page Créer des clients OAuth par programmation pour IAP pour configurer l'écran d'autorisation OAuth et créer le client OAuth.
  2. Enregistrez l'ID client et le code secret OAuth.
  3. Si vous ne l'avez pas déjà fait, créez un compte de service en exécutant la commande suivante. Si vous avez déjà créé un compte de service, l'exécution de la commande ne crée pas de comptes de service en double.
    gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
  4. Accordez l'autorisation d'appel au compte de service, créé à l'étape précédente, en exécutant la commande suivante:
    gcloud run services add-iam-policy-binding [SERVICE-NAME] \
    --member=`serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com`  \
    --role=`roles/run.invoker`
    
  5. Activez IAP en exécutant la commande à l'échelle mondiale ou régionale, selon que le service de backend de votre équilibreur de charge est mondial ou régional. Utilisez l'ID client OAuth et le code secret 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
    

    Champ d'application régional:

    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 récupéré à l'étape précédente.
    • CLIENT_SECRET : code secret du client OAuth récupéré à l'étape précédente.
    • REGION_NAME : région dans laquelle vous souhaitez activer IAP.

Après avoir activé IAP, vous pouvez utiliser Google Cloud CLI pour manipuler une stratégie 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 Interne et Cloud Load Balancing. Pour en savoir plus, consultez Restreindre l'entrée 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 de l'Internet public sont bloquées.

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

    Cette étape est importante pour garantir le bon fonctionnement de votre configuration IAP, car elle configure Cloud Run de sorte qu'elle n'essaie pas d'authentifier et d'autoriser les requêtes. À la place, IAP effectue l'authentification et l'autorisation.

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