Configurare i controlli della sessione per la riautenticazione

I controlli della sessione ti consentono di configurare la frequenza con cui gli utenti devono eseguire nuovamente l'autenticazione dopo aver ricevuto l'accesso e se è richiesto un accesso completo, solo con password o con chiave di sicurezza hardware.

Puoi applicare i controlli della sessione per:

  • Applicare la riautenticazione frequente per gli utenti con privilegi: richiedi agli utenti con privilegi elevati, come i proprietari dei progetti e gli amministratori della fatturazione, di eseguire nuovamente l'autenticazione con maggiore frequenza.
  • Configurare sessioni più lunghe per determinate applicazioni: consenti a determinate applicazioni, come le applicazioni AI basate sul contesto come Gemini, di avere durate di sessione più lunghe per preservare la finestra contestuale di grandi dimensioni necessaria per prestazioni ottimali.

Definire la durata della sessione e i metodi di riautenticazione

Puoi definire i controlli della sessione quando crei un binding di Gestore contesto accesso. Per ulteriori informazioni sui controlli della sessione, vedi Applicare i criteri ai gruppi di utenti utilizzando i binding di accesso.

gcloud

  • Impostare i controlli della sessione predefiniti per tutte le applicazioni

    Utilizza il flag --session-length per impostare la durata della sessione. Il valore deve essere 0s o compreso tra 1 e 24 ore. Specifica la durata in ore. Ad esempio, utilizza "12h" per impostare una sessione di 12 ore. Utilizza il flag --session-reauth-method per specificare il metodo di riautenticazione. Ad esempio, puoi impostare una durata della sessione di 3 ore (3h) e un metodo di riautenticazione LOGIN, PASSWORD o SECURITY_KEY.

    Questa impostazione verrà applicata a tutte le applicazioni, a meno che non venga sostituita da impostazioni specifiche dell'applicazione.

  • Impostare i controlli della sessione specifici dell'applicazione

    Definisci scopedAccessSettings in un file YAML per specificare i controlli della sessione per applicazioni specifiche utilizzando clientId. In questo modo puoi sostituire i controlli della sessione predefiniti per queste applicazioni. Puoi quindi passare il file YAML utilizzando il --binding-file flag.

API REST

Definisci i campi sessionLength e sessionReauthMethod all'interno dell'oggetto sessionSettings nel corpo JSON della richiesta POST per creare o aggiornare un binding GcpUserAccessBinding.

  • sessionLength è la durata della sessione in secondi. Il valore deve essere 0s o compreso tra 1 e 24 ore, formattato come numero di secondi seguito da s (ad esempio, 3600s, che corrisponde a una durata della sessione di 1 ora).
  • sessionReauthMethod può essere LOGIN, PASSWORD o SECURITY_KEY.
  • Utilizza scopedAccessSettings per definire i controlli della sessione specifici dell'applicazione. Per maggiori dettagli, vedi Definire le configurazioni per applicazioni specifiche.

Terraform

Nella risorsa di binding di accesso utente di Google Cloud di Terraform, inserisci l'argomento session_settings per configurare i controlli generali della durata della sessione che si applicano a tutto il traffico utente:

  • session_length: la durata della sessione in secondi. Ad esempio, 3600s imposta la durata della sessione su 1 ora. La s alla fine è obbligatoria.
  • session_length_enabled: imposta su false per disattivare le impostazioni della sessione specificate.
  • session_reauth_method: il tipo di challenge di autenticazione utilizzato per aggiornare le credenziali. Le opzioni sono LOGIN, PASSWORD o SECURITY_KEY.
  • use_oidc_max_age: un campo avanzato utilizzato per configurare se la sessione rispetta un parametro facoltativo di età massima OIDC, specificato se la credenziale di autenticazione è un token OAuth.

Quando definisci i controlli della sessione, viene utilizzato solo il binding di accesso creato più di recente che corrisponde alla richiesta per risolvere le impostazioni dei controlli della sessione.

Configurazione dei criteri di esempio

L'esempio seguente mostra come creare un Controllo sessione che richiede la riautenticazione ogni 18 ore con LOGIN e ogni due ore per un'applicazione specifica (SENSITIVE_APP_ID) con SECURITY_KEY.

Impostazioni predefinite

I flag --level, --session-length e --session-reauth-method nel comando Google Cloud CLI (o i campi corrispondenti nel corpo JSON per la chiamata API) impostano il comportamento predefinito per tutte le applicazioni non definite esplicitamente in scopedAccessSettings.

Impostazioni specifiche dell'applicazione

La sezione scopedAccessSettings nel file YAML (o nel corpo JSON) ti consente di sostituire le impostazioni predefinite per applicazioni specifiche. Nell'esempio, impostiamo un requisito di riautenticazione di due ore con SECURITY_KEY per l'applicazione con l'ID client SENSITIVE_APP_ID.

Per escludere determinate applicazioni dal controllo sessione, imposta il sessionLength campo su 0s o sessionLengthEnabled su false. Il metodo sessionReauthMethod verrà quindi ignorato.

gcloud

L'esempio seguente mostra la configurazione delle impostazioni della sessione:

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

Crea il binding di accesso:

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=SESSION_LENGTH \
    --session-reauth-method LOGIN

Sostituisci quanto segue:

  • ORG_ID: l'ID dell'organizzazione
  • GROUP_ID: la chiave del gruppo
  • BINDING_FILE_PATH: il percorso del file di binding
  • DEFAULT_ACCESS_LEVEL: il livello di accesso predefinito
  • SESSION_LENGTH: la durata della sessione, ad esempio 18h

API REST

Un esempio di corpo JSON della richiesta API:

{
  "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
          }
        ]
      }
    }
  ]

Crea la richiesta POST nel seguente formato:

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

Sostituisci ORG_ID con l'ID dell'organizzazione.

Terraform

Per specificare una durata della sessione per le richieste di accesso degli utenti provenienti da "Chiave del gruppo" in tutte le applicazioni:

    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 = "3600s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }

Per specificare una durata della sessione per le richieste degli utenti provenienti da un gruppo Google specifico utilizzando un'app specifica, ad esempio la Google Cloud console, inserisci l'argomento scoped_access_settings appropriato con un argomento session_settings in active_settings. I sottoargomenti all'interno di session_settings sono identici all'argomento di primo livello.

    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 = "3600s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

Configurazione dei criteri di esempio per le Google Cloud applicazioni

Puoi configurare i controlli di riautenticazione specifici dell'applicazione per Google Cloud applicazioni, ad esempio richiedendo SECURITY_KEY per Google Cloud SDK e LOGIN per la Google Cloud console. L'esempio seguente mostra come creare un controllo sessione che richiede la riautenticazione ogni ora per Google Cloud SDK con SECURITY_KEY e ogni 4 ore per la Google Cloud console con LOGIN.

La sezione scopedAccessSettings nel file YAML (o nel corpo JSON) ti consente di sostituire le impostazioni predefinite per applicazioni specifiche. In questo esempio, impostiamo un requisito di riautenticazione di un'ora con SECURITY_KEY per Google Cloud SDK e un requisito di riautenticazione di quattro ore con LOGIN per la console utilizzando il campo name per identificare queste applicazioni. Google Cloud

Per escludere determinate applicazioni dal Controllo sessione, imposta il sessionLength campo su 0s o sessionLengthEnabled su false. Il metodo sessionReauthMethod verrà quindi ignorato.

gcloud

L'esempio seguente mostra la configurazione delle impostazioni della sessione:

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

Crea il binding di accesso:

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

Sostituisci quanto segue:

  • ORG_ID: l'ID dell'organizzazione
  • GROUP_ID: la chiave del gruppo
  • BINDING_FILE_PATH: il percorso del file di binding

API REST

Un esempio di corpo JSON della richiesta 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
          }
      }
    }
  ]
}

Crea la richiesta POST nel seguente formato:

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

Sostituisci ORG_ID con l'ID dell'organizzazione.

Terraform

Per specificare le impostazioni della durata della sessione per Google Cloud SDK e la Google Cloud console, inserisci l'argomento scoped_access_settings appropriato:

    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 = "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
          }
        }
      }
    }