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 appaltatori, 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 (AD FS), Okta e altri ancora.

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à di utenti di gruppi, ad esempio employees o partners
  • Concedi l'accesso IAM a un intero pool o a un suo sottoinsieme.
  • 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 in Cloud Audit Logs insieme all'ID del pool.

Puoi creare più pool. Per un esempio che descrive uno di questo approccio, 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 le cartelle all'interno dell'organizzazione, a condizione che tu disponga delle autorizzazioni IAM appropriate per visualizzare il pool. Quando configuri per la prima volta la federazione delle identità per la forza lavoro per la tua organizzazione, fornisci un nome per il pool. Nei criteri di autorizzazione IAM, fai riferimento al pool per nome. Per questo motivo, ti consigliamo di assegnare un nome al pool in modo 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). Fornisci una credenziale del tuo 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 backend sicura separata, 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, in modo da poter avere più attestazioni da utilizzare per la mappatura e la condizione degli attributi. Invece, nel flusso implicito, il token ID viene restituito dall'IdP al browser. I token sono soggetti a limiti di dimensione per i singoli URL del browser.

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 l'utilizzo 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.

È inoltre possibile 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é i log di Cloud Audit Logs registrano 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 lo modifichi nella directory utente dell'IdP, l'utente perde l'accesso.

    La lunghezza massima è 127 byte.

  • google.groups (Facoltativo): la raccolta di gruppi di cui fa parte l'utente che esegue l'autenticazione. 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ù piccolo di gruppi e includi solo quei gruppi 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 nei gruppi mappati. Ti consigliamo quindi di assicurarti che solo gli utenti autorizzati della tua organizzazione possano modificare l'appartenenza dei 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 è di 100 byte.

  • google.profile_photo (facoltativo): un URL della foto in miniatura dell'utente. Suggeriamo che le dimensioni delle foto siano 400 x 400 pixel. Se 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 compatibile con 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 potrebbe quindi essere utilizzato nelle condizioni IAM per concedere l'accesso solo agli utenti in quel centro di costo.

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

    Anche se non abbiamo 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, ad esempio migliorare la leggibilità. In alternativa, valuta l'utilizzo di attribute.role. Le modifiche a quest'ultimo indicano una modifica della responsabilità assegnata e sono in linea con le modifiche all'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 suddivide una stringa sul valore separatore fornito. Ad esempio, per estrarre l'attributo username da un attributo di indirizzo email suddividendo 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 sul 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 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 i seguenti:

  • 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, potrebbe essere opportuno consentire l'accesso solo alle identità che fanno parte di un team specifico, soprattutto se utilizzi un IdP pubblico. Per un altro esempio, potresti voler consentire l'accesso al team di contabilità, ma non al team tecnico.
  • Le condizioni degli attributi consentono di impedire che credenziali destinate all'uso con un'altra piattaforma vengano utilizzate con Google Cloud e viceversa. In questo modo eviterai il problema confuso del vice.

Rappresenta gli utenti del pool di forza lavoro nei criteri IAM

La tabella seguente mostra i principali identificatori 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 dell'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à di 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 è pubblicamente accessibile, puoi caricare manualmente i JWK quando crei o aggiorni il provider OIDC.

Limitare l'accesso tra organizzazioni

Le entità del 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 a 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 pool di forza lavoro

In genere, i servizi Google Cloud addebitano la fatturazione e l'utilizzo delle quote al progetto che contiene le risorse (un progetto di risorsa), mentre alcune API Google Cloud addebitano un costo per un progetto specificato nella chiamata API. In questi casi, ai fini della fatturazione e della quota viene utilizzato un progetto utente del pool di identità della forza lavoro. L'entità deve avere l'autorizzazione serviceusage.services.use in questo progetto. Se utilizzi già i servizi Google Cloud, puoi utilizzare un progetto esistente a fini di fatturazione e delle quote. Se non hai ancora un progetto, puoi crearne uno nuovo. Puoi utilizzare il nuovo progetto al posto dei progetti di risorse.

Esempio: più pool di identità della forza lavoro

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

Puoi creare un pool per i dipendenti e un altro per i partner. Le organizzazioni multinazionali possono creare pool separati per le diverse divisioni all'interno dell'organizzazione. I pool consentono la 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.

Ad esempio, supponi che una società denominata Enterprise Example Organization stipula un contratto con 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, questa deve essere autorizzata ad accedere a Google Kubernetes Engine (GKE) e ad altre risorse Google Cloud nell'organizzazione Enterprise di esempio. L'organizzazione Enterprise Example ha già un pool di identità della forza lavoro chiamato enterprise-example-organization-employees.

Per consentire all'organizzazione di esempio partner di gestire l'accesso alle risorse di Enterprise Example Organization, Enterprise Example Organization 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. L'organizzazione di esempio Enterprise fornisce il pool di forza lavoro a un amministratore di organizzazioni di esempio partner. L'amministratore dell'organizzazione di esempio partner utilizza il proprio IdP per concedere l'accesso alla propria forza lavoro.

Per farlo, 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, 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 i ruoli per il pool example-organization-partner nelle risorse a cui devono accedere nell'organizzazione di Enterprise Example Organization.

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

Gestione semplificata degli accessi

Nelle aziende di grandi dimensioni, gli amministratori IT spesso creano 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 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 diventare 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 evitare errori di configurazione dei criteri IAM e limitare la crescita dei gruppi è utilizzare più pool per creare una separazione più ampia tra gli utenti delle diverse unità organizzative e unità aziendali e delle organizzazioni partner. Potrai quindi fare riferimento a questi pool e gruppi contenuti all'interno di questi pool per definire i criteri IAM (consulta gli esempi nel passaggio Configurazione IAM).

Limitazioni dei Controlli di servizio VPC

La federazione delle identità per la forza lavoro, le API di configurazione del pool di forza lavoro e le API Security Token Service 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.

Passaggi successivi