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 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.
  • 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 :

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 dans scopedAccessSettings à l'aide du champ d'application du client restricted_project spé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 sur true.
    • 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 sur LOGIN.
    • use_oidc_max_age : doit être non défini ou défini sur false.
    • max_inactivity : doit être non défini (ou la valeur par défaut 0s). Les délais d'inactivité des sessions ne sont pas acceptés pour les liaisons restricted_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_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 de personnel.
  • 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ée restricted_project dans la liste scopedAccessSettings d'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 sessionSettings de premier niveau directement sur GcpUserAccessBinding ne sont pas compatibles avec les liaisons de pool d'employés. Les paramètres doivent être définis dans scopedAccessSettings.activeSettings.sessionSettings.

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 :

  1. 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é.
  2. Dans Google Cloud, ajoutez offline_access aux 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 :

  1. Configurez un locataire SCIM pour votre fournisseur de pools de personnel.
  2. 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 de s. Par exemple, 7776000s spécifie une session de 90 jours.
  • Définissez sessionLengthEnabled sur true.
  • sessionReauthMethod : définissez la valeur sur LOGIN (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 de s. Par exemple, 7776000s spécifie une session de 90 jours.
  • Définissez sessionLengthEnabled sur true.
  • sessionReauthMethod : définissez la valeur sur LOGIN (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

  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é : 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.yaml aux 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
    

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.