Configurer les contrôles de session pour la réauthentification

Les contrôles de session vous permettent de configurer la fréquence à laquelle les utilisateurs doivent se réauthentifier après avoir obtenu l'accès, et si une connexion complète, un mot de passe uniquement ou une clé de sécurité matérielle sont requis.

Vous pouvez appliquer des contrôles de session pour effectuer les opérations suivantes :

  • Appliquer une réauthentification fréquente pour les utilisateurs privilégiés : exigez que les utilisateurs disposant de droits élevés, tels que les propriétaires de projets et les administrateurs de facturation, se réauthentifient plus fréquemment.
  • Configurer des sessions plus longues pour certaines applications : autorisez les applications compatibles, telles que la console Google Cloud , le Google Cloud SDK ou des applications OAuth spécifiques, à avoir des durées de session plus longues afin de préserver la grande fenêtre de contexte requise pour des performances optimales.

Définir la durée de session et les méthodes de réauthentification

Vous pouvez définir des contrôles de session lorsque vous créez une liaison Access Context Manager. Pour en savoir plus sur les contrôles de session, consultez Appliquer des règles aux groupes d'utilisateurs à l'aide de liaisons d'accès.

gcloud

  • Définir des contrôles de session par défaut pour toutes les applications

    Utilisez l'option --session-length pour définir la durée de la session. La valeur doit être 0s, ou comprise entre 1 heure et 24 heures. Spécifiez la durée en heures. Par exemple, utilisez "12h" pour définir une session de 12 heures. Utilisez l'option --session-reauth-method pour spécifier la méthode de réauthentification. Par exemple, vous pouvez définir une durée de session de trois heures (3h) et une méthode de réauthentification LOGIN, PASSWORD ou SECURITY_KEY.

    Ce paramètre sera appliqué à toutes les applications, sauf s'il est remplacé par des paramètres spécifiques à l'application.

  • Définir des contrôles de session spécifiques à une application

    Définissez scopedAccessSettings dans un fichier YAML pour spécifier les contrôles de session pour des applications spécifiques à l'aide de clientId. Cela vous permet de remplacer les contrôles de session par défaut pour ces applications. Vous pouvez ensuite transmettre le fichier YAML à l'aide de --binding-file flag.

API REST

Définissez les champs sessionLength et sessionReauthMethod dans l'objet sessionSettings du corps JSON de votre requête POST pour créer ou mettre à jour une liaison GcpUserAccessBinding.

  • sessionLength est la durée de la session en secondes, formatée en nombre de secondes suivi de s (par exemple, 3600s). La valeur doit être 0s ou comprise entre 3600s (1 heure) et 86400s (24 heures). Si elle est définie sur 0s, sessionLengthEnabled doit être défini sur false ou ne pas être défini. Vous ne pouvez pas définir sessionLength sur 0s et sessionLengthEnabled sur true.
  • sessionReauthMethod peut être LOGIN, PASSWORD ou SECURITY_KEY.
  • Utilisez scopedAccessSettings pour définir des contrôles de session spécifiques à l'application. Pour en savoir plus, consultez Définir des configurations pour des applications spécifiques.

Terraform

Dans la ressource de liaison d'accès utilisateur Google Cloud Terraform, définissez l'argument session_settings pour configurer les contrôles généraux de durée de session qui s'appliquent à l'ensemble du trafic utilisateur :

  • session_length : durée de la session en secondes. Par exemple, 3600s définit la durée de la session sur une heure. Le s à la fin est obligatoire.
  • session_length_enabled : définissez cette option sur "false" pour désactiver les paramètres de session spécifiés.
  • session_reauth_method : type de question d'authentification utilisé pour actualiser les identifiants. Les options sont LOGIN, PASSWORD ou SECURITY_KEY.
  • use_oidc_max_age : champ avancé permettant de configurer si la session respecte un paramètre d'âge maximal OIDC facultatif, qui est spécifié si l'identifiant d'authentification est un jeton OAuth.

Lorsque vous définissez des contrôles de session, seule la liaison d'accès la plus récemment créée qui correspond à la requête est utilisée lors de la résolution des paramètres de contrôle de session.

Exemple de configuration de règle

L'exemple suivant montre comment créer un contrôle de session qui nécessite une réauthentification toutes les 18 heures avec LOGIN et toutes les deux heures pour une application spécifique (SENSITIVE_APP_ID) avec SECURITY_KEY.

Paramètres par défaut

Les options --level, --session-length et --session-reauth-method de la commande Google Cloud CLI (ou les champs correspondants dans le corps JSON de l'appel d'API) définissent le comportement par défaut de toutes les applications qui ne sont pas explicitement définies dans scopedAccessSettings.

Paramètres spécifiques à l'application

La section scopedAccessSettings du fichier YAML (ou du corps JSON) vous permet de remplacer les paramètres par défaut pour des applications spécifiques. Dans l'exemple, nous définissons une exigence de réauthentification de deux heures avec SECURITY_KEY pour l'application avec l'ID client SENSITIVE_APP_ID.

Les paramètres spécifiques à l'application dans scopedAccessSettings remplacent complètement les contrôles de session par défaut (globaux). Si un paramètre limité est défini pour une application, les contrôles de session par défaut ne s'appliquent pas à cette application.

Pour exempter certaines applications du contrôle de session lorsque les contrôles globaux sont actifs, vous devez les ajouter explicitement à scopedAccessSettings et définir le champ sessionLength sur 0s et sessionLengthEnabled sur false.

gcloud

L'exemple suivant montre la configuration des paramètres de session :

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        clientId: SENSITIVE_APP_ID
  activeSettings:
    sessionSettings:
      sessionLength: 7200s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true

Créez la liaison d'accès :

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH \
    --session-length=SESSION_LENGTH \
    --session-reauth-method LOGIN

Remplacez les éléments suivants :

  • ORG_ID : ID de l'organisation Google Cloud

  • GROUP_ID : ID unique du groupe Cloud Identity

  • BINDING_FILE_PATH : chemin d'accès au fichier de liaison

  • SESSION_LENGTH : durée de la session, par exemple 18h

Pour obtenir l'ID de groupe unique, exécutez la commande suivante :

gcloud identity groups describe GROUP_EMAIL

Remplacez GROUP_EMAIL par l'adresse e-mail de votre groupe. L'ID de groupe unique est la valeur renvoyée après groups/ dans le champ name du résultat. Par exemple, l'ID de groupe unique dans groups/01gf8i8311xalqg est 01gf8i8311xalqg.

API REST

Exemple de corps JSON de la requête API :

{
  "groupKey": "GROUP_ID",
  "sessionSettings": {
    "sessionLength": "64800s",
    "sessionReauthMethod": "LOGIN",
    "sessionLengthEnabled": true
  },
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7200s",
          "sessionReauthMethod": "SECURITY_KEY",
          "sessionLengthEnabled": true
        }
      }
    }
  ]
}

Créez la requête POST au format suivant :

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

Remplacez ORG_ID par l'ID de l'organisation Google Cloud .

Terraform

Pour spécifier des contrôles de session qui s'appliquent de manière globale et à des applications spécifiques, définissez les arguments session_settings et scoped_access_settings :

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "ORG_ID"
      group_key = "GROUP_ID"
      session_settings {
        session_length = "64800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              client_id = "CLIENT_ID"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "7200s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
    }

Remplacez les éléments suivants :

  • ORG_ID : ID numérique de l'organisation Google Cloud.

  • GROUP_ID : ID brut du groupe de l'API Cloud Identity ou Google Workspace Directory. N'utilisez pas d'adresse e-mail de groupe ni de nom de ressource "groups/...". Transmettez plutôt l'ID brut ou utilisez trimprefix(google_cloud_identity_group.example.id, "groups/").

  • CLIENT_ID : ID client OAuth 2.0 de l'application.

Exemple de configuration de règle pour les applications Google Cloud

Vous pouvez configurer des contrôles de réauthentification spécifiques à une application pour Google Cloud applications, par exemple en exigeant SECURITY_KEY pour Google Cloud SDK et LOGIN pour la console Google Cloud . L'exemple suivant montre comment créer un contrôle de session qui nécessite une réauthentification toutes les heures pour Google Cloud SDK avec SECURITY_KEY, et toutes les quatre heures pour la console Google Cloud avec LOGIN.

La section scopedAccessSettings du fichier YAML (ou du corps JSON) vous permet de remplacer les paramètres par défaut pour des applications spécifiques. Dans cet exemple, nous définissons une exigence de réauthentification d'une heure avec SECURITY_KEY pour Google Cloud SDK et une exigence de réauthentification de quatre heures avec LOGIN pour la console Google Cloud à l'aide du champ name pour identifier ces applications.

Pour exempter certaines applications du contrôle de session, définissez le champ sessionLength sur 0s ou sessionLengthEnabled sur false. La méthode sessionReauthMethod sera alors ignorée.

gcloud

L'exemple suivant montre la configuration des paramètres de session :

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 3600s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 14400s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: true

Créez la liaison d'accès :

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

Remplacez les éléments suivants :

  • ORG_ID : ID de l'organisation Google Cloud

  • GROUP_ID : ID unique du groupe Cloud Identity

  • BINDING_FILE_PATH : chemin d'accès au fichier de liaison

API REST

Exemple de corps JSON de la requête API :

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "3600s",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "14400s",
            "sessionReauthMethod": "LOGIN",
            "sessionLengthEnabled": true
          }
      }
    }
  ]
}

Créez la requête POST au format suivant :

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

Remplacez ORG_ID par l'ID de l'organisation Google Cloud .

Terraform

Pour spécifier les paramètres de durée de session pour Google Cloud SDK et la console Google Cloud , définissez l'argument scoped_access_settings approprié :

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "ORG_ID"
      group_key = "GROUP_ID"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "3600s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "14400s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

Remplacez les éléments suivants :

  • ORG_ID : ID numérique de l'organisation Google Cloud.

  • GROUP_ID : ID brut du groupe de l'API Cloud Identity ou Google Workspace Directory. N'utilisez pas d'adresse e-mail de groupe ni de nom de ressource "groups/...". Transmettez plutôt l'ID brut ou utilisez trimprefix(google_cloud_identity_group.example.id, "groups/").

Remplacer la durée de session par défaut de 16 heures pour les applications Google Cloud

À partir de juin 2026, une durée de session par défaut de 16 heures a été introduite pour un sous-ensemble d'organisations Google Cloud . Cette règle par défaut n'est pas visible dans la console d'administration Google, et les organisations Google Cloud concernées doivent utiliser l'API Access Context Manager pour la remplacer pour leurs utilisateurs.

Pour ignorer cette règle par défaut et exempter ces applications du contrôle de session (ce qui rend la durée de session infinie), vous pouvez créer une liaison cloud avec scopedAccessSettings, où sessionLengthEnabled est défini sur false pour les applications Google Cloud SDK et Google Cloud console ("Cloud Console").

gcloud

L'exemple suivant montre la configuration YAML permettant de désactiver les contrôles de session pour ces applications :

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false

Créez ou mettez à jour la liaison d'accès à l'aide de ce fichier :

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

Remplacez les éléments suivants :

  • ORG_ID : ID de l'organisation Google Cloud

  • GROUP_ID : ID unique du groupe Cloud Identity (par exemple, l'ID d'un groupe contenant tous les utilisateurs auxquels vous souhaitez appliquer ce remplacement)

  • BINDING_FILE_PATH : chemin d'accès au fichier de liaison

API REST

Exemple de corps JSON de la requête API :

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    }
  ]
}

Créez la requête POST au format suivant :

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

Remplacez ORG_ID par l'ID de l'organisation Google Cloud .

Terraform

Pour spécifier que les contrôles de session sont désactivés pour Google Cloud SDK et la console Google Cloud , définissez l'argument scoped_access_settings approprié avec session_length_enabled = false :

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "ORG_ID"
      group_key = "GROUP_ID"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

Remplacez les éléments suivants :

  • ORG_ID : ID numérique de l'organisation Google Cloud.

  • GROUP_ID : ID brut du groupe de l'API Cloud Identity ou Google Workspace Directory. N'utilisez pas d'adresse e-mail de groupe ni de nom de ressource "groups/...". Transmettez plutôt l'ID brut ou utilisez trimprefix(google_cloud_identity_group.example.id, "groups/").