Federazione delle identità per la forza lavoro

Questo documento descrive i concetti chiave della federazione delle identità per la forza lavoro.

Che cos'è la federazione delle identità per la forza lavoro?

La federazione delle identità per la forza lavoro consente di utilizzare un provider di identità (IdP) esterno per autenticare e autorizzare una forza lavoro, ovvero un gruppo di utenti, ad esempio dipendenti, partner e contrattisti, utilizzando IAM, in modo che gli utenti possano accedere ai servizi Google Cloud. Con la federazione delle identità per la forza lavoro non è necessario sincronizzare le identità utente dal tuo IdP esistente alle identità di Google Cloud, come faresti con Google Cloud Directory Sync (GCDS) di Cloud Identity. La federazione delle identità per la forza lavoro estende le funzionalità delle identità di Google Cloud per supportare il Single Sign-On basato su attributi e senza sincronizzazione.

Dopo l'autenticazione dell'utente, le informazioni ricevute dall'IdP vengono utilizzate per determinare l'ambito di accesso alle risorse Google Cloud.

Puoi utilizzare la federazione delle identità per la forza lavoro con qualsiasi IdP che supporti OpenID Connect (OIDC) o SAML 2.0, ad esempio Azure Active Directory (Azure AD), Active Directory Federation Services (ADFS), Okta e altri.

Pool di identità della forza lavoro

I pool di identità della forza lavoro consentono di gestire gruppi di identità della forza lavoro e il loro accesso alle risorse Google Cloud.

I pool ti consentono di:

  • Identità degli utenti dei gruppi, ad esempio employees o partners
  • Concedi l'accesso IAM a un intero pool o a un sottoinsieme dello stesso.
  • Federa le identità di uno o più IdP.
  • Definisci i criteri per un gruppo di utenti che richiedono autorizzazioni di accesso simili.
  • Specifica le informazioni di configurazione specifiche dell'IdP, incluse la mappatura degli attributi e le condizioni degli attributi.
  • Abilita Google Cloud CLI e l'accesso API per le identità di terze parti.
  • Registra l'accesso degli utenti all'interno di un pool a Cloud Audit Logs, insieme all'ID del pool.

Puoi creare più pool. Per un esempio che descrive un approccio di questo tipo, vedi Esempio: più pool di identità della forza lavoro.

I pool sono configurati a livello di organizzazione Google Cloud. Per questo motivo, i pool sono disponibili in tutti i progetti e in tutte le cartelle all'interno dell'organizzazione, a condizione di disporre delle autorizzazioni IAM appropriate per visualizzare il pool. Quando configuri per la prima volta la federazione delle identità della forza lavoro per la tua organizzazione, fornisci un nome per il pool. Nei criteri di autorizzazione IAM, devi fare riferimento al pool tramite il nome. Per questo motivo, ti consigliamo di assegnare al pool un nome che descriva chiaramente le identità che contiene.

Provider di pool di identità per la forza lavoro

Un provider di pool di identità della forza lavoro è un'entità che descrive una relazione tra la tua organizzazione Google Cloud e il tuo IdP.

La federazione delle identità per la forza lavoro è conforme alla specifica per lo scambio di token OAuth 2.0 (RFC 8693). Devi fornire una credenziale del provider di identità esterno al servizio token di sicurezza, che verifica l'identità nella credenziale e restituisce in cambio un token di accesso a Google Cloud di breve durata.

Tipi di flusso OIDC

Per i provider OIDC, la federazione delle identità per la forza lavoro supporta sia il flusso del codice di autorizzazione sia il flusso implicito. Il flusso del codice di autorizzazione è considerato il più sicuro, perché i token vengono restituiti dall'IdP in una transazione di backend separata e sicura, direttamente dall'IdP a Google Cloud, dopo l'autenticazione degli utenti. Di conseguenza, le transazioni del flusso di codice possono recuperare token di qualsiasi dimensione, il che significa che puoi avere più attestazioni da utilizzare per la mappatura degli attributi e la condizione degli attributi. Nel flusso implicito, al confronto, il token ID viene restituito dall'IdP al browser. I token sono soggetti a limiti di dimensione degli URL del browser individuali.

Console della federazione delle identità per la forza lavoro Google Cloud

Gli utenti di un pool di identità della forza lavoro possono accedere alla console della federazione delle identità per la forza lavoro di Google Cloud, nota anche come console (federata). La console fornisce a questi utenti l'accesso UI ai prodotti Google Cloud che supportano la federazione delle identità per la forza lavoro.

Mappature degli attributi

L'IdP fornisce gli attributi, che alcuni IdP chiamano rivendicazioni. Gli attributi contengono informazioni sugli utenti. Puoi mappare questi attributi per utilizzarli da parte di Google Cloud utilizzando il Common Expression Language (CEL).

Questa sezione descrive l'insieme di attributi obbligatori e facoltativi forniti da Google Cloud.

Puoi anche definire attributi personalizzati nell'IdP che possano essere utilizzati da prodotti Google Cloud specifici, ad esempio nei criteri di autorizzazione IAM.

La dimensione massima per le mappature degli attributi è 4 kB.

Gli attributi sono i seguenti:

  • google.subject (obbligatorio): un identificatore univoco dell'utente che esegue l'autenticazione. È spesso l'asserzione del soggetto del JWT, poiché Cloud Audit Logs registra i contenuti di questo campo come entità. Puoi utilizzare questo campo per configurare IAM per le decisioni di autorizzazione. Ti consigliamo di non utilizzare un valore modificabile perché, se modifichi il valore nella directory utente dell'IdP, l'utente perde l'accesso.

    La lunghezza massima è 127 byte.

  • google.groups (facoltativo): la raccolta di gruppi di cui l'utente autenticante è membro. Puoi configurare un'espressione logica utilizzando un sottoinsieme di CEL che produce un array di stringhe. Puoi utilizzare questo campo anche per configurare IAM per le decisioni di autorizzazione. Le limitazioni per google.groups sono le seguenti:

    • Ti consigliamo di limitare il nome del gruppo a 100 caratteri.

    • Se un utente è associato a più di 100 gruppi, definisci un insieme più ridotto di gruppi e includili solo nelle asserzioni utilizzate per federare l'utente a Google Cloud.

    • Se utilizzi questo attributo per concedere l'accesso in IAM, l'accesso viene concesso a tutti i membri dei gruppi mappati. Ti consigliamo quindi di assicurarti che solo gli utenti autorizzati della tua organizzazione possano modificare l'appartenenza ai gruppi mappati.

  • google.display_name (Facoltativo): attributo utilizzato per impostare il nome dell'utente che ha eseguito l'accesso nella console Google Cloud. Questo attributo non può essere utilizzato nei criteri di autorizzazione IAM né nella condizione dell'attributo.

    La lunghezza massima è 100 byte.

  • google.profile_photo (facoltativo): un URL della foto in miniatura dell'utente. Ti consigliamo di utilizzare una foto di 400 x 400 pixel. Quando questo attributo è impostato, l'immagine è visibile come immagine del profilo dell'utente nella console Google Cloud. Se questo valore non è impostato o non può essere recuperato, viene visualizzata un'icona utente generica. Questo attributo non può essere utilizzato nei criteri di autorizzazione IAM o nella condizione dell'attributo.

  • google.posix_username (Facoltativo): una stringa nome utente univoca conforme a POSIX utilizzata per:

    Questo attributo non può essere utilizzato nei criteri di autorizzazione IAM o nella condizione dell'attributo. La lunghezza massima è di 32 caratteri.

  • attribute.KEY (facoltativo): un attributo definito dal cliente presente nel token IdP di un utente. Puoi utilizzare questi attributi personalizzati per definire la tua strategia di autorizzazione in un criterio di autorizzazione IAM. Ad esempio, puoi scegliere di definire un attributo come il centro di costo dell'utente: attribute.costcenter = "1234". Questo attributo può quindi essere utilizzato nelle condizioni IAM per concedere l'accesso solo agli utenti nel centro di costo.

    Puoi configurare un massimo di 50 regole di mappatura degli attributi personalizzati. La dimensione massima di ciascuna regola è 2048 caratteri.

    Sebbene non siano previste limitazioni per gli attributi che puoi mappare qui, ti consigliamo vivamente di scegliere attributi con valori stabili. Ad esempio, un attributo come attribute.job_description potrebbe cambiare per molti motivi (come migliorare la leggibilità). In alternativa, valuta l'utilizzo di attribute.role. Le modifiche a queste ultime indicano una modifica della responsabilità assegnata e sono in linea con le modifiche dell'accesso concesso all'utente.

Puoi trasformare i valori degli attributi utilizzando le funzioni CEL standard. Puoi anche utilizzare le seguenti funzioni personalizzate:

  • La funzione split separa una stringa nel valore separatore fornito. Ad esempio, per estrarre l'attributo username da un attributo di un indirizzo email dividendo il suo valore in @ e utilizzando la prima stringa, utilizza la seguente mappatura degli attributi:

    attribute.username=assertion.email.split("@")[0]
    

  • La funzione join unisce un elenco di stringhe nel valore separatore fornito. Ad esempio, per completare l'attributo personalizzato department concatenando un elenco di stringhe con . come separatore, utilizza la seguente mappatura degli attributi:

    attribute.department=assertion.department.join(".")
    

Condizioni degli attributi

Le condizioni degli attributi sono espressioni CEL facoltative che consentono di impostare vincoli sugli attributi di identità accettati da Google Cloud.

I vantaggi dell'utilizzo delle condizioni degli attributi includono quanto segue:

  • Puoi utilizzare le condizioni degli attributi per consentire solo a un sottoinsieme di identità esterne di eseguire l'autenticazione nel tuo progetto Google Cloud. Ad esempio, potresti voler consentire l'accesso solo alle identità che si trovano in un team specifico, soprattutto se utilizzi un IdP pubblico. Per un altro esempio, potresti consentire l'accesso al team di contabilità, ma non al team tecnico.
  • Le condizioni degli attributi consentono di impedire l'utilizzo con Google Cloud di credenziali destinate all'uso con un'altra piattaforma e viceversa. In questo modo eviterai il problema di confuso del vice.

Rappresenta gli utenti del pool di forza lavoro nei criteri IAM

La tabella seguente mostra gli identificatori principali che puoi utilizzare per concedere i ruoli a un singolo utente, a un gruppo di utenti, agli utenti che presentano una determinata rivendicazione o a tutti gli utenti di un pool di forza lavoro.

Identità Formato identificatore
Singola identità in un pool di identità della forza lavoro principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
Tutte le identità della forza lavoro in un gruppo principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID
Tutte le identità della forza lavoro con un valore di attributo specifico principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
Tutte le identità in un pool di identità della forza lavoro principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/*

Chiavi web JSON

Il provider del pool di forza lavoro può accedere alle chiavi web JSON (JWK) fornite dal tuo IdP nel campo jwks_uri del documento /.well-known/openid-configuration. Se il tuo provider OIDC non fornisce queste informazioni o se l'emittente non è accessibile pubblicamente, puoi caricare manualmente i JWK quando crei o aggiorni il provider OIDC.

Limitare l'accesso tra organizzazioni

Le entità dei pool di identità della forza lavoro non possono accedere direttamente alle risorse all'esterno dell'organizzazione a cui appartengono. Tuttavia, se a un'entità viene concessa l'autorizzazione per impersonare un account di servizio all'interno dell'organizzazione, questo vincolo può essere ignorato, poiché gli account di servizio non sono ugualmente limitati.

Progetto utente dei pool di forza lavoro

La maggior parte delle API Google Cloud addebita la fatturazione e l'utilizzo della quota per il progetto che contiene la risorsa a cui accede la tua richiesta API. Queste API sono chiamate API basate sulle risorse. Alcune API Google Cloud vengono addebitate al progetto associato al client e sono chiamate API basate su client. Il progetto utilizzato ai fini della fatturazione e della quota è denominato progetto quota.

Quando crei un file di configurazione di federazione delle identità per la forza lavoro, devi specificare un progetto utente dei pool di forza lavoro. Questo progetto viene utilizzato per identificare la tua applicazione nelle API di Google che chiama. Il progetto utente dei pool di forza lavoro viene utilizzato anche come progetto di quota predefinito per le API basate su client, a meno che non utilizzi gcloud CLI per avviare la richiesta API. Devi disporre dell'autorizzazione serviceusage.services.use, inclusa nel ruolo Consumer Usage (roles/serviceusage.serviceUsageConsumer) del servizio, per il progetto specificato.

Per ulteriori informazioni sul progetto delle quote, sulle API basate sulle risorse e sulle API basate su client, consulta Panoramica del progetto per le quote.

Esempio: più pool di identità della forza lavoro

Questa sezione contiene un esempio che illustra l'uso tipico di più pool.

Puoi creare un pool per i dipendenti e un altro per i partner. Le organizzazioni multinazionali potrebbero creare pool separati per divisioni diverse all'interno dell'organizzazione. I pool consentono una gestione distribuita, in cui gruppi diversi possono gestire in modo indipendente il proprio pool specifico, dove i ruoli vengono concessi solo alle identità nel pool.

Supponiamo, ad esempio, che una società denominata Enterprise Example Organization contragga un'altra società denominata Partner Example Organization Inc per fornire i servizi DevOps di Google Kubernetes Engine (GKE). Affinché la forza lavoro dell'Organizzazione di esempio dei partner possa fornire i servizi, la forza lavoro deve essere autorizzata ad accedere a Google Kubernetes Engine (GKE) e ad altre risorse di Google Cloud nell'organizzazione di Organizzazione di esempio aziendale. L'organizzazione Enterprise Example ha già un pool di identità della forza lavoro chiamato enterprise-example-organization-employees.

Per consentire a Organizzazione di esempio partner di gestire l'accesso alle risorse di Organizzazione di esempio partner, Organizzazione di esempio Enterprise crea un pool di forza lavoro separato per gli utenti della forza lavoro dell'Organizzazione di esempio partner in modo che l'Organizzazione di esempio partner possa gestirlo. Enterprise Example Organization fornisce il pool di forza lavoro a un amministratore di organizzazione di esempio partner. L'amministratore dell'organizzazione di esempio partner utilizza il proprio IdP per concedere l'accesso alla propria forza lavoro.

A questo scopo, l'amministratore dell'organizzazione di esempio Enterprise esegue le seguenti attività:

  1. Crea un'identità, ad esempio partner-organization-admin@example.com, per l'amministratore dell'organizzazione di esempio partner nell'IdP di Enterprise Example Organization, che è già configurato nel pool chiamato enterprise-example-organization-employees.

  2. Crea un nuovo pool di forza lavoro denominato example-organization-partner.

  3. Crea il seguente criterio di autorizzazione per il pool example-organization-partner:

    {
      "bindings": [
        {
          "role": "roles/iam.workforcePoolEditor",
          "members": [
            "principalSet://iam.googleapis.com/locations/global/workforcePools/enterprise-example-organization-employees/subject/partner-organization-admin@example.com"
          ]
        }
      ]
    }
    
  4. Concedi ruoli per il pool example-organization-partner sulle risorse a cui devono accedere nell'organizzazione di Enterprise Example Organization.

L'amministratore dell'organizzazione di esempio partner ora può configurare il pool example-organization-partner per la connessione al proprio IdP. Possono quindi consentire alla forza lavoro di Organizzazione partner di esempio di accedere con le credenziali IdP dell'organizzazione di esempio partner. Dopo aver eseguito l'accesso, gli utenti dell'organizzazione di esempio partner possono accedere alle risorse di Google Cloud, vincolati da criteri definiti dall'organizzazione di esempio aziendale.

Gestione degli accessi semplificata

Nelle aziende di grandi dimensioni, gli amministratori IT creano spesso gruppi di sicurezza come parte di un modello di controllo dell'accesso basato sulle best practice. I gruppi di sicurezza regolano l'accesso alle risorse interne. Inoltre, le aziende spesso creano gruppi aggiuntivi per i dipendenti e altri gruppi per consentire ai partner di estendere questo modello di controllo dell'accesso alle risorse cloud. Ciò può comportare la proliferazione di gruppi profondamente nidificati, che possono risultare molto difficili da gestire.

La tua organizzazione potrebbe anche prevedere criteri che limitano il numero di gruppi che puoi creare in modo da mantenere la gerarchia delle directory degli utenti ragionevolmente stabile. Una soluzione migliore per prevenire la configurazione errata dei criteri IAM e limitare la crescita dei gruppi è utilizzare più pool per creare una separazione più ampia degli utenti da diverse unità organizzative, unità aziendali e organizzazioni partner. Puoi quindi fare riferimento a questi pool e gruppi contenuti all'interno di questi pool per definire i criteri IAM (vedi esempi nel passaggio Configurazione IAM).

Limitazioni dei Controlli di servizio VPC

La federazione delle identità per la forza lavoro, le API di configurazione dei pool di forza lavoro e le API di servizio token di sicurezza non supportano i Controlli di servizio VPC. Tuttavia, i prodotti Google Cloud a cui gli utenti del pool di forza lavoro possono accedere supportano i Controlli di servizio VPC. Per saperne di più, consulta la pagina Prodotti e limitazioni supportati dei Controlli di servizio VPC.

Federazione delle identità per la forza lavoro e contatti necessari

Per ricevere informazioni importanti sulle modifiche apportate alla tua organizzazione o ai prodotti Google Cloud, devi fornire i contatti necessari quando utilizzi la federazione delle identità per la forza lavoro. Gli utenti di Cloud Identity possono essere contattati tramite il loro indirizzo email di Cloud Identity, ma gli utenti della federazione delle identità per la forza lavoro vengono contattati utilizzando i contatti necessari.

Quando utilizzi la console Google Cloud per creare o gestire i pool di identità della forza lavoro, vedrai un banner che ti chiede di configurare un contatto essenziale con la categoria Legale e Sospensione. In alternativa, puoi definire un contatto nella categoria Tutti se non hai contatti separati. Se fornisci i contatti, il banner verrà rimosso.

Passaggi successivi