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 des identités des employés avec lIAP Point, 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 sur Google Cloud ou sur site.
Configurer l'API Access Intent 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'API Access Intent:
- Rediriger un utilisateur final vers un fournisseur d'identité externe, tel qu'Okta, pour qu'il se connecte
- Configurez une session de connexion comprise entre 15 minutes et 12 heures.
- Autorisez uniquement 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 spécifique de la journée.
Vous pouvez utiliser l'IAP avec la fédération d'identité des employés sur toutes les ressources et tous les équilibreurs de charge existants compatibles avec l'IAP.
Configurer l'API IAP avec la fédération d'identité de personnel pour une application
La configuration de l'IAP avec la fédération d'identité des employés comprend les tâches principales suivantes:
- Configurez un pool de personnel et un fournisseur.
- Créez un ID client et un secret OAuth.
- Activez IAP et configurez-le pour qu'il utilise la fédération d'identité de personnel.
Configurer un pool d'employés et un fournisseur
Pour configurer un pool et un fournisseur de personnel, suivez les instructions de la section Fédération d'identité de personnel. Lorsque vous définissez la durée de la session, consultez la section Gérer l'API IAP avec des sessions de fédération d'identité de personnel.
Si vous souhaitez mapper une adresse e-mail d'un IdP tiers sur 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 secret OAuth
Suivez les instructions pour créer un ID client et un secret OAuth dans un projet appartenant à la même organisation que le pool d'employés que vous utiliserez pour cette configuration. Le projet ne doit pas nécessairement être identique à celui dans lequel se trouve la ressource sécurisée par IAP. Lorsque vous créez l'ID client et le 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
describe
un client OAuth pour obtenir leclientID
généré.Une fois que vous avez le
clientID
, exécutezupdate
un client OAuth pour remplacerallowed-redirect-uris
par ce qui suit :https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect
.Où
CLIENT_ID
correspond à la valeurclientID
récupérée à l'étape précédente.Après avoir créé le code secret du client, exécutez
describe
des identifiants client OAuth pour obtenir leclientSecret
généré.
Enregistrez
clientId
etclientSecret
, car vous en aurez besoin par la suite.
Activer IAP pour utiliser la fédération des identités des employés
Console
- Dans la console Google Cloud, ouvrez la page "IAP".
Accéder à la page "IAP" - Sélectionnez un projet. Le projet doit appartenir à la même organisation que le pool de personnel que vous avez créé précédemment. Le projet ne doit pas nécessairement être celui dans lequel vous avez créé l'ID client et le secret OAuth.
- Cliquez sur l'onglet Applications, puis recherchez l'application à laquelle vous souhaitez restreindre l'accès à l'aide d'IAP.
- Dans la colonne "IAP", basculez le bouton sur Activer.
gcloud
Pour utiliser la gcloud CLI pour activer l'IAP, suivez les procédures du service applicable:
API
Créez un fichier
settings.json
.cat << EOF > settings.json { "iap": { "enabled":true, } } EOF
Activez 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
.
Modifier les paramètres d'IAP
Pour configurer l'IAP pour qu'il utilise la fédération d'identité 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
À l'aide de l'exemple suivant comme référence, 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" EOF
Exé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=SERVICE
Remplacez les éléments suivants :
- PROJECT : ID du projet
- RESOURCE_TYPE: type de ressource d'application intégrée. Le type de ressource doit être
app-engine
,iap_web
,compute
,organization
oufolder
. - SERVICE : le nom du service. Cette opération est facultative pour
app-engine
etcompute
.
Pour en savoir plus sur cette commande, consultez gcloud iap settings set.
API
À l'aide de l'exemple suivant comme référence, 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", } } } } EOF
Utilisez gcloud CLI pour obtenir le nom de la ressource, puis copiez le
RESOURCE_NAME
à partir de la sortie, car vous en aurez besoin à l'étape suivante.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICE
Remplacez les éléments suivants :
- PROJECT : ID du projet
- RESOURCE_TYPE: type de ressource d'application intégrée. Le type de ressource doit être
app-engine
,iap_web
,compute
,organization
oufolder
. - SERVICE : le nom du service. Cette opération est facultative pour
app-engine
etcompute
.
Remplacez
RESOURCE_NAME
dans la commande suivante parRESOURCE_NAME
de 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 (principal) ou à un ensemble d'utilisateurs (ensemble principal, qui correspond à un groupe, à un attribut spécifique ou à l'ensemble des utilisateurs).
L'accès illimité aux ressources sécurisées par IAP n'est pas pris en charge.
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 suivante :
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: identifiants principaux.
- PROJECT_ID : ID du projet
- RESOURCE_TYPE: type de ressource IAP, qui peut être
app-engine
oubackend-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 in 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 peut 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.json
Remplacez RESOURCE_NAME par le RESOURCE_NAME que vous avez obtenu à une étape précédente.
Dans le fichier
iam_policy_bindings.json
que vous avez obtenu à l'étape précédente, supprimez les lignes de version et d'étiquette, puis ajoutez la liaison que vous souhaitez ajouter pour l'identifiant principal. Pour en savoir plus, consultez la section 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 in week days" } } ] }
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 à une étape précédente.
Pour en savoir plus, consultez GetIamPolicy et SetIamPolicy.
(Facultatif) Configurer l'accès contextuel
Vous pouvez également configurer des règles d'accès contextuelles pour l'autorisation avancée.
Pour configurer des niveaux d'accès, consultez la section Créer et appliquer des niveaux d'accès. Les niveaux d'accès basés sur les informations sur 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.
Limites liées aux pools d'employés
- Pour chaque application compatible avec l'IAP, vous ne pouvez configurer qu'un seul pool de personnel, qui ne peut contenir qu'un seul fournisseur.
- Le pool de personnel, l'ID client et le secret OAuth, ainsi que les applications compatibles avec l'IAP doivent tous appartenir à la même organisation.
- Les niveaux d'accès aux informations liées à l'appareil ne sont pas acceptés.
- Seules les configurations de paramètres IAP suivantes sont acceptées :
- L'accès programmatique avec la fédération des identités des employés n'est pas pris en charge.