Questo documento descrive i concetti chiave della federazione delle identità della forza lavoro.
Che cos'è la federazione delle identità per la forza lavoro?
La federazione delle identità della forza lavoro ti consente di utilizzare un provider di identità (IdP) esterno per autenticare e autorizzare una forza lavoro, ovvero un gruppo di utenti, come dipendenti, partner e appaltatori, utilizzando IAM, in modo che gli utenti possano accedere ai servizi Google Cloud. Con la federazione delle identità della 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à di identità di Google Cloud per supportare l'accesso singolo senza sincronizzazione basato sugli attributi.
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à della forza lavoro con qualsiasi IdP che supporti OpenID Connect (OIDC) o SAML 2.0, come Microsoft Entra ID, Active Directory Federation Services (AD FS), Okta e altri.
Pool di identità della forza lavoro
I pool di identità della forza lavoro ti consentono di gestire gruppi di identità della forza lavoro e il loro accesso alle risorse Google Cloud.
I pool ti consentono di:
- Identità utente di gruppo; ad esempio,
employees
opartners
- Concedi l'accesso IAM a un intero pool o a un sottoinsieme.
- Federa le identità da uno o più provider di identità.
- Definisci criteri per un gruppo di utenti che richiedono autorizzazioni di accesso simili.
- Specifica le informazioni di configurazione specifiche dell'IDP, tra cui la mappatura degli attributi e le condizioni degli attributi.
- Attiva l'accesso all'API e all'interfaccia a Google Cloud CLI per le identità di terze parti.
- Registra l'accesso degli utenti all'interno di un pool a Cloud Audit Logs, insieme all'ID pool.
Puoi creare più pool. Per un esempio che descrive uno di questi approcci, consulta Esempio: più pool di identità della forza lavoro.
I pool vengono configurati a livello di organizzazione Google Cloud. Per questo motivo, i pool sono disponibili in tutti i progetti e le cartelle dell'organizzazione, a condizione che tu disponga delle autorizzazioni IAM appropriate per visualizzarli. 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 IAM allow, fai 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 provider di identità.
Workforce Identity Federation segue la specifica di scambio di token OAuth 2.0 (RFC 8693). Fornisci una credenziale del tuo provider di identità esterno a Security Token Service, che verifica l'identità nella credenziale e restituisce in cambio un token di accesso Google Cloud di breve durata.
Tipi di flusso OIDC
Per i provider OIDC, Workforce Identity Federation supporta sia il flusso di codice di autorizzazione che 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 sicura e distinta, 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, quindi puoi avere più rivendicazioni da utilizzare per la mappatura degli attributi e la condizione degli attributi. Nel flusso implicito, invece, il token ID viene restituito dall'IDP al browser. I token sono soggetti ai limiti di dimensione degli URL dei singoli browser.
Console della Federazione delle identità per la forza lavoro di 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 all'interfaccia utente dei prodotti Google Cloud che supportano la federazione delle identità per la forza lavoro.
Mappature degli attributi
L'IdP fornisce attributi, chiamati da alcuni IdP claim. 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.
Puoi anche definire attributi personalizzati nell'IdP che possono 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 per l'utente che esegue l'autenticazione. Spesso è l'affermazione sull'oggetto del JWT, perché i log di controllo Cloud registrano i contenuti di questo campo come principale. Puoi utilizzare questo campo per configurare IAM per le decisioni di autorizzazione. Ti consigliamo di non utilizzare un valore mutabile perché, se lo cambi nella directory utente dell'IDP, l'utente perde l'accesso.La lunghezza massima è di 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 anche utilizzare questo campo per configurare IAM per le decisioni di autorizzazione. Le limitazioni pergoogle.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 in Google Cloud. Se un utente appartiene a più di 100 gruppi, l'autenticazione non riesce.
Se utilizzi questo attributo per concedere l'accesso in IAM, l'accesso viene concesso a ogni membro dei gruppi mappati. Pertanto, ti consigliamo 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 è di 100 byte.
google.profile_photo
(Facoltativo): l'URL della foto in miniatura dell'utente. 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 IAM per consentire o nella condizione dell'attributo.google.posix_username
(facoltativo): una stringa di nome utente conforme a POSIX univoca utilizzata per quanto segue: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 dall'IdP esterno presente nel token IdP di un utente. Puoi utilizzare l'attributo personalizzato per definire la strategia di autorizzazione in un criterio di autorizzazione IAM.Ad esempio, nell'IDP puoi scegliere di definire un attributo come il centro di costo dell'utente come
costcenter = "1234"
e poi fare riferimento al principale nel seguente modo:principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.costcenter/1234
Dopo aver concesso l'accesso alle risorse Google Cloud a questo identificatore principale, tutte le identità configurate nell'IDP per avere l'attributo
costcenter
impostato su1234
avranno accesso alle risorse.Puoi configurare un massimo di 50 regole di mappatura degli attributi personalizzati. La dimensione massima di ciascuna di queste regole è 2048 caratteri.
Sebbene non siano previste limitazioni per gli attributi che puoi mappare qui, ti consigliamo vivamente di scegliere attributi i cui valori siano stabili. Ad esempio, un attributo come
attribute.job_description
potrebbe cambiare per molti motivi (ad esempio per migliorarne la leggibilità). In alternativa, puoi utilizzareattribute.role
. Le modifiche a quest'ultimo indicano un cambiamento di 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 in base al valore del separatore fornito. Ad esempio, per estrarre l'attributousername
da un attributo indirizzo email dividendo il relativo valore in corrispondenza di@
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 in base al valore del separatore fornito. Ad esempio, per compilare l'attributo personalizzatodepartment
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 ti consentono di impostare vincoli sugli attributi di identità accettati da Google Cloud.
I vantaggi dell'utilizzo delle condizioni degli attributi includono:
- 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à di un team specifico, soprattutto se utilizzi un provider di identità pubblico. Un altro esempio è consentire al team di contabilità di accedere, ma non al team tecnico.
- Le condizioni degli attributi ti consentono di impedire l'utilizzo delle credenziali destinate a un'altra piattaforma con Google Cloud e viceversa. In questo modo si evita il problema del delegato confuso.
Utilizzare le condizioni degli attributi durante la federazione con GitHub o altri provider di identità multi-tenant
La federazione delle identità per la forza lavoro non gestisce una directory di account utente, ma implementa le identità basate su claim. Di conseguenza, quando due token vengono emessi dallo stesso provider di identità (IdP) e i relativi claim mappano allo stesso valore google.subject
, si presume che i due token identifichino lo stesso utente. Per scoprire quale IdP ha emesso un token, la federazione delle identità della forza lavoro ispeziona e verifica l'URL dell'emittente del token.
Le IdP multi-tenant, come GitHub e Terraform Cloud, utilizzano un unico URL emittente per tutti i loro tenant. Per questi fornitori, l'URL dell'emittente identifica tutto GitHub o Terraform Cloud, non un'organizzazione GitHub o Terraform Cloud specifica.
Quando utilizzi questi provider di identità, non è sufficiente consentire a Workforce Identity Federation di controllare l'URL dell'emittente di un token per assicurarti che provenga da una fonte attendibile e che i relativi claim siano attendibili. Se il tuo IdP multi-tenant ha un unico URL emittente, ti consigliamo di utilizzare le condizioni degli attributi per assicurarti che l'accesso sia limitato al tenant corretto.
Rappresentare gli utenti del pool di forza lavoro nei criteri IAM
La tabella seguente mostra gli identificatori principali che utilizzi per concedere i ruoli a un singolo utente, a un gruppo di utenti, a utenti che presentano una determinata rivendicazione o a tutti gli utenti di un pool di risorse umane.
Identità | Formato dell'identificatore |
---|---|
Un'unica identità in un pool di identità per la 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 dell'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 fornitore del pool della forza lavoro può accedere alle JSON Web Key (JWK) fornite dall'IdP nel campo jwks_uri
del documento /.well-known/openid-configuration
. Se il tuo fornitore OIDC non fornisce queste informazioni o se il tuo emittente non è accessibile pubblicamente, puoi caricare manualmente i JWK quando crei o aggiorni il fornitore OIDC.
Limitare l'accesso tra organizzazioni
Le entità del pool di identità della forza lavoro non possono accedere direttamente alle risorse al di fuori dell'organizzazione a cui appartengono. Tuttavia, se a un'entità viene concessa l'autorizzazione per rappresentare un account di servizio all'interno dell'organizzazione, questo vincolo può essere aggirato perché gli account di servizio non sono soggetti alle stesse limitazioni.
Progetto utente per i pool di forza lavoro
La maggior parte delle API Google Cloud addebita la fatturazione e l'utilizzo delle quote al progetto che contiene la risorsa a cui accede la richiesta API. Queste API sono chiamate API basate su risorse. Alcune API Google Cloud vengono addebitate al progetto associato al client; si tratta delle API basate su client. Il progetto utilizzato per la fatturazione e le quote è chiamato progetto quota.
Quando crei un file di configurazione della federazione delle identità della forza lavoro, specifica un progetto utente per i pool di forza lavoro. Questo progetto viene utilizzato per identificare la tua applicazione per le API Google che chiama. Il progetto utente dei pool di forza lavoro viene utilizzato anche come progetto 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 Consumatore (roles/serviceusage.serviceUsageConsumer
) di Service Usage, per il progetto specificato.
Per ulteriori informazioni sul progetto quota, sulle API basate su risorse e sulle API basate su client, consulta la Panoramica del progetto quota.
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 della loro organizzazione. I pool consentono una gestione distribuita, in cui gruppi diversi possono gestire in modo indipendente il proprio pool specifico in cui i ruoli vengono concessi solo alle identità al suo interno.
Ad esempio, supponiamo che un'azienda chiamata Enterprise Example Organization stipuli un contratto con un'altra azienda chiamata Partner Example Organization Inc per fornire servizi DevOps di Google Kubernetes Engine (GKE). Affinché il personale dell'organizzazione Partner Example possa fornire i servizi, deve poter accedere a Google Kubernetes Engine (GKE) e ad altre risorse Google Cloud nell'organizzazione dell'organizzazione Enterprise Example. L'organizzazione Enterprise Example ha già un pool di identità della forza lavoro denominato enterprise-example-organization-employees
.
Per consentire all'organizzazione Partner Example di gestire l'accesso alle risorse dell'organizzazione Enterprise Example, quest'ultima crea un pool di risorse separate per gli utenti della forza lavoro dell'organizzazione Partner Example in modo che possa gestirlo. L'organizzazione Enterprise Example fornisce il pool di risorse umane a un amministratore dell'organizzazione Partner Example. L'amministratore dell'organizzazione Example Partner utilizza il proprio IdP per concedere l'accesso alla sua forza lavoro.
A questo scopo, l'amministratore dell'organizzazione Enterprise Example esegue le seguenti attività:
Crea un'identità come
partner-organization-admin@example.com
per l'amministratore dell'organizzazione Partner Example nell'organizzazione Enterprise Example, che è già configurata nel pool chiamatoenterprise-example-organization-employees
.Crea un nuovo pool di risorse umane denominato
example-organization-partner
.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" ] } ] }
Assegna i ruoli per il pool
example-organization-partner
alle risorse a cui devono accedere nell'organizzazione dell'azienda di esempio.
Ora l'amministratore dell'organizzazione partner di esempio può configurare il pool example-organization-partner
per connettersi al proprio IdP. Potrà quindi consentire al personale dell'organizzazione Partner Example di accedere con le credenziali dell'IdP dell'organizzazione Partner Example. Dopo aver eseguito l'accesso, gli utenti della forza lavoro dell'organizzazione Partner Example possono accedere alle risorse Google Cloud, vincolate dai criteri definiti dall'organizzazione Enterprise Example.
Gestione dell'accesso semplificata
Nelle grandi aziende, gli amministratori IT creano spesso gruppi di sicurezza nell'ambito 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 i partner per estendere questo modello di controllo dell'accesso alle risorse cloud. Ciò può comportare la proliferazione di gruppi nidificati in modo molto approfondito che possono diventare molto difficili da gestire.
La tua organizzazione potrebbe anche avere criteri che limitano il numero di gruppi che puoi creare per mantenere la gerarchia della directory utente ragionevolmente piatta. Una soluzione migliore per evitare la configurazione errata dei criteri IAM e limitare la crescita dei gruppi è utilizzare più pool per creare una separazione più ampia degli utenti da unità organizzative e unità aziendali diverse e da organizzazioni partner. Puoi quindi fare riferimento a questi pool e gruppi contenuti al loro interno per definire i criteri IAM (vedi gli esempi nel passaggio Configurazione di IAM).
Limitazioni di Controlli di servizio VPC
La federazione delle identità per la forza lavoro, le API di configurazione dei pool di personale 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 personale possono accedere supportano Controlli di servizio VPC. Per saperne di più, consulta la pagina Prodotti supportati e limitazioni di Controlli di servizio VPC.
Workforce Identity Federation e Contatti necessari
Per ricevere informazioni importanti sulle modifiche apportate alla tua organizzazione o ai prodotti Google Cloud, devi fornire i contatti fondamentali quando utilizzi Workforce Identity Federation. Gli utenti di Cloud Identity possono essere contattati tramite il loro indirizzo email di Cloud Identity, mentre gli utenti di Workforce Identity Federation vengono contattati utilizzando i contatti essenziali.
Quando utilizzi la console Google Cloud per creare o gestire i pool di identità per la forza lavoro, viene visualizzato un banner che ti chiede di configurare un contatto necessario con le categorie 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
- Per scoprire come configurare la federazione delle identità per la forza lavoro, consulta Configurare la federazione delle identità per la forza lavoro. Per istruzioni specifiche per l'identità, consulta:
- Ottenere token di breve durata per la federazione delle identità della forza lavoro
- Gestire i provider dei pool di forza lavoro
- Eliminare gli utenti di Workforce Identity Federation e i relativi dati
- Visualizzare i log di controllo di Workforce Identity Federation
- Visualizzare i prodotti che supportano la federazione delle identità della forza lavoro
- Configurare l'accesso degli utenti alla console (federata)