Vous pouvez activer Identity-Aware Proxy pour vos services Cloud Run de deux manières.
- Recommandé : directement sur un service Cloud Run :
- Protège directement le point de terminaison
run.app, ce qui vous évite d'avoir à provisionner des ressources d'équilibreur de charge. - Simplifie la configuration et évite des coûts supplémentaires liés à l'équilibreur de charge.
- Si vous choisissez de placer un équilibreur de charge devant Cloud Run, le point de terminaison de l'équilibreur de charge est également protégé.
- Protège directement le point de terminaison
- Sur le service de backend qui fait face aux services Cloud Run : si vous exécutez Cloud Run dans plusieurs régions associées au même service de backend global d'équilibreur de charge et que vous avez besoin d'une gestion centralisée des accès, suivez les instructions de cette page. Sinon, nous vous recommandons d'activer IAP directement sur le service Cloud Run.
Limitations connues
IAP ne peut pas être utilisé à la fois sur les services Cloud Run et sur l'équilibreur de charge. Si vous activez IAP sur un équilibreur de charge, IAP sécurise le trafic uniquement via l'équilibreur de charge et non le trafic qui pourrait atteindre le service Cloud Run via son URL
run.app. Pour n'autoriser que le trafic autorisé par IAP, consultez la section Configurer Cloud Run pour limiter l'accès.IAP s'authentifie auprès de Cloud Run à l'aide de l'en-tête
X-Serverless-Authorization. Cloud Run transmet cet en-tête à votre service après avoir supprimé 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 cet en-tête en premier.IAP n'est pas compatible avec Cloud CDN.
IAP augmente la latence. N'activez IAP que pour les instances qui ne sont pas sensibles à la latence.
Avant de commencer
Nous vous recommandons d'activer IAP directement sur Cloud Run.
Si vous choisissez d'activer IAP pour les ressources Cloud Run sur l'équilibreur de charge plutôt que directement sur Cloud Run, vous devez disposer des éléments suivants :
- Unprojet sur la Google Cloud console 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.
Activer IAP à partir d'un service de backend ou d'un équilibreur de charge
Si vous devez activer IAP à partir d'IAP derrière un service de backend ou un équilibreur de charge, suivez les instructions ci-dessous.
Console
Si vous n'avez pas configuré l'écran de consentement OAuth de votre projet, vous êtes invité à le faire. Pour configurer votre écran de consentement OAuth, consultez la section 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 à côté du service de backend de l'équilibreur de charge auquel vous souhaitez ajouter des membres.
- Dans le panneau de droite, cliquez sur Ajouter un compte principal.
Dans la boîte de dialogue Ajouter un compte principal, saisissez les comptes des groupes ou des personnes auxquels vous souhaitez attribuer le 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 : user@gmail.com. Il peut également s'agir d'un compte Google Workspace, tel que user@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.
Autoriser l'accès aux utilisateurs externes à votre organisation
Par défaut, lorsque vous activez IAP, il utilise un client OAuth géré par Google pour authentifier les utilisateurs. Par conséquent, seuls les utilisateurs de l'organisation peuvent accéder à l'application compatible avec IAP.
Pour autoriser l'accès aux utilisateurs externes à votre organisation ou sans organisation, mettez à jour la configuration du client OAuth afin d'utiliser un client OAuth personnalisé, comme décrit dans la section Activer IAP pour les applications externes.
Activer IAP
- Sur la page IAP, sous APPLICATIONS, recherchez le service de backend de l'équilibreur de charge pour lequel vous souhaitez restreindre l'accès. Pour activer IAP pour une ressource, cliquez sur le bouton 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.createetclientauthconfig.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 les 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 IAP à envoyer du trafic au service Cloud Run de backend.
- Compte principal :
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Rôle : Demandeur Cloud Run
Le compte de service IAP est créé lorsque IAP est activé. Si le compte de service IAP ne figure pas dans la liste des comptes principaux, vous pouvez le créer en exécutant la commande gcloud suivante :
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID- Compte principal :
gcloud
- Si vous ne l'avez pas déjà fait dans le projet, créez l'agent de service IAP en exécutant la commande suivante. Si vous avez déjà créé l'agent de service, l'exécution de la commande ne le duplique pas.
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- 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' Activez IAP en exécutant la commande à portée globale ou régionale, selon que le service de backend de votre équilibreur de charge est global 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
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 modifier une stratégie d'accès IAP à l'aide du rôle Identity and Access Management roles/iap.httpsResourceAccessor via la Google Cloud CLI. Pour en savoir plus, consultez la section Gérer l'accès aux ressources sécurisées par IAP.
Terraform
- Si vous ne l'avez pas déjà fait dans un projet, créez l'agent de service IAP en exécutant la commande suivante. Si vous avez déjà créé l'agent de service, l'exécution de la commande ne le duplique pas.
resource "google_project_service" "project" { project = "your-project-id" service = "iap.googleapis.com" } 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" { 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.
Activez IAP en exécutant la commande globale ou régionale en fonction de votre équilibreur de charge. Utilisez l'ID client OAuth et le code secret de l'étape précédente.
Champ d'application global
resource "google_compute_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }Champ d'application régional
resource "google_compute_region_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }
Configurer Cloud Run pour limiter l'accès
Pour empêcher le trafic de transiter par l'URL run.apppar défaut
d'un service Cloud Run, désactivez l'URL par défaut.
Sinon, configurez vos paramètres d'entrée pour restreindre l'entrée réseau pour Cloud Run.
Résoudre les erreurs
Accès à Cloud Run refusé
Your client does not have permission to get URL from this server IAP utilise les autorisations du compte de service IAP pour 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 au compte de service précédent et que le problème persiste, redéployez votre service Cloud Run.
L'échec de l'agent de service entraîne une erreur de définition d'IAM
L'activation d'IAP sur un nouveau projet pour la première fois peut entraîner l'erreur suivante :
Setting IAM permissions failedCela est dû à l'é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.
Impossible de configurer IAP via la gcloud CLI
The IAP service account is not provisioned Si cette erreur s'affiche, exécutez la commande suivante :
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
Le compte de service IAP n'a pas besoin de l'autorisation run.routes.invoke
Pendant la preview d'IAP avec Cloud Run, Cloud Run n'a pas effectué la vérification de l'autorisation run.routes.invoke pour les appels d'IAP qui utilisent le rôle Demandeur Cloud Run. Avec la disponibilité générale, Cloud Run effectue cette vérification d'autorisation.
Pour éviter les modifications destructives, certains projets clients qui dépendaient de ce comportement pendant la preview ont été placés sur 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 à la preview.