Configura la durata della sessione estesa per la federazione delle identità della forza lavoro

Per impostazione predefinita, le sessioni della federazione delle identità della forza lavoro hanno una durata massima di 12 ore. La durata della sessione estesa consente alle organizzazioni di configurare sessioni di lunga durata, fino a 90 giorni, per i clienti di Looker (Google Cloud core).

Con la durata della sessione estesa, gli utenti della tua forza lavoro mantengono una connessione ininterrotta a Looker (Google Cloud core) senza richiedere la riautenticazione giornaliera rispetto al tuo provider di identità (IdP) esterno. L'interazione utente all'interno di Looker (Google Cloud core) rimane regolata dalla configurazione della durata della sessione di Looker (Google Cloud core). Per mantenere la sicurezza durante le sessioni estese, Google Cloud sincronizza periodicamente in background gli attributi utente e le iscrizioni ai gruppi direttamente dal tuo provider di identità esterna (IdP).

Questo documento descrive come definire policy di sessione estese utilizzando l'API Gestore contesto accesso con controlli con ambito progetto, configurare il provider del pool di forza lavoro e gestire le associazioni attive.


Panoramica

Federazione delle identità per la forza lavoro utilizza i binding 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 sulla durata della sessione utilizzando Gestore contesto accesso che si applica a livello di organizzazione a tutti i pool di forza lavoro della tua organizzazione. Utilizzando l'ambito restricted_project, il criterio concede sessioni estese fino a 90 giorni, interessando solo le istanze di Looker (Google Cloud core) di proprietà di quel progetto.
  • Sincronizzazione degli attributi in background:
    • OIDC: supportato utilizzando un flusso di codice di autorizzazione OIDC con l'ambito offline_access (utilizzando i token di aggiornamento per aggiornare periodicamente in background gli attributi utente e le iscrizioni ai gruppi dal tuo IdP esterno) o tramite il provisioning SCIM.
    • SAML: per i provider SAML, gli attributi utente e le iscrizioni ai gruppi vengono aggiornati utilizzando il provisioning SCIM.
  • Protezione dall'obsolescenza: se gli attributi utente non possono essere aggiornati dall'IdP esterno entro 24 ore (ad esempio, se il provisioning dell'utente viene annullato 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:

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:

  • Applicazione supportata: la durata della sessione estesa si applica esclusivamente a Looker (Google Cloud core).
  • Ambito del progetto obbligatorio (restricted_project): le impostazioni della sessione devono essere configurate in scopedAccessSettings utilizzando l'ambito client restricted_project che specifica il progetto Google Cloud proprietario dell'istanza di Looker (Google Cloud core) (projects/{PROJECT_NUMBER}).
    • Solo le applicazioni Looker (Google Cloud core) di proprietà del progetto designato sono interessate dalle norme ESL.
    • Tutte le altre applicazioni (e le applicazioni Looker (Google Cloud core) di proprietà di altri progetti) non risentono dell'effetto delle norme.
  • 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 di sessione:
    • session_length_enabled: deve essere impostato su true.
    • session_length: durata obbligatoria compresa tra 1 ora (3600s) e 90 giorni (7776000s).
    • session_reauth_method: deve essere non impostato o impostato su LOGIN.
    • use_oidc_max_age: deve essere non impostato o impostato su false.
    • max_inactivity: deve essere non impostato (o il valore predefinito 0s). I timeout delle sessioni inattive non sono supportati per i binding restricted_project.
  • Provider di identità supportati:
    • OIDC: richiede un provider OIDC configurato con il flusso del codice di autorizzazione e l'ambito offline_access per emettere token di aggiornamento o configurato con il provisioning SCIM.
    • SAML 2.0: richiede il provisioning SCIM abilitato nel provider del pool di forza lavoro.
  • Soglia di obsolescenza degli attributi: viene applicata una soglia di obsolescenza fissa di 24 ore. Se Google Cloud non riesce ad aggiornare gli attributi utente dal tuo IdP entro 24 ore, la sessione viene invalidata e l'utente deve eseguire nuovamente l'autenticazione.
  • Vincoli di Gestore contesto accesso:
    • Associazione organizzativa singola: le associazioni di durata della sessione estesa 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 viene applicato a livello di organizzazione in tutti i pool di forza lavoro della tua organizzazione, può esistere una sola associazione di questo tipo per organizzazione. Per configurare sessioni estese per più progetti Looker (Google Cloud core) in più pool di forza lavoro, includi più blocchi di ambito restricted_project nell'elenco scopedAccessSettings del singolo binding.
    • I livelli di accesso (access_levels, dry_run_access_levels) non sono supportati nei binding del pool di forza lavoro.
    • sessionSettings di primo livello direttamente su GcpUserAccessBinding non sono supportati per i binding dei pool di forza lavoro; le impostazioni devono essere definite all'interno di scopedAccessSettings.activeSettings.sessionSettings.

Configurare il provider di pool di forza lavoro

Per consentire una durata della sessione estesa, 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 token di aggiornamento (ambito offline_access) o il provisioning SCIM. Se utilizzi l'aggiornamento degli attributi basato su token:

  1. Nel tuo IdP esterno, configura un'applicazione OIDC con il flusso del codice di autorizzazione e attiva l'accesso offline in modo che venga restituito un token di aggiornamento.
  2. In Google Cloud, aggiungi offline_access agli 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 organizzazione Google Cloud affinché il criterio di durata della sessione estesa abbia l'effetto previsto.

gcloud

Se il tuo fornitore 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: eventuali ambiti aggiuntivi separati da virgole configurati in precedenza sul fornitore. Se non hai ambiti aggiuntivi esistenti, ometti questo parametro.

API REST

Invia una richiesta di PATCH per aggiornare il fornitore. Includi eventuali 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:

  1. Configura un tenant SCIM per il provider del pool di forza lavoro.
  2. 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.


Configurazione di esempio dei criteri per Looker (Google Cloud core)

Crea una risorsa GcpUserAccessBinding che assegni il criterio di durata della sessione estesa al pool di forza lavoro della tua organizzazione, limitando l'ambito del criterio 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 organizzazione Google Cloud (ad esempio, 123456789012).
  • PROJECT_NUMBER: il numero di progetto proprietario dell'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 della sessione estesa.
  • sessionLength: La durata della sessione in secondi seguita da s. Ad esempio, 7776000s specifica una sessione di 90 giorni.
  • sessionLengthEnabled: impostato su true.
  • sessionReauthMethod: imposta su LOGIN (o lascia 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 organizzazione Google Cloud (ad esempio, 123456789012).
  • PROJECT_NUMBER: il numero di progetto proprietario dell'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 della sessione estesa.
  • sessionLength: La durata della sessione in secondi seguita da s. Ad esempio, 7776000s specifica una sessione di 90 giorni.
  • sessionLengthEnabled: impostato su true.
  • sessionReauthMethod: imposta su LOGIN (o lascia non impostato).

Visualizzazione e elenco delle 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

Visualizzare i dettagli dell'associazione

Per visualizzare i dettagli di un binding di accesso al pool di forza lavoro specifico:

gcloud

gcloud access-context-manager cloud-bindings describe \
    --binding=BINDING_NAME

Sostituisci BINDING_NAME con il nome completo della risorsa del binding (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 organizzazione Google Cloud (ad esempio, 123456789012).
  • BINDING_ID: l'ID del binding di accesso (ad esempio, b1234567890).

Aggiorna un binding di accesso

Puoi aggiornare un binding di accesso al pool di forza lavoro esistente per modificare le durate delle sessioni, aggiungere nuovi ambiti del progetto o rimuovere quelli esistenti.

gcloud

  1. 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: LOGIN
    
  2. Applica le norme aggiornate:

    • Sostituisci le impostazioni di accesso con ambito: per sovrascrivere gli ambiti del progetto 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 del progetto definiti in updated-esl-binding.yaml agli ambiti del progetto 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 quanto segue: * BINDING_NAME: il nome completo della risorsa dell'associazione (ad esempio, organizations/123456789012/gcpUserAccessBindings/b1234567890). * PROJECT_NUMBER: il numero di progetto proprietario dell'istanza 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 impostazioni di accesso con ambito: per sovrascrivere gli ambiti del progetto esistenti:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
  • Aggiungi alle impostazioni esistenti: per aggiungere nuovi ambiti del progetto 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 Google Cloud dell'organizzazione (ad esempio, 123456789012). * BINDING_ID: l'ID dell'associazione di accesso (ad esempio, b1234567890). * PROJECT_NUMBER: il numero di progetto proprietario dell'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 il binding di accesso al pool di forza lavoro, la durata della sessione estesa 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 della tua organizzazione Google Cloud .
  • BINDING_ID: l'ID dell'associazione di accesso da eliminare.