Cette page explique comment configurer Identity-Aware Proxy (IAP) pour utiliser la fédération d'identité de personnel.
Lorsque vous configurez la fédération d'identité du personnel avec IAP, vous pouvez utiliser un fournisseur d'identité (IdP) externe pour authentifier et autoriser du personnel (un groupe d'utilisateurs tels que des employés, des partenaires et des sous-traitants) à l'aide d'Identity and Access Management (IAM), afin que les utilisateurs puissent accéder de manière sécurisée aux services déployés surGoogle Cloud ou sur site.
La configuration d'IAP avec la fédération d'identité de personnel vous permet d'effectuer les opérations suivantes concernant vos applications sécurisées par IAP :
- Rediriger un utilisateur final vers un IdP externe, tel qu'Okta, pour qu'il se connecte.
- Configurez une session de connexion d'une durée comprise entre 15 minutes et 12 heures.
- N'autorisez que des utilisateurs finaux ou des ensembles d'utilisateurs finaux spécifiques d'un IdP à accéder à votre application.
- Spécifiez le contexte dans lequel un utilisateur final peut accéder à une application. Par exemple, n'autorisez l'accès qu'à une heure précise de la journée.
Configurer IAP avec la fédération des identités des employés pour une application
La configuration d'IAP avec la fédération des identités des employés comprend les tâches principales suivantes :
- Configurez un pool d'employés et un fournisseur.
- Créez un ID client et un code secret OAuth.
- Activez IAP et configurez-le pour utiliser la fédération des identités des employés.
Configurer un pool d'employés et un fournisseur
Pour configurer un pool d'employés et un fournisseur, suivez les instructions de l'un des fournisseurs suivants :
Lorsque vous définissez la durée de la session, consultez Gérer IAP avec les sessions de fédération d'identité de personnel.
Si vous souhaitez mapper une adresse e-mail d'un IdP tiers vers Google Cloud, vous devez ajouter un mappage d'attributs dans votre fournisseur de pool d'employés pour google.email.
Exemple : google.email=assertion.email.
Créer un ID client et un code secret OAuth
Important : L'ID client et le code secret OAuth que vous créez lors des étapes suivantes sont créés pour l'infrastructure de fédération des identités de personnel. Ils sont différents de l'ID client et du secret requis lorsque vous utilisez la configuration OAuth personnalisée pour activer IAP avec des identités Google.Suivez les instructions pour créer un ID client et un secret OAuth dans un projet de la même organisation que le pool d'employés que vous utiliserez pour cette configuration. Il n'est pas nécessaire que le projet soit le même que celui dans lequel se trouve la ressource sécurisée par IAP. Lorsque vous créez l'ID client et le code secret OAuth, procédez comme suit :
Utilisez un espace réservé pour l'URI de redirection lorsque vous créez l'ID client. Après avoir créé l'ID client, exécutez
describeun client OAuth pour obtenir leclientIDgénéré.Une fois que vous disposez de
clientID, exécutezupdateun client OAuth pour mettre à jourallowed-redirect-uriscomme suit :https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect.Où
CLIENT_IDcorrespond à la valeurclientIDrécupérée à l'étape précédente.Après avoir créé le code secret du client, exécutez
describeun identifiant client OAuth pour obtenir leclientSecretgénéré.
Enregistrez les valeurs
clientIdetclientSecret, car vous en aurez besoin lors des étapes suivantes.
Activer IAP pour utiliser la fédération des identités des employés
Pour activer IAP avec la fédération d'identité de personnel, procédez comme suit.
Activer IAP
Activez IAP sur la ressource.
Console
- Dans la console Google Cloud , ouvrez la page IAP.
Accéder à la page IAP - Sélectionnez un projet. Le projet doit se trouver dans la même organisation que le pool d'employés que vous avez créé précédemment. Il ne doit pas nécessairement s'agir du projet dans lequel vous avez créé l'ID client et le code secret OAuth.
- Cliquez sur l'onglet Applications, puis recherchez l'application dont vous souhaitez restreindre l'accès à l'aide d'IAP.
- Dans la colonne "IAP", basculez le bouton sur Activer.
gcloud
Pour activer IAP à l'aide de la gcloud CLI, suivez les procédures correspondant au service concerné :
API
Créez un fichier
settings.json.cat << EOF > settings.json { "iap": { "enabled":true, } } EOFActivez IAP sur App Engine.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap.enabled"Pour activer IAP sur Compute Engine, utilisez l'URL suivante :
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME?updateMask=iap.enabled.
Mettre à jour les paramètres IAP
Pour configurer IAP afin d'utiliser la fédération des identités des employés, vous devez configurer les paramètres suivants :
WorkforceIdentitySettings: ID client et code secret OAuth créés précédemment.IdentitySources: source d'identité.
Pour en savoir plus, consultez les API IAP.
gcloud
En vous basant sur l'exemple suivant, créez un fichier
iap_settings.yaml.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.yaml access_settings: identity_sources: ["WORKFORCE_IDENTITY_FEDERATION"] workforce_identity_settings: workforce_pools: ["$WORKFORCE_POOL_NAME"] oauth2: client_id: "$CLIENT_ID" client_secret: "$CLIENT_SECRET" EOFExécutez la commande suivante pour mettre à jour les paramètres IAP de votre ressource.
gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICERemplacez les éléments suivants :
- PROJECT : ID du projet.
- RESOURCE_TYPE : Type de ressource IAP. Le type de ressource doit être
cloud-run(preview),app-engine,iap_web,compute,organizationoufolder. Pour le type de ressourcecloud-run, utilisez l'option--regionpour indiquer la région dans laquelle votre service Cloud Run est déployé. - SERVICE : nom du service. Ce champ est facultatif pour
app-engineetcompute.
Pour en savoir plus sur la commande, consultez gcloud iap settings set.
API
En vous basant sur l'exemple suivant, créez un fichier de paramètres
iap_settings.json.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.json { "access_settings": { "identity_sources": ["WORKFORCE_IDENTITY_FEDERATION"], "workforce_identity_settings": { "workforce_pools": ["$WORKFORCE_POOL_NAME"], "oauth2": { "client_id": "$CLIENT_ID", "client_secret": "$CLIENT_SECRET", } } } } EOFUtilisez la gcloud CLI pour obtenir le nom de la ressource, puis copiez le
RESOURCE_NAMEà partir du résultat, car vous en aurez besoin à l'étape suivante.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICERemplacez les éléments suivants :
- PROJECT : ID du projet.
- RESOURCE_TYPE : Type de ressource IAP. Le type de ressource doit être
appengine,iap_web,compute,organization,folderoucloud_run-$REGION(preview), où $REGION est la région dans laquelle votre service Cloud Run est déployé. - SERVICE : nom du service. Ce champ est facultatif pour
app-engineetcompute.
Remplacez
RESOURCE_NAMEdans la commande suivante par leRESOURCE_NAMEde l'étape précédente.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.identitySources,iapSettings.accessSettings.workforceIdentitySettings.workforcePools,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientId,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientSecret"
Accorder l'accès aux ressources sécurisées par IAP
Pour accéder à une ressource sécurisée par IAP, les utilisateurs finaux doivent disposer du rôle Utilisateur de l'application Web sécurisée par IAP sur la ressource. Vous pouvez attribuer le rôle "Utilisateur de l'application Web sécurisée par IAP" à un seul utilisateur (compte principal) ou à un ensemble d'utilisateurs (ensemble de comptes principaux, qui correspond à un groupe, à un attribut spécifique ou à un pool d'utilisateurs entier).
L'accès illimité aux ressources sécurisées par IAP n'est pas possible.
Console
- Dans la console Google Cloud , ouvrez la page IAP.
Accéder à la page IAP - Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
- Cliquez sur Ajouter un compte principal, puis ajoutez les identifiants de compte principal des groupes ou des personnes auxquels vous souhaitez attribuer un rôle IAM pour la ressource.
- Dans Attribuer des rôles, sélectionnez Utilisateur de l'application Web sécurisée par IAP.
- Cliquez sur Ajouter.
gcloud
Exécutez la commande ci-dessous.
gcloud iap web add-iam-policy-binding \
--member=PRINCIPAL_IDENTIFIER \
--role='roles/iap.httpsResourceAccessor' \
--project=PROJECT_ID \
--resource-type=RESOURCE_TYPE \
--service=SERVICE \
--condition=CONDITION
Remplacez les éléments suivants :
- PRINCIPAL_IDENTIFIER : identifiant du compte principal.
- PROJECT_ID : ID du projet.
- RESOURCE_TYPE : type de ressource IAP, qui peut être
app-engineoubackend-services. - SERVICE : (facultatif) nom du service.
- CONDITION : (facultatif) conditions IAM. Voici un exemple de condition configurée avec des niveaux d'accès :
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access on weekdays
API
Cette méthode n'est pas recommandée, car elle affecte l'intégralité de la stratégie IAM d'une ressource. Une erreur pourrait supprimer la stratégie d'une ressource.
Obtenez les liaisons de stratégie IAM existantes.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d {} \ "https://iap.googleapis.com/v1/RESOURCE_NAME:getIamPolicy" -o iam_policy_bindings.jsonRemplacez RESOURCE_NAME par le RESOURCE_NAME que vous avez obtenu lors d'une étape précédente.
Dans le fichier
iam_policy_bindings.jsonque vous avez obtenu à l'étape précédente, supprimez les lignes "version" et "etag", puis ajoutez la liaison que vous souhaitez ajouter pour l'identifiant du compte principal. Pour en savoir plus, consultez Comprendre les stratégies d'autorisation.{ "bindings": [ { // existing bindings }, { "role": "roles/iap.httpsResourceAccessor", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/iap-test-pool/subject/iap-test-subject" ], "condition": { "expression": "\"accessPolicies/12345678/accessLevels/iap_test_access_level\" in request.auth.access_levels", "title": "iap-test-access-level", "description": "only access on weekdays" } } ] }Mettez à jour les liaisons de stratégie IAM.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{"policy":$(cat iam_policy_bindings.json)}" \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"Remplacez RESOURCE_NAME par le RESOURCE_NAME que vous avez obtenu lors d'une étape précédente.
Pour en savoir plus, consultez GetIamPolicy et SetIamPolicy.
(Facultatif) Configurer l'accès contextuel
Vous pouvez éventuellement configurer des règles d'accès contextuel pour l'autorisation avancée.
Pour configurer des niveaux d'accès, consultez Créer et appliquer des niveaux d'accès. Les niveaux d'accès basés sur les informations de l'appareil ne sont pas disponibles lorsque vous utilisez la fédération des identités des employés. Vous pouvez toujours utiliser des niveaux d'accès basés sur le contexte de la requête avec des conditions sur l'adresse IP, l'heure et la date.
Authentification automatisée
IAP accepte l'authentification JWT par compte de service pour les applications configurées avec Workforce Identity Federation. Pour obtenir des instructions, consultez S'authentifier avec un jeton JWT de compte de service.
Limites liées à l'utilisation des pools d'employés
* Pour chaque application compatible avec IAP, un seul pool d'employés peut être configuré, et ce pool ne peut contenir qu'un seul fournisseur. * Le pool d'employés, l'ID client et le secret OAuth, ainsi que les applications compatibles avec IAP doivent tous se trouver dans la même organisation. * Les niveaux d'accès pour les informations liées aux appareils ne sont pas acceptés. * Seules les configurations de paramètres IAP suivantes sont acceptées : * CorsSettings * CsmSettings * AccessDeniedPageSettings.accessDeniedPageUri * CookieDomain * L'accès programmatique avec la fédération des identités des employés n'est compatible qu'avec les comptes de service Google.Dépannage
Pour en savoir plus sur le dépannage, consultez Dépannage et questions fréquentes.