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 de déterminer 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 souvent.
  • Configurer des sessions plus longues pour certaines applications : autorisez certaines applications, telles que les applications d'IA contextuelles comme Gemini, à avoir des durées de session plus longues pour préserver la grande fenêtre de contexte requise pour des performances optimales.

Définir la durée des sessions 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 à des groupes d'utilisateurs à l'aide de liaisons d'accès.

gcloud

  • Définir des commandes 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 peut être comprise entre 0 et 24 heures. Spécifiez la durée au format de durée ISO 8601. Par exemple, utilisez "12H30M5S" pour définir une session de 12 heures, 30 minutes et 5 secondes. Utilisez le flag --session-reauth-method pour spécifier la méthode de réauthentification. Par exemple, vous pouvez définir une durée de session de 30 minutes (30m) et une méthode de réauthentification LOGIN, PASSWORD ou SECURITY_KEY.

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

  • Définir des contrôles de session spécifiques aux applications

    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

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 correspond à la durée de la session (entre 0 et 24 heures). La valeur doit être une chaîne de caractères composée d'un entier compris entre 0 et 86 400, suivi immédiatement de la lettre "s".
  • Il peut s'agir de sessionReauthMethod, LOGIN, PASSWORD ou SECURITY_KEY.
  • Utilisez scopedAccessSettings pour définir des commandes de session spécifiques à l'application. Pour en savoir plus, consultez Définir des configurations pour des applications spécifiques.

Terraform

Dans la ressource Terraform Google Cloud User Access Binding, renseignez l'argument session_settings pour configurer les contrôles généraux de la durée de session qui s'appliquent à tout le trafic utilisateur :

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

Voici les principaux points à prendre en compte lorsque vous définissez des contrôles de session :

  • Seule la liaison d'accès la plus récente correspondant à 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 indicateurs --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 aux applications

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.

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

Configuration des paramètres :

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 \
    --level DEFAULT_ACCESS_LEVEL
    --session-length 18h \
    --session-reauth-method LOGIN

API

Corps JSON :

{
  "groupKey": "GROUP_ID",
  "accessLevels": [
    "accessPolicies/POLICY_ID/accessLevels/DEFAULT_ACCESS_LEVEL"
  ],
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"
        ],
        "sessionSettings": [
          {
            "sessionLength": "2h",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
        ]
      }
    }
  ]

Requête POST :

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

Terraform

Pour spécifier une durée de session pour les demandes d'accès des utilisateurs provenant de "Clé de groupe" dans toutes les applications :

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      session_settings {
        session_length = "1800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }

Pour spécifier une durée de session pour les requêtes des utilisateurs provenant d'un groupe Google spécifique à l'aide d'une application spécifique, telle que la console Google Cloud , renseignez l'argument scoped_access_settings approprié avec un argument session_settings dans active_settings. Les sous-arguments de session_settings sont identiques à l'argument de premier niveau.

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "1800s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }