Questa pagina descrive come configurare i tuoi workload in modo che accedano alle risorse Google Cloud utilizzando la federazione delle identità per i carichi di lavoro e l'accesso diretto alle risorse o la simulazione dell'identità degli account di servizio.
Puoi trovare istruzioni end-to-end specifiche per i casi d'uso nelle guide alla configurazione per AWS e Azure, Active Directory, GitHub, GitLab e altre pipeline di deployment e Kubernetes.
Consenti al tuo carico di lavoro esterno di accedere alle risorse Google Cloud
Per fornire al tuo workload l'accesso alle Google Cloud risorse, consigliamo di concedere all'entità l'accesso diretto alle risorse. In questo caso, l'entità è l'utente federato. Alcuni Google Cloud prodotti hanno limitazioni per le API Google Cloud. Se il tuo carico di lavoro chiama un endpoint API con una limitazione, puoi utilizzare la simulazione dell'identità dell'account di servizio. In questo caso, l'entità è il Google Cloud service account, che funge da identità. Concedi l'accesso all'account di servizio nella risorsa.
Accesso diretto alle risorse
Puoi concedere l'accesso a un'identità federata direttamente sulle risorse utilizzando la console Google Cloud o gcloud CLI.
Console
Per utilizzare la console Google Cloud per concedere i ruoli IAM direttamente su una risorsa, devi andare alla pagina della risorsa e concedere il ruolo. L'esempio seguente mostra come andare alla pagina Cloud Storage e concedere il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer
) a un'identità federata direttamente in un bucket Cloud Storage.
- Nella console Google Cloud, vai alla pagina Bucket in Cloud Storage.
Nell'elenco dei bucket, fai clic sul nome del bucket per cui vuoi concedere il ruolo.
Seleziona la scheda Autorizzazioni nella parte superiore della pagina.
Fai clic sul pulsante add_box Concedi accesso.
Viene visualizzata la finestra di dialogo Aggiungi entità.
Nel campo Nuove entità, inserisci una o più identità che devono accedere al tuo bucket.
Per argomento
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progettoPOOL_ID
: l'ID del pool di workloadSUBJECT
: il soggetto singolo mappato dal tuo provider di identità, ad esempioadministrator@example.com
Per gruppo
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progettoWORKLOAD_POOL_ID
: l'ID del pool di workloadGROUP
: il gruppo mappato dall'IdP, ad esempio:administrator-group@example.com
Per attributo
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progettoWORKLOAD_POOL_ID
: l'ID del pool di workloadATTRIBUTE_NAME
: uno degli attributi mappati dal tuo provider di identitàATTRIBUTE_VALUE
: il valore dell'attributo
Seleziona un ruolo o più ruoli dal menu a discesa Seleziona un ruolo. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni concesse.
Fai clic su Salva.
gcloud
Per utilizzare gcloud CLI per concedere i ruoli IAM a una risorsa in un progetto, segui questi passaggi:
Ottieni il numero del progetto in cui è definita la risorsa.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
Concedi l'accesso alla risorsa.
Per utilizzare gcloud CLI per concedere il ruolo Visualizzatore oggetti Storage (
roles/storage.objectViewer
) a identità esterne che soddisfano determinati criteri, esegui il seguente comando.Per argomento
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
Per gruppo
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
Per attributo
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
Sostituisci quanto segue:
BUCKET_ID
: il bucket a cui concedere l'accessoPROJECT_NUMBER
: il numero di progetto del progetto che contiene il pool di identità del workloadPOOL_ID
: l'ID del pool di identità del workloadSUBJECT
: il valore previsto per l'attributo che hai mappato agoogle.subject
GROUP
: il valore previsto per l'attributo che hai mappato agoogle.groups
ATTRIBUTE_NAME
: il nome di un attributo personalizzato nella mappatura degli attributiATTRIBUTE_VALUE
: il valore dell'attributo personalizzato nella mappatura degli attributi
Puoi concedere ruoli a qualsiasi Google Cloud risorsa che supporta i criteri di autorizzazione IAM.
Rappresentazione dell'identità dell'account di servizio
Per creare un account di servizio per il carico di lavoro esterno:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
Crea un account di servizio che rappresenti il carico di lavoro. Ti consigliamo di utilizzare un account di servizio dedicato per ogni carico di lavoro. L'account di servizio non deve necessariamente trovarsi nello stesso progetto del pool di identità del carico di lavoro, ma devi fare riferimento al progetto che contiene l'account di servizio.
Concedi all'account di servizio l'accesso alle risorse a cui vuoi che le identità esterne accedano.
Per consentire all'identità federata di rubare l'identità dell'account di servizio, svolgi quanto segue:
Console
Per utilizzare la console Google Cloud per concedere i ruoli IAM a un'identità federata con un account di servizio, segui questi passaggi:
Account di servizio nello stesso progetto
Per concedere l'accesso utilizzando la simulazione dell'identità dell'account di servizio per un account di servizio nello stesso progetto:
Vai alla pagina Pool Workload Identity.
Seleziona Concedi accesso.
Nella finestra di dialogo Concedi l'accesso all'account di servizio, seleziona Concedi l'accesso utilizzando la simulazione dell'identità degli account di servizio.
Nell'elenco Account di servizio, seleziona l'account di servizio per le identità esterne da rubare e svolgi i seguenti passaggi:
Per scegliere quali identità nel pool possono rubare l'identità dell'account di servizio, esegui una delle seguenti azioni:
Per consentire solo a identità specifiche del pool di identità del workload di simulare l'identità dell'account di servizio, seleziona Solo le identità corrispondenti al filtro.
Nell'elenco Nome attributo, seleziona l'attributo su cui vuoi applicare il filtro.
Nel campo Valore attributo, inserisci il valore previsto dell'attributo. Ad esempio, se utilizzi una mappatura degli attributi
google.subject=assertion.sub
, imposta il nome Attributo susubject
e Valore attributo sul valore del claimsub
nei token emessi dal tuo provider di identità esterno.
Per salvare la configurazione, fai clic su Salva e poi su Ignora.
Account di servizio in un altro progetto
Per concedere l'accesso utilizzando la rappresentazione dell'account di servizio per un account di servizio in un progetto diverso:
Vai alla pagina Service Accounts.
Seleziona l'account di servizio di cui vuoi assumere il ruolo.
Fai clic su Gestisci accesso.
Fai clic su Aggiungi entità.
Nel campo Nuova entità, inserisci uno dei seguenti identificatori principali per le identità nel pool che simuleranno l'account di servizio.
Per argomento
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progettoPOOL_ID
: l'ID del pool di workloadSUBJECT
: il soggetto singolo mappato dal tuo provider di identità, ad esempioadministrator@example.com
Per gruppo
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progettoWORKLOAD_POOL_ID
: l'ID del pool di workloadGROUP
: il gruppo mappato dall'IdP, ad esempio:administrator-group@example.com
Per attributo
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progettoWORKLOAD_POOL_ID
: l'ID del pool di workloadATTRIBUTE_NAME
: uno degli attributi mappati dal tuo provider di identitàATTRIBUTE_VALUE
: il valore dell'attributo
Per piscina
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progettoWORKLOAD_POOL_ID
: l'ID del pool di workload
In Seleziona un ruolo, seleziona il ruolo Workload Identity User (
roles/iam.workloadIdentityUser
).Per salvare la configurazione, fai clic su Salva.
gcloud
Per concedere il ruolo Utente Workload Identity (
roles/iam.workloadIdentityUser
) a un'entità o a un insieme di entità federate, esegui il seguente comando. Per scoprire di più sugli identificatori dei principali della federazione Workload Identity, consulta Tipi di principali.Per argomento
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
Per gruppo
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
Per attributo
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
Sostituisci quanto segue:
SERVICE_ACCOUNT_EMAIL
: l'indirizzo email dell'account per il servizioPROJECT_NUMBER
: il numero di progetto del progetto che contiene il pool di identità del workloadPOOL_ID
: l'ID del pool di identità del workloadSUBJECT
: il valore previsto per l'attributo che hai mappato agoogle.subject
GROUP
: il valore previsto per l'attributo che hai mappato agoogle.groups
ATTRIBUTE_NAME
: il nome di un attributo personalizzato nella mappatura degli attributiATTRIBUTE_VALUE
: il valore dell'attributo personalizzato nella mappatura degli attributi
Scarica la configurazione
Per consentire al tuo carico di lavoro di accedere alle librerie client, devi prima scaricare e configurare le credenziali predefinite dell'applicazione (ADC) come segue:
-
Nella console Google Cloud, vai alla pagina Pool di identità di carico di lavoro.
Vai a Pool Workload Identity -
Nella tabella, seleziona il pool per passare alla relativa pagina dei dettagli.
-
Fai clic su Concedi accesso.
-
Seleziona Concedi l'accesso usando identità federate (consigliato).
-
Per scaricare le credenziali predefinite dell'applicazione (ADC) in modo che il tuo workload possa accedere alle librerie client:
-
Fai clic su Scarica configurazione.
-
Nella finestra di dialogo Configura l'applicazione, procedi nel seguente modo:
-
Nell'elenco a discesa Provider, seleziona il tuo fornitore.
-
In Percorso token OIDC o Percorso dell'asserzione SAML, inserisci il percorso in cui si trova il token o l'asserzione.
Nell'elenco a discesa Tipo di formato, seleziona il formato.
-
-
Fai clic su Scarica configurazione e prendi nota del percorso in cui hai salvato il file.
-