Cette page explique comment sécuriser un service Cloud Run avec Identity-Aware Proxy (IAP).
Limitations connues
Services Cloud Run avec HTTP/2 activé derrière un équilibreur de charge d'application classique sécurisé avec IAP. rencontrer une boucle de redirection infinie sur demande. Google recommande d'utiliser un équilibreur de charge d'application externe global lorsque vous utilisez un service sécurisé avec IAP sur lequel HTTP/2 est activé. Pour en savoir plus, consultez Modes d'équilibreur de charge.
L'IAP ne sécurise pas le domaine fourni par Cloud Run pour un service déployé. Pour vous assurer que seul l'IAP est autorisé à accéder au service, utilisez l'authentification IAM sur le service Cloud Run. Pour autoriser IAP à accéder au service Cloud Run, attribuez le rôle de compte de service IAP
service-[PROJECT_NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
avec le rôle Demandeur Cloud Run. IAP génère un jeton d'ID et l'utilise pour s'authentifier auprès de Cloud Run à l'aide duX-Serverless-Authorization
.IAP s'authentifie auprès de Cloud Run à l'aide du
X-Serverless-Authorization
. Cloud Run transmet cet en-tête à votre service après avoir enlevé sa signature. Si votre service est conçu pour transférer la requête vers un autre service Cloud Run qui nécessite une authentification IAM, mettez à jour votre service pour supprimer d'abord cet en-tête.IAP n'est pas compatible avec Cloud CDN.
Avant de commencer
Pour activer IAP pour Cloud Run, vous avez besoin des éléments suivants :
- Un projet de la console Google Cloud avec la facturation activée
- Un groupe d'un ou de plusieurs services Cloud Run, desservis par un équilibreur de charge.
- Découvrez comment configurer un équilibreur de charge HTTPS externe.
- Découvrez comment configurer un équilibreur de charge HTTPS interne.
- Un nom de domaine enregistré à l'adresse de votre équilibreur de charge
- Un code d'application pour vérifier que toutes les requêtes ont une identité
- Découvrez comment obtenir l'identité de l'utilisateur.
IAP utilise un client OAuth géré par Google pour authentifier les utilisateurs. Seuls les utilisateurs de l'organisation peuvent accéder aux application. Si vous souhaitez autoriser l'accès à des utilisateurs externes à votre organisation, consultez la section Activer IAP pour les applications externes.
Activer IAP
Console
Le client OAuth géré par Google n'est pas disponible lorsque vous activez IAP à l'aide de la console Google Cloud.
Si vous n'avez pas configuré l'écran d'autorisation OAuth de votre projet, vous êtes invité à le faire. Pour configurer votre écran d'autorisation OAuth, consultez Configurer votre écran de consentement OAuth.
Configurer l'accès à IAP
- Accédez à la page Identity-Aware Proxy.
- Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
- Sous APPLICATIONS, cochez la case située à côté du service de backend de l'équilibreur de charge auquel vous souhaitez ajouter des membres.
- Dans le panneau d'informations situé à droite, cliquez sur Ajouter un membre.
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, tel que utilisateur@google.com ou un autre domaine Workspace.
- Groupe Google : admins@googlegroups.com
- Compte de service: server@example.iam.gserviceaccount.com
- Domaine Google Workspace : example.com
Sélectionnez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP dans la liste déroulante Rôles.
Cliquez sur Enregistrer.
Activer IAP
- Sur la page IAP, sous APPLICATIONS (APPLICATIONS), recherchez le service de backend de l'équilibreur de charge auquel vous souhaitez restreindre l'accès. Pour activer IAP pour une ressource, cliquez sur le bouton d'activation/de désactivation IAP.
Pour activer IAP :
- Au moins un protocole de la configuration de l'interface d'équilibrage de charge doit correspondre à HTTPS. En savoir plus sur la configuration d'un équilibreur de charge
- Vous devez disposer des autorisations
compute.backendServices.update
,clientauthconfig.clients.create
etclientauthconfig.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.
- 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.
Suivez les instructions de la section Contrôle des accès avec IAM pour autoriser l'API Access Point à envoyer du trafic au service Cloud Run backend.
- Compte principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
- Rôle : Demandeur Cloud Run
- Compte principal:
gcloud
- 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]
- Accordez l'autorisation de demandeur 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'
Activez l'IAP en exécutant la commande à portée globale ou régionale, selon que votre service de backend d'équilibreur de charge est global 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
Champ d'application régional
Remplacez les éléments suivants :gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
- BACKEND_SERVICE_NAME : nom du service de backend.
- REGION_NAME: région dans laquelle vous souhaitez activer IAP.
Une fois que vous avez activé IAP, vous pouvez utiliser la Google Cloud CLI pour modifier 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
Vous pouvez configurer votre service Cloud Run pour n'autoriser l'accès les clients internes et l'équilibreur de charge externe, qui bloque tous de requêtes provenant de l'Internet public.
Suivez la procédure décrite dans la section Limiter l'entrée pour Cloud Run pour configurer le paramètre d'entrée de votre service Cloud Run sur Équilibrage de charge interne et Cloud Load Balancing.
Résoudre les erreurs
The IAP service account is not provisioned
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
Your client does not have permission to get URL from this server
IAP utilise les autorisations du compte de service IAP à appeler votre service Cloud Run. Assurez-vous d'avoir attribué le rôle Demandeur Cloud Run au compte de service suivant :
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
.Si vous avez attribué le rôle Demandeur Cloud Run aux compte de service et que vous rencontrez toujours ce problème, redéployez service Cloud Run.
Le compte de service IAP n'a pas besoin de l'autorisation run.routes.invoke
Pendant l'IAP avec la version preview de Cloud Run,
Cloud Run n'a pas effectué la vérification des autorisations run.routes.invoke
pour les appels provenant d'IAP utilisant le rôle de demandeur Cloud Run. Avec
Disponibilité générale, Cloud Run effectue cette autorisation
vérifier.
Pour éviter les modifications non compatibles, certains projets client qui dépendaient de ce comportement pendant la version Preview ont été ajoutés à une liste d'autorisation afin que l'autorisation ne soit pas vérifiée. Contactez l'assistance Cloud Run pour supprimer ces projets de la liste d'autorisation réservée aux versions Preview.
Étape suivante
Pour vous aider à configurer l'API IAP pour Cloud Run avec Terraform, explorez un exemple de code Terraform.