Par défaut, les sessions de fédération d'identité de personnel ont une durée maximale de 12 heures. La durée de session étendue permet aux organisations de configurer des sessions de longue durée (jusqu'à 90 jours) pour les clients Looker (Google Cloud Core).
Avec une durée de session étendue, vos utilisateurs peuvent maintenir une connexion ininterrompue à Looker (Google Cloud Core) sans avoir à se réauthentifier quotidiennement auprès de votre fournisseur d'identité (IdP) externe. L'interaction des utilisateurs dans Looker (Google Cloud Core) reste régie par la configuration de la durée de votre session Looker (Google Cloud Core). Pour assurer la sécurité tout au long des sessions étendues, Google Cloud synchronise périodiquement les attributs utilisateur et les appartenances aux groupes directement à partir de votre fournisseur d'identité (IdP) externe en arrière-plan.
Ce document explique comment définir des règles de session étendue à l'aide de l'API Access Context Manager avec des contrôles à l'échelle du projet, comment configurer votre fournisseur de pool d'identité de personnel et comment gérer les liaisons actives.
Présentation
La fédération d'identité de personnel utilise les liaisons d'accès Access Context Manager Google Cloud pour configurer la durée de session étendue :
- Liaison d'accèsGoogle Cloud : les administrateurs définissent une règle de durée de session à l'aide d'Access Context Manager. Elle s'applique à l'ensemble de l'organisation, à tous les pools d'employés. À l'aide du champ d'application
restricted_project, la règle accorde des sessions étendues de 90 jours maximum, qui n'affectent que les instances Looker (Google Cloud Core) appartenant à ce projet. - Synchronisation des attributs en arrière-plan :
- OIDC : compatible avec un flux avec code d'autorisation OIDC avec le champ d'application
offline_access(à l'aide de jetons d'actualisation pour actualiser périodiquement les attributs utilisateur et les appartenances à des groupes à partir de votre IdP externe en arrière-plan) ou via le provisionnement SCIM. - SAML : pour les fournisseurs SAML, les attributs utilisateur et les appartenances aux groupes sont tenus à jour à l'aide du provisionnement SCIM.
- OIDC : compatible avec un flux avec code d'autorisation OIDC avec le champ d'application
- Protection contre l'obsolescence : si les attributs utilisateur ne peuvent pas être actualisés à partir du fournisseur d'identité externe dans les 24 heures (par exemple, si l'utilisateur est désactivé ou si les identifiants sont révoqués au niveau du fournisseur d'identité), Google Cloud met fin à la session.
Avant de commencer
Avant de configurer une durée de session étendue, assurez-vous de disposer des autorisations Identity and Access Management requises et d'avoir activé les API nécessaires :
Rôles et autorisations nécessaires
Pour obtenir les autorisations nécessaires pour configurer une durée de session étendue, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Configurer les fournisseurs de pools d'identités de personnel : Administrateur de pools d'employés (
roles/iam.workforcePoolAdmin) sur le pool d'employés ou l'organisation. - Gérer les liaisons d'accès au cloud Access Context Manager : Administrateur de liaisons d'accès au cloud (
roles/accesscontextmanager.gcpAccessAdmin) au niveau de l'organisation. Ce rôle fournit les autorisations nécessaires pour créer, afficher, modifier et supprimer les liaisons d'accès Access Context Manager.
Activer les API
Activez les API Access Context Manager et IAM dans votre projet :
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
Limites et exigences
Avant de configurer une durée de session étendue, consultez les exigences et les limites suivantes :
- Application concernée : la durée de session étendue s'applique exclusivement à Looker (Google Cloud Core).
- Champ d'application du projet obligatoire (
restricted_project) : les paramètres de session doivent être configurés dansscopedAccessSettingsà l'aide du champ d'application du clientrestricted_projectspécifiant le projet Google Cloud auquel appartient l'instance Looker (Google Cloud Core) (projects/{PROJECT_NUMBER}).- Seules les applications Looker (Google Cloud Core) appartenant au projet désigné sont concernées par le règlement sur les CAE.
- Toutes les autres applications (y compris les applications Looker (Google Cloud Core) appartenant à d'autres projets) ne sont pas affectées par la règle.
- Plage de durée de la session : la durée de la session doit être comprise entre 1 heure (
3600s) et 90 jours (7776000s). - Exigences concernant les paramètres de session :
session_length_enabled: doit être défini surtrue.session_length: durée requise comprise entre 1 heure (3600s) et 90 jours (7776000s).session_reauth_method: doit être non défini ou défini surLOGIN.use_oidc_max_age: doit être non défini ou défini surfalse.max_inactivity: doit être non défini (ou la valeur par défaut0s). Les délais d'inactivité des sessions ne sont pas acceptés pour les liaisonsrestricted_project.
- Fournisseurs d'identité compatibles :
- OIDC : nécessite un fournisseur OIDC configuré avec le flux avec code d'autorisation et le champ d'application
offline_accesspour émettre des jetons d'actualisation, ou configuré avec le provisionnement SCIM. - SAML 2.0 : nécessite que le provisionnement SCIM soit activé sur le fournisseur de pools de personnel.
- OIDC : nécessite un fournisseur OIDC configuré avec le flux avec code d'autorisation et le champ d'application
- Seuil d'obsolescence des attributs : un seuil d'obsolescence de 24 heures est appliqué. Si Google Cloud ne parvient pas à actualiser les attributs utilisateur de votre IdP dans les 24 heures, la session est invalidée et l'utilisateur doit se réauthentifier.
- Contraintes d'Access Context Manager :
- Liaison unique à l'organisation : les liaisons de durée de session étendue pour les pools de personnel doivent cibler le compte principal "Tous les pools de personnel" de l'organisation (
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool). Étant donné que cet identifiant de compte principal fédéré s'applique à l'ensemble de l'organisation et à tous les pools de personnel, une seule liaison de ce type peut exister par organisation. Pour configurer des sessions étendues pour plusieurs projets Looker (Google Cloud Core) dans des pools d'employés, incluez plusieurs blocs de portéerestricted_projectdans la listescopedAccessSettingsd'une même liaison. - Les niveaux d'accès (
access_levels,dry_run_access_levels) ne sont pas compatibles avec les liaisons de pools de personnel. - Les
sessionSettingsde premier niveau directement surGcpUserAccessBindingne sont pas compatibles avec les liaisons de pool d'employés. Les paramètres doivent être définis dansscopedAccessSettings.activeSettings.sessionSettings.
- Liaison unique à l'organisation : les liaisons de durée de session étendue pour les pools de personnel doivent cibler le compte principal "Tous les pools de personnel" de l'organisation (
Configurer le fournisseur de pool d'employés
Pour autoriser une durée de session étendue, votre fournisseur de pools d'employés doit être configuré pour prendre en charge l'actualisation des attributs en arrière-plan. Vous pouvez configurer le fournisseur pour qu'il utilise le protocole OIDC ou SAML.
Configurer un fournisseur OIDC
L'actualisation des attributs en arrière-plan pour les fournisseurs OIDC peut être gérée à l'aide de jetons d'actualisation (champ offline_access) ou du provisionnement SCIM. Si vous utilisez l'actualisation des attributs basée sur les jetons :
- Dans votre IdP externe, configurez une application OIDC avec le flux avec code d'autorisation et activez l'accès hors connexion pour qu'un jeton d'actualisation soit renvoyé.
- Dans Google Cloud, ajoutez
offline_accessaux niveaux d'accès supplémentaires de votre fournisseur de pools de personnel OIDC.
L'accès hors connexion doit être configuré sur tous les pools d'identités de personnel de votre organisation Google Cloud pour que la stratégie de durée de session étendue ait l'effet escompté.
gcloud
Si votre fournisseur dispose déjà de portées supplémentaires, incluez-les à côté de offline_access pour qu'elles ne soient pas écrasées :
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
Remplacez les éléments suivants :
PROVIDER_ID: nom de votre fournisseur de pools d'identités des employés.WORKFORCE_POOL_NAME: nom de votre pool d'identités de personnel.EXISTING_ADDITIONAL_SCOPES: tous les champs d'application supplémentaires séparés par une virgule et précédemment configurés sur le fournisseur. Si vous n'avez pas d'autres niveaux d'accès, omettez ce paramètre.
API REST
Envoyez une requête PATCH pour mettre à jour le fournisseur. Incluez tous les champs d'application supplémentaires existants à côté de offline_access :
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
Corps de la requête :
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
Remplacez les éléments suivants :
WORKFORCE_POOL_NAME: nom de votre pool d'identités de personnel.PROVIDER_ID: ID de votre fournisseur de pools d'identités des employés.
Configurer un fournisseur SAML
Pour les fournisseurs SAML, l'actualisation des attributs en arrière-plan nécessite le provisionnement SCIM :
- Configurez un locataire SCIM pour votre fournisseur de pools de personnel.
- Configurez le provisionnement des utilisateurs et des groupes depuis votre fournisseur d'identité SAML vers le point de terminaison SCIM.
Pour obtenir des instructions détaillées, consultez Provisionnement SCIM pour la fédération des identités des employés.
Exemple de configuration de règle pour Looker (Google Cloud Core)
Créez une ressource GcpUserAccessBinding qui attribue la règle de durée de session étendue au pool d'employés de votre organisation, en limitant le champ d'application de la règle au projet hébergeant votre instance Looker (Google Cloud Core).
gcloud
Définissez la règle dans un fichier YAML nommé esl-binding.yaml :
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
Créez la liaison d'accès :
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
Remplacez les éléments suivants :
ORG_ID: ID d'organisation Google Cloud (par exemple,123456789012).PROJECT_NUMBER: numéro du projet propriétaire de l'instance Looker (Google Cloud Core) cible (par exemple,987654321098). Seules les applications Looker (Google Cloud Core) appartenant à ce projet bénéficient de la durée de session étendue.sessionLength: durée de la session en secondes, suivie des. Par exemple,7776000sspécifie une session de 90 jours.- Définissez
sessionLengthEnabledsurtrue. sessionReauthMethod: définissez la valeur surLOGIN(ou laissez-la non définie).
API REST
Envoyez une requête POST à l'API Access Context Manager :
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
Corps de la requête JSON :
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Remplacez les éléments suivants :
ORG_ID: ID d'organisation Google Cloud (par exemple,123456789012).PROJECT_NUMBER: numéro du projet propriétaire de l'instance Looker (Google Cloud Core) cible (par exemple,987654321098). Seules les applications Looker (Google Cloud Core) appartenant à ce projet bénéficient de la durée de session étendue.sessionLength: durée de la session en secondes, suivie des. Par exemple,7776000sspécifie une session de 90 jours.- Définissez
sessionLengthEnabledsurtrue. sessionReauthMethod: définissez la valeur surLOGIN(ou laissez-la non définie).
Afficher et lister les liaisons
Étant donné que la liaison s'applique à tous les pools d'employés de l'organisation, il existe au maximum une liaison d'accès par organisation.
Lister les liaisons actives
Pour lister les liaisons d'accès aux pools de personnel dans votre organisation, utilisez le filtre principal:federatedPrincipal :
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
API REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
Obtenir les détails de la liaison
Pour afficher les détails d'une liaison d'accès à un pool de personnel spécifique :
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
Remplacez BINDING_NAME par le nom complet de la ressource de liaison (par exemple, organizations/123456789012/gcpUserAccessBindings/b1234567890).
API REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Remplacez les éléments suivants :
ORG_ID: ID d'organisation Google Cloud (par exemple,123456789012).BINDING_ID: ID de votre liaison d'accès (par exemple,b1234567890).
Mettre à jour une liaison d'accès
Vous pouvez mettre à jour une liaison d'accès à un pool d'identités de personnel existante pour modifier la durée des sessions, ajouter des niveaux d'accès à un projet ou en supprimer.
gcloud
Définissez la règle mise à jour dans un fichier YAML nommé
updated-esl-binding.yaml:scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGINAppliquez la règle mise à jour :
- Remplacer les paramètres d'accès limité : pour remplacer les portées de projet existantes par la configuration définie dans
updated-esl-binding.yaml:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- Ajouter aux paramètres existants : pour ajouter les niveaux d'accès au projet définis dans
updated-esl-binding.yamlaux niveaux d'accès au projet existants de la liaison sans les remplacer, transmettez l'indicateur--append:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- Remplacer les paramètres d'accès limité : pour remplacer les portées de projet existantes par la configuration définie dans
Remplacez les éléments suivants :
* BINDING_NAME : nom complet de la ressource de liaison (par exemple, organizations/123456789012/gcpUserAccessBindings/b1234567890).
* PROJECT_NUMBER : numéro du projet propriétaire de l'instance Looker (Google Cloud Core) cible.
* sessionLength : durée de la session mise à jour (par exemple, 2592000s pour 30 jours).
API REST
Envoyez une requête PATCH pour mettre à jour la liaison.
- Remplacer les paramètres d'accès limité : pour remplacer les niveaux d'accès au projet existants :
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- Ajouter aux paramètres existants : pour ajouter de nouveaux champs d'application de projet sans remplacer ceux qui existent déjà, définissez le paramètre de requête
append=true:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
Corps de la requête JSON :
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Remplacez les valeurs suivantes :
* ORG_ID : ID de votre organisation Google Cloud (par exemple, 123456789012).
* BINDING_ID : ID de votre liaison d'accès (par exemple, b1234567890).
* PROJECT_NUMBER : Numéro du projet propriétaire de l'instance Looker (Google Cloud Core) cible.
* sessionLength : durée de la session mise à jour (par exemple, 2592000s pour 30 jours).
Supprimer une liaison d'accès
Si vous supprimez l'association d'accès au pool d'employés, la durée de session étendue est désactivée pour tous les pools d'employés de votre organisation.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
Remplacez BINDING_NAME par le nom complet de la ressource de liaison.
API REST
Envoyez une requête DELETE pour supprimer la liaison :
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Remplacez les éléments suivants :
ORG_ID: ID de votre organisation Google Cloud .BINDING_ID: ID de la liaison d'accès à supprimer.