Configurer la durée de session étendue pour la fédération des identités des employés

Par défaut, les sessions de fédération des identités des employés 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 Looker (Google Cloud Core) et l'application mobile Gemini Enterprise :

  • Looker (Google Cloud Core) : configuré à l'aide de champs d'application de projet (restricted_project). Les sessions étendues permettent aux utilisateurs de personnel de maintenir une connexion ininterrompue à Looker (Google Cloud Core) sans avoir à se réauthentifier quotidiennement auprès de votre fournisseur d'identité externe. L'interaction de l'utilisateur dans Looker (Google Cloud Core) reste régie par la configuration de la durée de session de Looker (Google Cloud Core).

  • Application mobile Gemini Enterprise : configurée à l'aide de champs d'application (restricted_client_application). Les sessions étendues permettent aux utilisateurs de personnel de maintenir une connexion ininterrompue à l'application mobile Gemini Enterprise sans avoir à se réauthentifier quotidiennement auprès de votre fournisseur d'identité externe.

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é 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 commandes limitées au projet (pour Looker (Google Cloud Core)) et des commandes limitées à l'application (pour l'application mobile Gemini Enterprise), comment configurer votre fournisseur de pools d'employés et comment gérer les liaisons actives.


Présentation

La fédération des identités des employés utilise des liaisons d'accès Access Context Manager Google Cloud pour configurer la durée de session étendue :

  • Google Cloud Liaison d'accès : les administrateurs définissent une règle de durée de session à l'aide d'Access Context Manager qui s'applique à l'ensemble de l'organisation dans tous les pools d'employés de votre organisation. Les règles accordent des sessions étendues d'une durée maximale de 90 jours à l'aide de l'une des méthodes suivantes :

    • Champ d'application du projet (restricted_project) : applique des sessions étendues aux instances Looker (Google Cloud Core) dans le projet désigné.

    • Champ d'application de l'application (restricted_client_application) : applique des sessions étendues à l'application mobile Gemini Enterprise.

  • 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 aux groupes à partir de votre fournisseur d'identité 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.

  • 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éprovisionné 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 la durée de session étendue, assurez-vous de disposer des autorisations Identity and Access Management requises et que les API sont activées :

Rôles et autorisations requis

Pour obtenir les autorisations nécessaires pour configurer la durée de session étendue, demandez à votre administrateur de vous accorder les rôles IAM suivants :

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 la durée de session étendue, consultez les exigences et limites suivantes :

  • Applications compatibles : la durée de session étendue s'applique exclusivement aux éléments suivants :
    • Looker (Google Cloud Core) (configuré à l'aide de champs d'application de projet)
    • Application mobile Gemini Enterprise (configurée à l'aide de champs d'application)
  • Exigence de liste d'autorisation pour l'application mobile Gemini Enterprise : la durée de session étendue pour l'application mobile Gemini Enterprise n'est disponible que sur liste d'autorisation. Pour demander l'accès à la liste d'autorisation pendant la version Preview, contactez votre Google Cloud point de contact pour l'assistance.
  • Types de champs d'application : les paramètres de session doivent être configurés dans scopedAccessSettings à l'aide de l'un des champs d'application client suivants :
    • Champ d'application du projet (restricted_project) : spécifie le Google Cloud projet propriétaire de l'instance Looker (Google Cloud Core) (projects/{PROJECT_NUMBER}). Seules les instances Looker (Google Cloud Core) appartenant au projet désigné sont concernées.
    • Champ d'application de l'application (restricted_client_application) : spécifie l'application par son nom d'affichage canonique name.
    • Pour configurer des champs d'application pour l'application mobile Gemini Enterprise, vous devez utiliser explicitement l'un des noms d'application exacts suivants, ou les deux :
      • "Gemini Enterprise mobile Android"
      • "Gemini Enterprise mobile IOS"
    • La définition de champs d'application par ID client OAuth (clientId) n'est pas compatible avec les liaisons de fédération des identités des employés et sera rejetée. Vous devez identifier l'application à l'aide du champ name.
  • Plage de durée de session : la durée de session doit être comprise entre un minimum de 1 heure (3600s) et un maximum de 90 jours (7776000s).
  • Exigences concernant les paramètres de session:
    • session_length_enabled : doit être défini sur true.
    • session_length : durée requise entre 1 heure (3600s) et 90 jours (7776000s).
    • session_reauth_method : doit être non défini ou défini sur LOGIN.
    • use_oidc_max_age : doit être non défini ou défini sur false.
    • max_inactivity : doit être non défini (ou valeur par défaut 0s). Les délais d'inactivité de session ne sont pas compatibles avec les liaisons restricted_project et restricted_client_application.
  • Fournisseurs d'identité compatibles:
    • OIDC : nécessite un fournisseur OIDC configuré avec le flux avec code d'autorisation et le champ d'application offline_access pour é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 d'employés.
  • Seuil d'obsolescence des attributs : un seuil d'obsolescence fixe de 24 heures est appliqué. Si Google Cloud ne peut pas actualiser les attributs utilisateur à partir de votre fournisseur d'identité dans les 24 heures, la session est invalidée et l'utilisateur doit se réauthentifier.
  • Contraintes Access Context Manager:
    • Liaison organisationnelle unique : les liaisons de durée de session étendue pour les pools d'employés doivent cibler le compte principal "Tous les pools d'employés" 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 dans tous les pools d'employés de votre organisation, une seule liaison de ce type peut exister par organisation. Pour configurer des sessions étendues pour plusieurs projets Looker (Google Cloud Core), l'application mobile Gemini Enterprise ou une combinaison des deux, incluez plusieurs blocs de champs d'application restricted_project et restricted_client_application dans la liste scopedAccessSettings de la liaison unique.
    • Les niveaux d'accès (access_levels, dry_run_access_levels) ne sont pas compatibles avec les liaisons de pools d'employés.
    • Les sessionSettings de premier niveau directement sur le GcpUserAccessBinding ne sont pas compatibles avec les liaisons de pools d'employés. Les paramètres doivent être définis dans scopedAccessSettings.activeSettings.sessionSettings.

Configurer le fournisseur de pools d'employés

Pour autoriser la 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 d'application offline_access) ou du provisionnement SCIM. Si vous utilisez l'actualisation des attributs basée sur des jetons :

  1. Dans votre fournisseur d'identité 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é.
  2. Dans Google Cloud, ajoutez offline_access aux champs d'application supplémentaires de votre fournisseur de pools d'employés OIDC.

L'accès hors connexion doit être configuré sur tous les pools d'identités des employés de votre Google Cloud organisation pour que la règle de durée de session étendue ait l'effet escompté.

gcloud

Si votre fournisseur dispose déjà de champs d'application supplémentaires, incluez-les avec offline_access pour qu'ils ne soient pas écrasés :

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 des employés.
  • EXISTING_ADDITIONAL_SCOPES : tous les champs d'application supplémentaires précédemment configurés sur le fournisseur, séparés par une virgule. Si vous n'avez pas de champs d'application supplémentaires existants, 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 avec 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 des employés.
  • 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 :

  1. Configurez un locataire SCIM pour votre fournisseur de pools d'employés.
  2. Configurez le provisionnement des utilisateurs et des groupes à partir de 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 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 de votre Google Cloud organisation (par exemple, 123456789012).
  • PROJECT_NUMBER : numéro de 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 de s. Par exemple, 7776000s spécifie une session de 90 jours.
  • sessionLengthEnabled : défini sur true.
  • sessionReauthMethod : défini sur LOGIN (ou non défini).

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 de votre Google Cloud organisation (par exemple, 123456789012).
  • PROJECT_NUMBER : numéro de 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 de s. Par exemple, 7776000s spécifie une session de 90 jours.
  • sessionLengthEnabled : défini sur true.
  • sessionReauthMethod : défini sur LOGIN (ou non défini).

Exemple de configuration de règle pour l'application mobile Gemini Enterprise

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 la règle à l'application mobile Gemini Enterprise à l'aide du champ d'application restricted_client_application. Vous devez identifier les applications à l'aide de leurs noms d'affichage canoniques exacts : "Gemini Enterprise mobile Android" et "Gemini Enterprise mobile IOS".

gcloud

Définissez la règle dans un fichier YAML nommé esl-app-binding.yaml :

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: "Gemini Enterprise mobile Android"
  activeSettings:
    sessionSettings:
      sessionLength: 7776000s
      sessionLengthEnabled: true
      sessionReauthMethod: LOGIN
- scope:
    clientScope:
      restrictedClientApplication:
        name: "Gemini Enterprise mobile IOS"
  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-app-binding.yaml"

Remplacez les éléments suivants :

  • ORG_ID : ID de votre Google Cloud organisation (par exemple, 123456789012).
  • name : doit être "Gemini Enterprise mobile Android" ou "Gemini Enterprise mobile IOS". L'identification des applications par ID client OAuth (clientId) n'est pas compatible avec les pools d'employés.
  • sessionLength : durée de la session en secondes, suivie de s (entre 3600s et 7776000s).
  • sessionLengthEnabled : défini sur true.
  • sessionReauthMethod : défini sur LOGIN (ou non défini).

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": {
          "restrictedClientApplication": {
            "name": "Gemini Enterprise mobile Android"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7776000s",
          "sessionLengthEnabled": true,
          "sessionReauthMethod": "LOGIN"
        }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Gemini Enterprise mobile IOS"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7776000s",
          "sessionLengthEnabled": true,
          "sessionReauthMethod": "LOGIN"
        }
      }
    }
  ]
}

Remplacez les éléments suivants :

  • ORG_ID : ID de votre Google Cloud organisation (par exemple, 123456789012).
  • name : doit être "Gemini Enterprise mobile Android" ou "Gemini Enterprise mobile IOS". L'identification des applications par ID client OAuth (clientId) n'est pas compatible avec les pools d'employés.
  • sessionLength : durée de la session en secondes, suivie de s. Par exemple, 7776000s spécifie une session de 90 jours.
  • sessionLengthEnabled : défini sur true.
  • sessionReauthMethod : défini sur LOGIN (ou non défini).

Afficher et répertorier 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.

Répertorier les liaisons actives

Pour répertorier la liaison d'accès au pool d'employés 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 d'employés spécifique :

gcloud

gcloud access-context-manager cloud-bindings describe \
    --binding=BINDING_NAME

Remplacez BINDING_NAME par le nom complet de la ressource de la 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 de votre Google Cloud organisation (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'employés existant pour modifier les durées de session, ajouter de nouveaux champs d'application de projet ou d'application, ou supprimer des champs d'application existants.

gcloud

  1. 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: LOGIN
    
  2. Appliquez la règle mise à jour :

    • Remplacer les paramètres d'accès limités : pour écraser les champs d'application existants avec 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 champs d'application définis dans updated-esl-binding.yaml aux champs d'application existants de la liaison sans les écraser, transmettez l'indicateur --append :
    gcloud access-context-manager cloud-bindings update \
        --binding=BINDING_NAME \
        --binding-file="updated-esl-binding.yaml" \
        --append
    

Remplacez les éléments suivants : * BINDING_NAME : nom complet de la ressource de la liaison (par exemple, organizations/123456789012/gcpUserAccessBindings/b1234567890). * PROJECT_NUMBER : numéro de projet propriétaire de l'instance Looker (Google Cloud Core) cible. * sessionLength : durée de 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és : pour écraser les champs d'application 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 sans écraser les champs d'application existants, 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 é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). * PROJECT_NUMBER : numéro de projet propriétaire de l'instance Looker (Google Cloud Core) cible. * sessionLength : durée de session mise à jour (par exemple, 2592000s pour 30 jours).


Supprimer une liaison d'accès

Si vous supprimez la liaison 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 la 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 Google Cloud organisation.
  • BINDING_ID : ID de la liaison d'accès à supprimer.