Per impostazione predefinita, le sessioni della federazione delle identità per la forza lavoro hanno una durata massima di 12 ore. La durata estesa della sessione consente alle organizzazioni di configurare sessioni di lunga durata fino a 90 giorni per Looker (Google Cloud core) e l'app mobile Gemini Enterprise:
Looker (Google Cloud core): configurato utilizzando gli ambiti del progetto (
restricted_project). Le sessioni estese consentono agli utenti della forza lavoro di mantenere una connessione ininterrotta a Looker (Google Cloud core) senza richiedere la riautenticazione giornaliera rispetto al provider di identità esterno (IdP). L'interazione dell'utente all'interno di Looker (Google Cloud core) rimane regolata dalla configurazione della durata della sessione di Looker (Google Cloud core).L'app mobile Gemini Enterprise: configurata utilizzando gli ambiti dell'applicazione (
restricted_client_application). Le sessioni estese consentono agli utenti della forza lavoro di mantenere una connessione ininterrotta all'app mobile Gemini Enterprise senza richiedere la riautenticazione giornaliera rispetto al provider di identità esterno (IdP).
Per mantenere la sicurezza durante le sessioni estese, Google Cloud sincronizza periodicamente gli attributi utente e le iscrizioni ai gruppi direttamente dal provider di identità esterna (IdP) in background.
Questo documento descrive come definire le policy per la durata estesa della sessione utilizzando l'API Gestore contesto accesso con controlli con ambito del progetto (per Looker (Google Cloud core)) e controlli con ambito dell'applicazione (per l'app mobile Gemini Enterprise), configurare il provider del pool di forza lavoro e gestire le associazioni attive.
Panoramica
La federazione delle identità per la forza lavoro utilizza le associazioni di accesso di Gestore contesto accesso Google Cloud per configurare la durata estesa della sessione:
Google Cloud associazione di accesso: gli amministratori definiscono una policy per la durata della sessione utilizzando Gestore contesto accesso che si applica a livello di organizzazione a tutti i pool di forza lavoro dell'organizzazione. Le policy concedono sessioni estese fino a 90 giorni utilizzando una delle seguenti opzioni:
Ambito del progetto (
restricted_project): applica le sessioni estese alle istanze di Looker (Google Cloud core) nel progetto designato.Ambito dell'applicazione (
restricted_client_application): applica le sessioni estese all'app mobile Gemini Enterprise.
Sincronizzazione degli attributi in background:
OIDC: supportato utilizzando un flusso del codice di autorizzazione OIDC con l'ambito
offline_access(utilizzando i token di aggiornamento per aggiornare periodicamente gli attributi utente e le iscrizioni ai gruppi dall'IdP esterno in background) o tramite il provisioning SCIM.SAML: per i provider SAML, gli attributi utente e le iscrizioni ai gruppi vengono mantenuti aggiornati utilizzando il provisioning SCIM.
Protezione dalla obsolescenza: se gli attributi utente non possono essere aggiornati dall'IdP esterno entro 24 ore (ad esempio, se l'utente viene deprovisionato o le credenziali vengono revocate nell'IdP), Google Cloud la sessione viene terminata.
Prima di iniziare
Prima di configurare la durata estesa della sessione, assicurati di disporre delle autorizzazioni Identity and Access Management richieste e che le API siano abilitate:
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per configurare la durata estesa della sessione, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Configura i provider del pool di identità della forza lavoro: amministratore del pool di forza lavoro (
roles/iam.workforcePoolAdmin) nel pool di forza lavoro o nell'organizzazione. - Gestisci le associazioni di accesso al cloud di Gestore contesto accesso: amministratore delle associazioni di accesso al cloud (
roles/accesscontextmanager.gcpAccessAdmin) a livello di organizzazione. Questo ruolo fornisce le autorizzazioni necessarie per creare, visualizzare, aggiornare ed eliminare le associazioni di accesso di Gestore contesto accesso.
Abilita API
Abilita le API Gestore contesto accesso e IAM nel tuo progetto:
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
Limitazioni e requisiti
Prima di configurare la durata estesa della sessione, esamina i seguenti requisiti e limitazioni:
- Applicazioni supportate: la durata estesa della sessione si applica esclusivamente a:
- Looker (Google Cloud core) (configurato utilizzando gli ambiti del progetto)
- L'app mobile Gemini Enterprise (configurata utilizzando gli ambiti dell'applicazione)
- Requisito della lista consentita per l'app mobile Gemini Enterprise: la durata estesa della sessione per l'app mobile Gemini Enterprise è disponibile solo tramite lista consentita. Per richiedere l'accesso alla lista consentita durante l'anteprima, contatta il tuo Google Cloud punto di contatto (POC) dell'assistenza.
- Tipi di ambito: le impostazioni della sessione devono essere configurate all'interno di
scopedAccessSettingsutilizzando uno dei seguenti ambiti client:- Ambito del progetto (
restricted_project): specifica il Google Cloud progetto che possiede l'istanza di Looker (Google Cloud core) (projects/{PROJECT_NUMBER}). Vengono interessate solo le istanze di Looker (Google Cloud core) di proprietà del progetto designato. - Ambito dell'applicazione (
restricted_client_application): specifica l'applicazione in base al relativonamedi visualizzazione canonico. - Per configurare gli ambiti dell'applicazione per l'app mobile Gemini Enterprise, devi utilizzare esplicitamente uno o entrambi i seguenti nomi di applicazione esatti:
"Gemini Enterprise mobile Android""Gemini Enterprise mobile IOS"
- L'ambito per ID client OAuth (
clientId) non è supportato per le associazioni della federazione delle identità per la forza lavoro e verrà rifiutato. Devi identificare l'applicazione utilizzando il camponame.
- Ambito del progetto (
- Intervallo di durata della sessione: la durata della sessione deve essere compresa tra un minimo di 1 ora (
3600s) e un massimo di 90 giorni (7776000s). - Requisiti dei parametri delle impostazioni della sessione:
session_length_enabled: deve essere impostato sutrue.session_length: durata richiesta compresa tra 1 ora (3600s) e 90 giorni (7776000s).session_reauth_method: deve essere non impostato o impostato suLOGIN.use_oidc_max_age: deve essere non impostato o impostato sufalse.max_inactivity: deve essere non impostato (o il valore predefinito0s). I timeout delle sessioni inattive non sono supportati per le associazionirestricted_projecterestricted_client_application.
- Provider di identità supportati:
- OIDC: richiede un provider OIDC configurato con il flusso del codice di autorizzazione e l'ambito
offline_accessper emettere token di aggiornamento o configurato con il provisioning SCIM. - SAML 2.0: richiede l'attivazione del provisioning SCIM sul provider del pool di forza lavoro.
- OIDC: richiede un provider OIDC configurato con il flusso del codice di autorizzazione e l'ambito
- Soglia di obsolescenza degli attributi: viene applicata una soglia di obsolescenza fissa di 24 ore. Se Google Cloud non riesci ad aggiornare gli attributi utente dall'IdP entro 24 ore, la sessione viene invalidata e l'utente deve eseguire di nuovo l'autenticazione.
- Vincoli di Gestore contesto accesso:
- Associazione singola dell'organizzazione: le associazioni della durata estesa della sessione per i pool di forza lavoro devono avere come target l'entità "tutti i pool di forza lavoro" dell'organizzazione (
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool). Poiché questo identificatore di entità federata si applica a livello di organizzazione a tutti i pool di forza lavoro dell'organizzazione, può esistere una sola associazione di questo tipo per organizzazione. Per configurare le sessioni estese per più progetti Looker (Google Cloud core), l'app mobile Gemini Enterprise o una combinazione di entrambi, includi più blocchi di ambitorestricted_projecterestricted_client_applicationnell'elencoscopedAccessSettingsdella singola associazione. - I livelli di accesso (
access_levels,dry_run_access_levels) non sono supportati nelle associazioni del pool di forza lavoro. - Le
sessionSettingsdi primo livello direttamente suGcpUserAccessBindingnon sono supportate per le associazioni del pool di forza lavoro; le impostazioni devono essere definite all'interno discopedAccessSettings.activeSettings.sessionSettings.
- Associazione singola dell'organizzazione: le associazioni della durata estesa della sessione per i pool di forza lavoro devono avere come target l'entità "tutti i pool di forza lavoro" dell'organizzazione (
Configura il provider del pool di forza lavoro
Per consentire la durata estesa della sessione, il provider del pool di forza lavoro deve essere configurato per supportare l'aggiornamento degli attributi in background. Puoi configurare il provider in modo che utilizzi il protocollo OIDC o SAML.
Configura un provider OIDC
L'aggiornamento degli attributi in background per i provider OIDC può essere gestito utilizzando i token di aggiornamento (ambito offline_access) o il provisioning SCIM. Se utilizzi l'aggiornamento degli attributi basato su token:
- Nell'IdP esterno, configura un'applicazione OIDC con il flusso del codice di autorizzazione e attiva Accesso offline in modo che venga restituito un token di aggiornamento.
- In Google Cloud, aggiungi
offline_accessagli ambiti aggiuntivi del provider del pool di forza lavoro OIDC.
L'accesso offline deve essere configurato in tutti i pool di identità della forza lavoro della tua Google Cloud organizzazione affinché la policy per la durata estesa della sessione abbia l'effetto previsto.
gcloud
Se il provider ha già ambiti aggiuntivi esistenti, includili insieme a offline_access in modo che non vengano sovrascritti:
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]"
Sostituisci quanto segue:
PROVIDER_ID: il nome del provider del pool di identità della forza lavoro.WORKFORCE_POOL_NAME: il nome del pool di identità della forza lavoro.EXISTING_ADDITIONAL_SCOPES: tutti gli ambiti aggiuntivi separati da virgole configurati in precedenza nel provider. Se non hai ambiti aggiuntivi esistenti, ometti questo parametro.
API REST
Invia una richiesta PATCH per aggiornare il provider. Includi tutti gli ambiti aggiuntivi esistenti insieme a offline_access:
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
Corpo della richiesta:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
Sostituisci quanto segue:
WORKFORCE_POOL_NAME: il nome del pool di identità della forza lavoro.PROVIDER_ID: l'ID del provider del pool di identità della forza lavoro.
Configura un provider SAML
Per i provider SAML, l'aggiornamento degli attributi in background richiede il provisioning SCIM:
- Configura un tenant SCIM per il provider del pool di forza lavoro.
- Configura il provisioning di utenti e gruppi dal provider di identità SAML all'endpoint SCIM.
Per istruzioni passo passo, consulta Provisioning SCIM per la federazione delle identità per la forza lavoro.
Esempio di configurazione della policy per Looker (Google Cloud core)
Crea una risorsa GcpUserAccessBinding che assegni la policy per la durata estesa della sessione al pool di forza lavoro della tua organizzazione, limitando l'ambito della policy al progetto che ospita l'istanza di Looker (Google Cloud core).
gcloud
Definisci la policy in un file YAML denominato esl-binding.yaml:
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
Crea l'associazione di accesso:
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"
Sostituisci quanto segue:
ORG_ID: l'ID della tua Google Cloud organizzazione (ad esempio,123456789012).PROJECT_NUMBER: il numero del progetto che possiede l'istanza di Looker (Google Cloud core) di destinazione (ad esempio,987654321098). Solo le applicazioni Looker (Google Cloud core) di proprietà di questo progetto ricevono la durata estesa della sessione.sessionLength: la durata della sessione in secondi seguita das. Ad esempio,7776000sspecifica una sessione di 90 giorni.sessionLengthEnabled: impostato sutrue.sessionReauthMethod: impostato suLOGIN(o non impostato).
API REST
Invia una richiesta POST all'API Gestore contesto accesso:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
Corpo della richiesta 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"
}
}
}
]
}
Sostituisci quanto segue:
ORG_ID: l'ID della tua Google Cloud organizzazione (ad esempio,123456789012).PROJECT_NUMBER: il numero del progetto che possiede l'istanza di Looker (Google Cloud core) di destinazione (ad esempio,987654321098). Solo le applicazioni Looker (Google Cloud core) di proprietà di questo progetto ricevono la durata estesa della sessione.sessionLength: la durata della sessione in secondi seguita das. Ad esempio,7776000sspecifica una sessione di 90 giorni.sessionLengthEnabled: impostato sutrue.sessionReauthMethod: impostato suLOGIN(o non impostato).
Esempio di configurazione della policy per l'app mobile Gemini Enterprise
Crea una risorsa GcpUserAccessBinding che assegni la policy per la durata estesa della sessione al pool di forza lavoro della tua organizzazione, limitando l'ambito della policy all'app mobile Gemini Enterprise utilizzando l'ambito restricted_client_application. Devi identificare le applicazioni utilizzando i nomi visualizzati canonici esatti: "Gemini Enterprise mobile Android" e "Gemini Enterprise mobile IOS".
gcloud
Definisci la policy in un file YAML denominato 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
Crea l'associazione di accesso:
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"
Sostituisci quanto segue:
ORG_ID: l'ID della tua Google Cloud organizzazione (ad esempio,123456789012).name: deve essere"Gemini Enterprise mobile Android"o"Gemini Enterprise mobile IOS". L'identificazione delle applicazioni per ID client OAuth (clientId) non è supportata per i pool di forza lavoro.sessionLength: la durata della sessione in secondi seguita das(compresa tra3600se7776000s).sessionLengthEnabled: impostato sutrue.sessionReauthMethod: impostato suLOGIN(o non impostato).
API REST
Invia una richiesta POST all'API Gestore contesto accesso:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
Corpo della richiesta 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"
}
}
}
]
}
Sostituisci quanto segue:
ORG_ID: l'ID della tua Google Cloud organizzazione (ad esempio,123456789012).name: deve essere"Gemini Enterprise mobile Android"o"Gemini Enterprise mobile IOS". L'identificazione delle applicazioni per ID client OAuth (clientId) non è supportata per i pool di forza lavoro.sessionLength: la durata della sessione in secondi seguita das. Ad esempio,7776000sspecifica una sessione di 90 giorni.sessionLengthEnabled: impostato sutrue.sessionReauthMethod: impostato suLOGIN(o non impostato).
Visualizzare ed elencare le associazioni
Poiché l'associazione si applica a tutti i pool di forza lavoro dell'organizzazione, esiste al massimo un'associazione di accesso per organizzazione.
Elenca le associazioni attive
Per elencare l'associazione di accesso al pool di forza lavoro nella tua organizzazione, utilizza il filtro 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
Ottieni i dettagli dell'associazione
Per visualizzare i dettagli di un'associazione di accesso al pool di forza lavoro specifica:
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
Sostituisci BINDING_NAME con il nome completo della risorsa dell'associazione (ad esempio, organizations/123456789012/gcpUserAccessBindings/b1234567890).
API REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Sostituisci quanto segue:
ORG_ID: l'ID della tua Google Cloud organizzazione (ad esempio,123456789012).BINDING_ID: l'ID dell'associazione di accesso (ad esempio,b1234567890).
Aggiorna un'associazione di accesso
Puoi aggiornare un'associazione di accesso al pool di forza lavoro esistente per modificare le durate delle sessioni, aggiungere nuovi ambiti di progetto o applicazione o rimuovere gli ambiti esistenti.
gcloud
Definisci la policy aggiornata in un file YAML denominato
updated-esl-binding.yaml:scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGINApplica la policy aggiornata:
- Sostituisci le impostazioni di accesso con ambito: per sovrascrivere gli ambiti esistenti con la configurazione definita in
updated-esl-binding.yaml:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- Aggiungi alle impostazioni esistenti: per aggiungere gli ambiti definiti in
updated-esl-binding.yamlagli ambiti esistenti dell'associazione senza sovrascriverli, passa il flag--append:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- Sostituisci le impostazioni di accesso con ambito: per sovrascrivere gli ambiti esistenti con la configurazione definita in
Sostituisci quanto segue: * BINDING_NAME: il nome completo della risorsa dell'associazione (ad esempio, organizations/123456789012/gcpUserAccessBindings/b1234567890). * PROJECT_NUMBER: il numero del progetto che possiede l'istanza di Looker (Google Cloud core) di destinazione.
* sessionLength: la durata della sessione aggiornata (ad esempio, 2592000s per 30 giorni).
API REST
Invia una richiesta PATCH per aggiornare l'associazione.
- Sostituisci le impostazioni di accesso con ambito: per sovrascrivere gli ambiti esistenti:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- Aggiungi alle impostazioni esistenti: per aggiungere nuovi ambiti senza sovrascrivere quelli esistenti, imposta il parametro di query
append=true:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
Corpo della richiesta JSON:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Sostituisci quanto segue:
* ORG_ID: l'ID della tua Google Cloud organizzazione (ad esempio, 123456789012).
* BINDING_ID: l'ID dell'associazione di accesso (ad esempio, b1234567890).
* PROJECT_NUMBER: il numero del progetto che possiede l'istanza di Looker (Google Cloud core) di destinazione.
* sessionLength: la durata della sessione aggiornata (ad esempio, 2592000s per 30 giorni).
Elimina un'associazione di accesso
Se elimini l'associazione di accesso al pool di forza lavoro, la durata estesa della sessione viene disattivata per tutti i pool di forza lavoro della tua organizzazione.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
Sostituisci BINDING_NAME con il nome completo della risorsa dell'associazione.
API REST
Invia una richiesta DELETE per rimuovere l'associazione:
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Sostituisci quanto segue:
ORG_ID: l'ID organizzazione della tua Google Cloud .BINDING_ID: l'ID dell'associazione di accesso da eliminare.