Questa guida descrive come utilizzare la federazione delle identità di carico di lavoro con i certificati X.509 emessi dalla tua autorità di certificazione (CA) per autenticarti su Google Cloud e accedere alle risorse Google Cloud.
Se i tuoi workload dispongono di un certificato client mTLS, puoi autenticarti su Google Cloud registrando una o più CA con la federazione delle identità per i workload come ancore di attendibilità. Puoi anche registrare CA intermedie.
Utilizzando la federazione delle identità per i carichi di lavoro, puoi consentire a questi carichi di lavoro di ottenere credenziali Google Cloud di breve durata tramite una connessione TLS mutuale (mTLS). I workload possono utilizzare queste credenziali di breve durata per accedere alle API Google Cloud.
Concetti
I concetti di federazione basata su certificati X.509 includono quanto segue:
Un ancora di attendibilità è un certificato CA considerato come la radice di attendibilità. Eventuali catene di certificati client devono essere collegate a uno degli ancoraggi di attendibilità.
Un'autorità di certificazione intermedia è un certificato facoltativo dell'autorità di certificazione che aiuta a creare la catena di certificati client.
Un archivio attendibilità contiene i certificati delle ancore di attendibilità e i certificati CA intermedi utilizzati per convalidare la catena di certificati client. Un'autorità di certificazione emette certificati attendibili per il client.
Puoi caricare i seguenti tipi di certificati client nel trust store:
- Certificati emessi da CA di terze parti a tua scelta
- Certificati emessi dalle tue CA private
- Certificati firmati, come descritto in Creare certificati autofirmati
Prima di iniziare
Per iniziare a configurare la federazione delle identità per i carichi di lavoro, segui questi passaggi:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Ti consigliamo di
utilizzare un progetto dedicato per gestire i provider e i pool di identità per i carichi di lavoro.
-
Make sure that billing is enabled for your Google Cloud project.
Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare la federazione di Workload Identity, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Amministratore di pool di identità di lavoro (
roles/iam.workloadIdentityPoolAdmin
) -
Amministratore account di servizio (
roles/iam.serviceAccountAdmin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
In alternativa, il ruolo di base Proprietario IAM (roles/owner
) include anche le autorizzazioni per configurare la federazione delle identità.
Non dovresti concedere ruoli di base in un ambiente di produzione, ma puoi farlo in un ambiente di sviluppo o di test.
Configurare la federazione delle identità per i carichi di lavoro
Questa sezione mostra come configurare la federazione delle identità per i carichi di lavoro e il tuo magazzino delle credenziali. Devi eseguire questi passaggi una sola volta per ogni elenco attendibile. Puoi quindi utilizzare lo stesso provider e lo stesso pool di identità di carico di lavoro per più carichi di lavoro e in più progetti Google Cloud.
Creare e configurare un archivio attendibilità
Questa sezione mostra come creare un file di configurazione YAML dell'archivio attendibilità e un certificato CA autofirmato.
Genera una chiave e certificati firmati
Questa sezione utilizza i comandi openssl
per creare certificati radice e intermediari.
Se hai già i certificati, puoi saltare questo passaggio e continuare con Formattare i certificati.
Per generare un certificato radice e un certificato intermedio firmato con campi keyUsage
e extendedKeyUsage
validi, svolgi i seguenti passaggi:
Crea un file
example.cnf
di esempio con la configurazione minima richiesta per creare certificati di firma validi. Puoi modificare questo file per impostare campi aggiuntivi su questi certificati.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command line arg. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOF
Crea il certificato radice:
openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.cert
Crea la richiesta di firma per il certificato intermedio:
openssl req \ -new -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.req
Crea il certificato intermedio:
openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Formatta i certificati
Per includere certificati nuovi o esistenti in un archivio attendibilità, formattali in un'unica riga e memorizzali nelle variabili di ambiente in modo che possano essere letti nel file YAML. I certificati devono essere in formato PEM. Per formattare i certificati e memorizzarli nelle variabili di ambiente:
Salva il certificato radice come stringa di una riga:
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g')
Salva un certificato intermedio come stringa di una riga:
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g')
Crea un file YAML del trust store
In questa sezione crei un file YAML dell'archivio attendibilità contenente le ancore di attendibilità e le CA intermedie.
Per creare il file YAML del magazzino delle credenziali, esegui il seguente comando. Questo file contiene i contenuti dei certificati delle variabili di ambiente
che hai creato in Formattare i certificati. Per aggiungere altri riferimenti di attendibilità, aggiungi altre voci trustAnchors
in trustStore
.
Per aggiungere altri certificati CA intermedi, aggiungi altre voci intermediateCas
in trustStore
.
cat << EOF > trust_store.yaml
trustStore:
trustAnchors:
- pemCertificate: "${ROOT_CERT}"
intermediateCas:
- pemCertificate: "${INTERMEDIATE_CERT}"
EOF
Definire una mappatura degli attributi e una condizione
Il certificato X.509 del client può contenere più attributi.
Devi selezionare l'attributo da utilizzare come identificatore dell'oggetto mappandogoogle.subject
in Google Cloud all'attributo del certificato.
Ad esempio, se l'attributo nel certificato è il nome comune del soggetto, la mappatura sarà la seguente:google.subject=assertion.subject.dn.cn
Se vuoi, puoi mappare altri attributi. Puoi quindi fare riferimento a questi attributi quando concedi l'accesso alle risorse.
Le mappature degli attributi possono utilizzare gli attributi all'interno del cliente, tra cui:
serialNumberHex
: il numero di seriesubject.dn.cn
: il nome comune dell'oggettosubject.dn.o
: il nome dell'organizzazione soggettasubject.dn.ou
: l'unità organizzativa in questioneissuer.dn.cn
: il nome comune dell'emittenteissuer.dn.o
: il nome dell'organizzazione emittenteissuer.dn.ou
: l'unità organizzativa dell'emittentesan.dns
: il primo nome DNS del nome alternativo dell'oggettosan.uri
: il primo URI del nome alternativo del soggetto
Devi mappare uno di questi attributi a google.subject
per identificare in modo univoco
l'oggetto. Per proteggerti dalle minacce di spoofing, scegli un attributo con un valore unico che non può essere modificato. Per impostazione predefinita, l'identificatore google.subject
è impostato sul nome comune del soggetto del certificato client, assertion.subject.dn.cn
.
(Facoltativo) Definisci una condizione dell'attributo.
Le condizioni degli attributi sono espressioni CEL che possono controllare gli attributi di asserzione e gli attributi di destinazione. Se la condizione dell'attributo ha valore true
per una determinata
credenziale, la credenziale viene accettata. In caso contrario, le credenziali vengono rifiutate.
Puoi utilizzare una condizione dell'attributo per limitare i soggetti che possono utilizzare la federazione delle identità per i carichi di lavoro per ottenere token Google Cloud di breve durata.
Ad esempio, la seguente condizione limita l'accesso ai certificati client contenenti l'ID SPIFFE spiffe://example/path
:
assertion.san.uri=="spiffe://example/path"
Crea il provider e il pool di identità del workload
Per creare un nuovo pool di identità per i carichi di lavoro, esegui il seguente comando:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Sostituisci quanto segue:
POOL_ID
: l'ID univoco del pool.DISPLAY_NAME
: il nome del pool.DESCRIPTION
: una descrizione del pool scelto. Questa descrizione viene visualizzata quando concedi l'accesso alle identità del pool.
Per aggiungere un provider del pool di identità del workload X.509, esegui il seguente comando:
gcloud iam workload-identity-pools providers create-x509 PROVIDER_ID \ --location=global \ --workload-identity-pool="POOL_ID" \ --trust-store-config-path="TRUST_STORE_CONFIG" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS" \ --billing-project="ALLOWLISTED_PROJECT"
Sostituisci quanto segue:
PROVIDER_ID
: un ID fornitore del pool di identità del workload univoco a tua scelta.POOL_ID
: l'ID del pool di identità del workload che hai creato in precedenza.TRUST_STORE_CONFIG
: il file YAML del trust store.MAPPINGS
: un elenco separato da virgole di mappature degli attributi che hai creato in precedenza in questa guida. Se non specifichigoogle.subject
, la mappatura predefinita saràgoogle.subject=assertion.subject.dn.cn
CONDITIONS
: un'condizione dell'attributo facoltativa che hai creato in precedenza in questa guida. Rimuovi il parametro se non hai una condizione dell'attributo.ALLOWLISTED_PROJECT
: l'ID progetto.
Autentica un carico di lavoro
Devi eseguire questi passaggi una volta per ogni carico di lavoro.
Consenti al tuo carico di lavoro esterno di accedere alle risorse Google Cloud
Per fornire al tuo carico di lavoro l'accesso alle risorse Google Cloud, consigliamo di concedere l'accesso diretto alle risorse al principale. In questo caso, l'entità è l'utente federato. Alcuni prodotti Google Cloud presentano limitazioni dell'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à è l'account di servizio Google Cloud, 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 poi 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 IdP, 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 risorsa Google Cloud 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 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 accedano le identità esterne.
Concedi il ruolo Utente Workload Identity (
roles/iam.workloadIdentityUser
) all'account di servizio.
Per concedere l'accesso a un'identità federata utilizzando la simulazione dell'identità degli account di servizio tramite la console Google Cloud o gcloud CLI:
Console
Per utilizzare la console Google Cloud per concedere 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 dell'attributo susubject
e il valore dell'attributo sul valore dell'affermazionesub
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 ruberanno l'identità dell'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 IdP, 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 utilizzare gcloud CLI per concedere il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser
)
alle identità esterne che soddisfano determinati criteri, esegui il seguente
comando.
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
Scaricare o creare una configurazione delle credenziali
Le librerie client di Cloud e la gcloud CLI possono ottenere automaticamente le credenziali esterne e utilizzarle per rubare l'identità di un account di servizio. Per consentire alle librerie e agli strumenti di completare questa procedura, devi fornire un file di configurazione delle credenziali. Questo file definisce quanto segue:
- Da dove ottenere le credenziali esterne
- Quale provider e pool di identità per i carichi di lavoro utilizzare
- Quale account di servizio rappresentare
Inoltre, per la federazione dei certificati X.509 è necessario un file di configurazione del certificato. Questo file contiene i percorsi dei file del certificato client X.509 e della chiave privata.
Per creare file di configurazione delle credenziali e dei certificati:
Accesso diretto alle risorse
Per creare file di configurazione delle credenziali e dei certificati per l'accesso diretto alle risorse utilizzando
gcloud iam workload-identity-pools create-cred-config
,
procedi nel seguente modo:
Crea file di configurazione delle credenziali e dei certificati che consentano alla libreria di ottenere un token di accesso utilizzando un certificato X.509.
gcloud iam workload-identity-pools create-cred-config projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --credential-cert-path CLIENT_CERT_PATH \ --credential-cert-private-key-path CLIENT_KEY_PATH \ --output-file=FILEPATH.json
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progetto che contiene il pool di identità del workload.POOL_ID
: l'ID del pool di identità del workload.PROVIDER_ID
: l'ID del fornitore del pool di identità del workload.CLIENT_CERT_PATH
: il percorso del file del certificato del cliente.CLIENT_KEY_PATH
: il percorso del file della chiave privata del client.FILEPATH
: il file in cui salvare la configurazione.
L'esecuzione di questo comando creerà anche un file di configurazione del certificato e lo memorizzerà nella posizione predefinita di Google Cloud CLI:
Linux e macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
Rappresentazione dell'identità dell'account di servizio
Per creare file di configurazione delle credenziali e dei certificati con l'inganno dell'account di servizio utilizzando
gcloud iam workload-identity-pools create-cred-config
,
procedi nel seguente modo:
Crea file di configurazione delle credenziali e dei certificati che consentano alla libreria di ottenere un token di accesso utilizzando un certificato X.509.
gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \ --credential-cert-path CLIENT_CERT_PATH \ --credential-cert-private-key-path CLIENT_KEY_PATH \ --output-file=FILEPATH.json
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progetto che contiene il pool di identità del workload.POOL_ID
: l'ID del pool di identità del workload.PROVIDER_ID
: l'ID del fornitore del pool di identità del workload.SERVICE_ACCOUNT_EMAIL
: se utilizzi l'usurpazione di identità del service account, sostituisci con l'indirizzo email del account di servizio.SERVICE_ACCOUNT_TOKEN_LIFETIME
: se utilizzi la simulazione dell'account di servizio,la durata del token di accesso dell'account di servizio in secondi. Se non viene fornito, il valore predefinito è un'ora. Ometti questo flag se non utilizzi l'impersonificazione dell'account di servizio. Per specificare una durata superiore a un'ora, devi configurare ilconstraints/iam.allowServiceAccountCredentialLifetimeExtension
vincolo dei criteri dell'organizzazione.CLIENT_CERT_PATH
: il percorso del file del certificato del cliente.CLIENT_KEY_PATH
: il percorso del file della chiave privata del client.FILEPATH
: il file in cui salvare la configurazione.
L'esecuzione di questo comando creerà anche un file di configurazione del certificato e lo memorizzerà nella posizione predefinita di Google Cloud CLI:
Linux e macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
Utilizzare la configurazione delle credenziali per accedere a Google Cloud
Per consentire agli strumenti e alle librerie client di utilizzare la configurazione delle credenziali, svolgi i seguenti passaggi:
Inizializza una variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
e indirizzala al file di configurazione delle credenziali:Bash
doveexport GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
FILEPATH
è il percorso relativo al file di configurazione delle credenziali.PowerShell
dove$env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
FILEPATH
è il percorso relativo al file di configurazione delle credenziali.Assicurati che la libreria client possa trovare il file di configurazione del certificato. Il file di configurazione del certificato deve essere archiviato nella posizione predefinita di Google Cloud CLI:
Linux e macOS:
~/.config/gcloud/certificate_config.json
Windows:
%APPDATA%\gcloud\certificate_config.json
o indicato dalla variabile di ambiente
GOOGLE_API_CERTIFICATE_CONFIG
.Utilizza una libreria client o uno strumento che supporta la federazione delle identità per i carichi di lavoro e può trovare automaticamente le credenziali:
Vai
Le librerie client per Go supportano la federazione delle identità di lavoro X.509 se utilizzano la versione 0.8.0 o successive del modulo cloud.google.com/go/auth
e la versione 0.189.0 del modulo google.golang.org/api
.
Per controllare la versione di questi moduli utilizzata dalla tua libreria client, esegui il seguente comando nella directory contenente il file go.mod per il tuo modulo:
go list -m cloud.google.com/go/auth
go list -m cloud.google.com/api
Python
Le librerie client per Python supportano la federazione delle identità di lavoro X.509 se utilizzano la versione 2.32.0 o successive del pacchetto google-auth
Per controllare quale versione di questo pacchetto utilizza la tua libreria client, esegui il seguente comando nell'ambiente in cui è installato il pacchetto:
pip show google-auth
Per specificare un ID progetto per il client di autenticazione, puoi impostare la variabile di ambienteGOOGLE_CLOUD_PROJECT
o consentire al client di trovare automaticamente l'ID progetto. Per trovare automaticamente l'ID progetto, il service account nel file di configurazione deve disporre del ruolo Browser (roles/browser
) o di un ruolo con autorizzazioni equivalenti nel progetto. Per maggiori dettagli, consulta la guida dell'utente per il pacchetto google-auth
.
gcloud
Per eseguire l'autenticazione utilizzando la federazione delle identità per i carichi di lavoro X.509, utilizza il comando
gcloud auth login
:
gcloud auth login --cred-file=FILEPATH.json
Sostituisci FILEPATH
con il percorso del
file di configurazione delle credenziali.
Il supporto della federazione delle identità per i carichi di lavoro X.509 nell'gcloud CLI è disponibile nella versione 488.0.0 e successive dell'interfaccia a riga di comando gcloud.
Ottenere un token di accesso utilizzando una richiesta normale per accedere a Google Cloud
Per ottenere il token di accesso:
Utilizza curl per eseguire lo scambio di token con mTLS e il certificato client:
curl --key CLIENT_CERT_KEY \ --cert CLIENT_CERT \ --request POST 'https://sts.mtls.googleapis.com/v1/token' \ --header "Content-Type: application/json" \ --data-raw '{ "subject_token_type": "urn:ietf:params:oauth:token-type:mtls", "grant_type": "urn:ietf:params:oauth:grant-type:token-exchange", "audience": "WORKLOAD_IDENTITY_POOL_URI", "requested_token_type": "urn:ietf:params:oauth:token-type:access_token", "scope": "https://www.googleapis.com/auth/cloud-platform", }'
Sostituisci quanto segue:
CLIENT_CERT_KEY
: la chiave privata del certificato clientCLIENT_CERT
: il certificato clientWORKLOAD_IDENTITY_POOL_URI
: l'URL del fornitore del pool di identità del workload nel seguente formato://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
Utilizza il token di accesso con indicazione del portatore generato nel passaggio precedente per accedere alle risorse Google Cloud, ad esempio:
curl -X GET 'https://storage.googleapis.com/my_object' -H "Authorization: Bearer $ACCESS_TOKEN"
Quote e limiti
La tabella seguente elenca le quote e i limiti.
Elemento | Quote e limiti | Note |
---|---|---|
Numero di trust anchor | Limite: 3 | Ogni certificato non deve superare i 32 KB. |
Numero di certificati intermedi | Limite: 10 | Ogni certificato non deve superare i 32 KB. |
Numero di vincoli relativi ai nomi consentiti durante la convalida dei certificati radice e intermedi | Limite: 10 | |
Certificati intermedi che condividono le stesse informazioni relative a Soggetto e Chiave pubblica del soggetto | Limite: 5 | Questo limite si applica a ogni elenco attendibile. |
Profondità della catena di certificati | Limite: 5 | La profondità massima per una catena di certificati, inclusi i certificati radice e client. |
Numero di volte in cui i certificati intermedi possono essere valutati durante il tentativo di creare la catena di attendibilità | Limite: 100 | |
Chiavi dei certificati caricati e trasmessi dal client | Limite: le chiavi RSA possono variare da 2048 a 4096 bit I certificati ECDSA devono utilizzare le curve P-256 o P-384 |
RSA-2048 e P-256 sono consigliati per i casi d'uso normali, utilizza altri per le migliori best practice di sicurezza |
Passaggi successivi
- Scopri di più sulla federazione di Workload Identity.
- Scopri le best practice per l'utilizzo della federazione delle identità per i workload.
- Scopri come gestire i provider e i pool di identità del workload.