Cette page explique comment activer IAP à partir de Cloud Run et sécuriser le trafic destiné à un service Cloud Run en le redirigeant vers IAP pour l'authentification. En activant IAP à partir de Cloud Run, vous pouvez acheminer le trafic en un seul clic depuis tous les chemins d'entrée, y compris les URL run.app
par défaut et les équilibreurs de charge.
Limitations connues
- Le projet doit appartenir à une organisation.
- Les identités doivent appartenir à la même organisation.
- Vous ne pouvez pas configurer IAP à la fois sur l'équilibreur de charge et sur le service Cloud Run.
- Il est possible que certaines intégrations, comme Pub/Sub, cessent de fonctionner si IAP sont activés.
Avant de commencer
Activez l'API IAP.
Rôles requis
Pour obtenir les autorisations nécessaires pour activer IAP, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Administrateur Cloud Run (
roles/run.admin
) sur le projet -
Accorder l'accès au service compatible avec IAP :
Administrateur de stratégies IAP (
roles/iap.admin
) sur le projet -
Créez un service compatible avec IAP ou mettez à jour un service existant pour activer IAP :
-
Lecteur Artifact Registry (
roles/artifactregistry.reader
) sur les images de conteneurs déployées -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur l'identité du service
-
Lecteur Artifact Registry (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Activer IAP à partir de Cloud Run
Nous vous recommandons d'activer IAP directement depuis Cloud Run.
Si vous utilisez à la fois IAP et Identity and Access Management (IAM) sur le même service Cloud Run, notez les conditions suivantes :
Les vérifications IAP et IAM sont effectuées.
La vérification IAP a lieu en premier et accepte ou bloque les requêtes en fonction de la configuration IAP.
Si la requête réussit la vérification IAP, IAP utilise son propre compte de service pour s'authentifier auprès de la vérification IAM de Cloud Run.
Étant donné que la vérification IAP a lieu en premier, il est possible que certains services, comme Pub/Sub, ne puissent pas s'y authentifier correctement.
Activez IAP depuis Cloud Run à l'aide de la console Google Cloud , de Google Cloud CLI ou de Terraform.
Console
Lorsque vous activez IAP pour Cloud Run, IAP nécessite des autorisations pour appeler votre service Cloud Run. Si vous activez IAP à l'aide de la console Google Cloud , cette autorisation est accordée automatiquement en attribuant le rôle de demandeur Cloud Run (roles/run.invoker
) à l'agent de service IAP.
Pour activer IAP à partir de Cloud Run :
Dans la console Google Cloud , accédez à la page Cloud Run :
Si vous configurez et déployez un nouveau service, sélectionnez Déployer un conteneur, puis Service. Si vous configurez et déployez un service existant, cliquez sur ce service, puis sur Modifier et déployer la nouvelle révision.
Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis sélectionnez Exiger l'authentification. Sélectionnez Identity-Aware Proxy (IAP).
Si vous configurez et déployez un service existant, cliquez sur le service, puis sélectionnez Exiger l'authentification. Sélectionnez Identity-Aware Proxy (IAP).
Cliquez sur Modifier la règle pour créer une règle d'accès contextuel :
Ajoutez un ou plusieurs comptes principaux et, éventuellement, le niveau d'accès que chaque compte principal doit respecter pour accéder à l'application.
Cliquez sur Enregistrer.
Cliquez sur Save.
gcloud
Pour activer IAP directement depuis Cloud Run, ajoutez l'indicateur --iap
lors du déploiement de votre application et accordez l'autorisation d'appel à l'agent de service IAP :
Déployez votre service Cloud Run à l'aide de l'une des commandes suivantes :
Pour un nouveau service :
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-allow-unauthenticated \ --iap
Pour un service existant :
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
Remplacez les éléments suivants :
- SERVICE_NAME : nom de votre service Cloud Run.
- REGION : nom de votre région Cloud Run.
Exemple :
europe-west1
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PROJECT_NUMBER : numéro de votre projet Google Cloud .
Accordez l'autorisation d'appel à l'agent de service IAP :
gcloud run services add-iam-policy-binding SERVICE_NAME \ --region=REGION \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com \ --role=roles/run.invoker
Remplacez les éléments suivants :
- SERVICE_NAME : nom de votre service Cloud Run.
- REGION : nom de votre région Cloud Run.
Exemple :
europe-west1
- PROJECT_NUMBER : numéro de votre projet Google Cloud .
Pour vérifier que votre service est configuré avec IAP activé, exécutez la commande suivante :
gcloud beta run services describe SERVICE_NAME
La sortie doit contenir la chaîne suivante :
Iap Enabled: true
Vous routez désormais tout le trafic destiné au service Cloud Run configuré vers IAP pour l'authentification avant de le transmettre au conteneur.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Pour activer IAP à l'aide de Terraform, vous devez mettre à jour la définition de votre service et ajouter une liaison de stratégie IAM pour accorder l'autorisation d'appelant à IAP.
Ajoutez
iap_enabled = true
à une ressourcegoogle_cloud_run_v2_service
dans votre configuration Terraform pour activer IAP sur le service :resource "google_cloud_run_v2_service" "default" { provider = google-beta name = "cloudrun-iap-service" location = "europe-west1" ingress = "INGRESS_TRAFFIC_ALL" launch_stage = "BETA" iap_enabled = true template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } }
Ajoutez les éléments suivants pour attribuer le rôle
roles/run.invoker
à l'agent de service IAP.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { provider = google-beta project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "serviceAccount:service-"PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com" }
Remplacez PROJECT_NUMBER par votre numéro de projet.
Facultatif. Pour récupérer les données de la stratégie IAM actuelle, ajoutez les éléments suivants à une ressource
google_cloud_run_v2_service_iam_policy
dans votre configuration Terraform.data "google_cloud_run_v2_service_iam_policy" "policy" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name }
Désactiver IAP à partir de Cloud Run
Vous pouvez désactiver IAP à l'aide de la console Google Cloud ou de gcloud CLI.
Console
Pour désactiver IAP à partir de Cloud Run :
Dans la console Google Cloud , accédez à la page Cloud Run :
Cliquez sur le service existant que vous souhaitez modifier.
Cliquez sur Sécurité, puis sélectionnez Autoriser l'accès public.
Cliquez sur Enregistrer.
gcloud
Pour désactiver IAP directement depuis Cloud Run, ajoutez l'indicateur --no-iap
lorsque vous déployez votre application :
Déployez votre service Cloud Run à l'aide de l'une des commandes suivantes :
Pour un nouveau service :
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-iap
Pour un service existant :
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
Remplacez les éléments suivants :
- SERVICE_NAME : nom de votre service Cloud Run.
- REGION : nom de votre région Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Pour vérifier que votre service n'est plus configuré avec IAP activé, exécutez la commande suivante :
gcloud beta run services describe SERVICE_NAME
La sortie ne doit plus contenir la chaîne suivante :
Iap Enabled: true
Vous n'acheminez plus tout le trafic destiné au service Cloud Run configuré vers IAP pour l'authentification avant de le transmettre au conteneur.
Gérer l'accès des utilisateurs ou des groupes
Par défaut, IAP pour Cloud Run utilise des identités dans l'organisation avec des comptes Google. Vous pouvez ajouter ou supprimer l'accès à un service Cloud Run à l'aide de la console Google Cloud ou de gcloud CLI.
Console
Pour ajouter ou supprimer un accès :
Dans la console Google Cloud , accédez à la page Cloud Run :
Cliquez sur le service existant que vous souhaitez modifier, puis sur Sécurité.
Sous IAP, cliquez sur Modifier la règle.
Pour ajouter un accès, saisissez le compte principal et, éventuellement, le ou les niveaux d'accès que vous souhaitez ajouter.
Pour supprimer l'accès d'un compte principal existant, cliquez sur l'icône Supprimer la règle à côté de Niveaux d'accès.
Cliquez sur Enregistrer.
gcloud
Pour ajouter ou supprimer l'accès à un service Cloud Run pour des utilisateurs ou des groupes individuels de votre organisation, exécutez l'une des commandes suivantes :
Pour ajouter un accès :
gcloud beta iap web add-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Pour supprimer l'accès :
gcloud beta iap web remove-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Pour afficher les accès :
gcloud beta iap web get-iam-policy \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Remplacez les éléments suivants :
- USER_EMAIL : Adresse e-mail de l'utilisateur.
- REGION : nom de votre région Cloud Run.
- SERVICE_NAME : nom de votre service Cloud Run.
Dépannage
L'échec de l'agent de service entraîne une erreur IAM
L'activation d'IAP sur un nouveau projet pour la première fois peut entraîner l'erreur suivante :
Setting IAM permissions failed
Cela est dû à un échec de l'agent de service Cloud Run. Pour résoudre le problème, réactivez IAP ou définissez manuellement la stratégie IAM.
Étapes suivantes
- Pour savoir comment activer IAP à partir d'un service de backend ou d'un équilibreur de charge, consultez Activer IAP pour Cloud Run.
- Pour les problèmes liés à l'activation d'IAP pour Cloud Run, consultez la section Résoudre les erreurs.
- Activer les identités externes
- Activer la configuration OAuth
- Gérer les accès aux ressources sécurisées par IAP
- Utiliser des règles d'administration pour contrôler l'activation d'IAP