Questa guida descrive come utilizzare la federazione di identità per i carichi di lavoro per consentire ai carichi di lavoro di utilizzare le credenziali di Active Directory per l'autenticazione in Google Cloud.
Se esegui carichi di lavoro Windows Server in un ambiente Active Directory, questi carichi di lavoro potrebbero avere accesso alle credenziali di Active Directory. Ad esempio:
- Un servizio Windows potrebbe essere configurato per accedere come utente di dominio.
- Un'applicazione IIS potrebbe essere configurata per essere eseguita come service account gestito dal gruppo (gMSA).
Utilizzando la federazione delle identità per i carichi di lavoro in combinazione con Active Directory Federation Services (AD FS), puoi consentire a questi carichi di lavoro di scambiare le proprie credenziali Kerberos di Active Directory con credenziali Google Cloud di breve durata. I workload possono utilizzare queste credenziali di breve durata per accedere alle API Google Cloud.
Lo scambio di credenziali Active Directory con credenziali di breve durata Google Cloud funziona concatenando due scambi di token:
- Un workload utilizza OpenID Connect (OIDC), SAML-POST o WS-Trust per richiedere un token OIDC o un'asserzione SAML da AD FS. Per l'autenticazione in AD FS, il carico di lavoro utilizza l'autenticazione integrata di Windows (IWA) e le credenziali Active Directory esistenti.
- Il carico di lavoro utilizza quindi la federazione delle identità per i carichi di lavoro per scambiare il token OIDC o l'asserzione SAML con un token del servizio token di sicurezza e, facoltativamente, per simulare l'identità di un account di servizio. Google Cloud
Questo documento mostra come automatizzare questo processo in modo da non richiedere modifiche all'applicazione utilizzando Workload Authenticator per Windows.
Prepara AD FS
Devi eseguire questi passaggi una sola volta.
Seleziona un protocollo
Il modo per preparare AD FS dipende dal protocollo che vuoi utilizzare:
SAML: puoi consentire ai workload di utilizzare SAML o WS-Trust per ottenere asserzioni SAML.
Per utilizzare SAML o WS-Trust, crea una relying party in AD FS e configura un pool di identità del workload in modo che consideri attendibili le asserzioni emesse per questa relying party.
Un workload può utilizzare il proprio utente Active Directory per l'autenticazione in AD FS utilizzando il binding SAML-POST o WS-Trust. AD FS emette quindi un'asserzione SAML che contiene informazioni sull'utente Active Directory del carico di lavoro e informazioni aggiuntive, ad esempio le appartenenze ai gruppi.
L'utilizzo di SAML o WS-Trust richiede AD FS 3.0, AD FS per Windows Server 2016 o una versione più recente di AD FS.
OIDC: puoi consentire ai carichi di lavoro di utilizzare OIDC per ottenere token OIDC.
Per utilizzare OIDC, crea un client OIDC (applicazione nativa) e una risorsa OIDC (API web) in AD FS. Quindi, configura un pool Workload Identity per considerare attendibili i token di accesso emessi per l'API web.
Un carico di lavoro può utilizzare il proprio utente Active Directory e la concessione OAuth
client_credentials
per l'autenticazione in AD FS. AD FS emette quindi un token di accesso, ma nessun token ID.Il token di accesso contiene informazioni sull'applicazione client OIDC, ma non include informazioni sull'utente Active Directory del workload o sulle sue appartenenze ai gruppi.
Poiché i token di accesso non contengono informazioni sull'utente Active Directory, l'utilizzo di OIDC può essere meno flessibile rispetto all'utilizzo di SAML o WS-Trust.
L'utilizzo di OIDC richiede AD FS per Windows Server 2016 o una versione più recente di AD FS.
Per l'accesso, l'IdP deve fornire informazioni di autenticazione firmate: gli IdP OIDC devono fornire un JWT e le risposte degli IdP SAML devono essere firmate.
Prerequisiti per gli IWA
Questa sezione descrive i prerequisiti di IWA necessari per utilizzare questa guida.
Se non hai mai utilizzato IWA con AD FS, assicurati di soddisfare i seguenti prerequisiti:
- Hai configurato AD FS per consentire l'autenticazione di Windows e per utilizzare il nome entità servizio corretto.
- Hai configurato la protezione estesa per l'autenticazione in modo che sia compatibile con la tua implementazione di AD FS.
Registra il workload
Per registrare il carico di lavoro in AD FS:
OIDC
Per consentire ai workload di utilizzare OIDC, devi disporre di due registrazioni di applicazioni in AD FS:
Una registrazione dell'applicazione di tipo applicazione nativa o applicazione server.
Una registrazione dell'applicazione di tipo API web che corrisponde a un provider del pool di identità del workload su Google Cloud.
Registrazione dell'applicazione client
Crea un'applicazione client che rappresenti il workload. Se hai più carichi di lavoro che devono accedere a Google Cloud, potrebbe essere necessario creare più applicazioni client.
Per registrare un'applicazione client in AD FS:
- Apri lo snap-in MMC di AD FS e vai a Gruppi di applicazioni.
- Fai clic su Aggiungi gruppo di applicazioni.
Nella pagina Benvenuto:
- Nel campo di testo, inserisci un nome per il cliente.
- Seleziona Applicazione server.
- Fai clic su Avanti.
Nella pagina Applicazione server:
Nel campo di testo text-field, inserisci un identificatore client (ID client) e un URI di reindirizzamento.
Se prevedi di utilizzare solo il tipo di autorizzazione
client_credentials
, l'URI di reindirizzamento non verrà utilizzato e potrai utilizzare un URI comehttp://localhost/
.Fai clic su Avanti.
Nella pagina Configura le credenziali dell'applicazione, procedi nel seguente modo:
- Scegli la modalità di autenticazione del client. Per utilizzare IWA, imposta Autenticazione integrata di Windows su attivata.
- Seleziona l'utente del dominio per cui è configurata la tua applicazione.
- Fai clic su Avanti.
Nella pagina Riepilogo, rivedi le impostazioni e fai clic su Avanti.
Fai clic su Chiudi per chiudere la finestra di dialogo.
Creazione di un'applicazione API web per il pool di identità del workload
Crea un'altra registrazione dell'applicazione di tipo API web. Questa applicazione corrisponde a un fornitore di pool di identità del workload e la utilizzi per configurare una relazione di attendibilità con Google Cloud.
Per creare l'applicazione in AD FS:
- Apri lo snap-in MMC di AD FS e vai a Gruppi di applicazioni.
- Fai clic su Aggiungi gruppo di applicazioni.
- Nella pagina di benvenuto, inserisci un nome come
Workload Identity Federation (test environment)
e seleziona API web. Quindi, fai clic su Avanti. Nella pagina Configura API web, inserisci un identificatore di relying party per l'API web.
Invece di definire un identificatore di relying party personalizzato, puoi utilizzare il seguente URI come identificatore di relying party:
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_ID/providers/WORKLOAD_PROVIDER_ID
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero di progetto del progetto Google Cloud che utilizzi per creare il pool di identità del workload.WORKLOAD_POOL_ID
: un ID a tua scelta che identifica il pool di identità del workload. Devi utilizzare lo stesso ID quando crei il pool di identità del workload in un secondo momento.WORKLOAD_PROVIDER_ID
: un ID a tua scelta che identifica il fornitore del pool di identità del workload. Devi utilizzare lo stesso ID quando crei il provider del pool di identità del workload in un secondo momento.
La formattazione dell'URI in questo modo garantisce che l'identificatore della relying party identifichi in modo univoco un fornitore del pool di identità del workload.
Avrai bisogno dell'identificatore della relying party in un secondo momento, quando configurerai il provider del pool di identità del workload.
Fai clic su Avanti.
Nella pagina Applica controllo dell'accesso dell'accesso, seleziona un criterio di accesso appropriato, quindi fai clic su Avanti.
Nella pagina Configura autorizzazioni applicazione, aggiungi l'applicazione client che hai creato in precedenza. Quindi, fai clic su Avanti.
Nella pagina Riepilogo, rivedi le impostazioni e fai clic su Avanti.
Fai clic su Chiudi per chiudere la finestra di dialogo.
SAML o WS-Trust
Crea un'attendibilità componente in AD FS:
- Apri lo snap-in MMC di AD FS.
- Vai a Affidati a componente attendibile.
- Fai clic su Aggiungi attendibilità componente.
- Nella pagina Benvenuto della procedura guidata Aggiungi attendibilità componente,
segui questi passaggi:
- Seleziona Rivendicazioni consapevoli.
- Fai clic su Avvia.
- Nella pagina Seleziona origine dati:
- Seleziona Inserisci manualmente i dati sul componente.
- Fai clic su Avanti.
Nella pagina Specifica nome visualizzato:
- Inserisci un nome per l'attendibilità.
- Fai clic su Avanti.
Nella pagina Configura certificato, fai clic su Avanti. Sebbene la federazione delle identità dei carichi di lavoro supporti SAML criptato, non è descritta in questa procedura. Per saperne di più, consulta le istruzioni di gcloud CLI in Creare il pool di identità e il fornitore, più avanti in questa guida.
Nella pagina Configura URL, procedi nel seguente modo:
SAML
Utilizza le seguenti impostazioni:
- Imposta Enable support for the SAML 2.0 WebSSO protocol (Attiva il supporto del protocollo WebSSO SAML 2.0) su enabled (attivato).
Nel campo Relying party SAML 2.0 SSO service URL (URL del servizio SSO SAML 2.0 della relying party), inserisci il seguente URL:
https://sts.googleapis.com/v1/token
WS-Trust
Mantieni le impostazioni predefinite
Fai clic su Avanti.
Nella pagina Configura identificatori, inserisci un identificatore di relying party.
Anziché definire un identificatore RP personalizzato, puoi utilizzare il seguente URI come identificatore RP:
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_ID/providers/WORKLOAD_PROVIDER_ID
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero di progetto del progetto Google Cloud che utilizzi per creare il pool di identità del workload.WORKLOAD_POOL_ID
: un ID a tua scelta che identifica il pool di identità del workload. Devi utilizzare lo stesso ID quando crei il pool di identità del workload in un secondo momento.WORKLOAD_PROVIDER_ID
: un ID a tua scelta che identifica il fornitore del pool di identità del workload. Devi utilizzare lo stesso ID quando crei il provider del pool di identità del workload in un secondo momento.
La formattazione dell'URI in questo modo garantisce che l'identificatore della relying party identifichi in modo univoco un fornitore del pool di identità del workload.
Avrai bisogno dell'identificatore della relying party in un secondo momento, quando configurerai il provider del pool di identità del workload.
Fai clic su Avanti.
Nella pagina Scegli il controllo dell'accesso dell'accesso, seleziona un criterio di controllo dell'accesso appropriato, quindi fai clic su Avanti.
Nella pagina Pronto per aggiungere la relazione di trust, rivedi le impostazioni e fai clic su Avanti.
Nella pagina Fine, fai clic su Chiudi per chiudere la finestra di dialogo.
Per essere compatibili con la federazione delle identità dei carichi di lavoro, le asserzioni SAML devono
contenere almeno un claim
che identifichi in modo univoco l'utente Active Directory. In genere, a questo scopo viene utilizzata l'attestazione ID nome, che corrisponde al valore dell'elemento NameID
nell'asserzione SAML.
Per personalizzare l'insieme di attestazioni dell'asserzione SAML, devi modificare la policy di emissione delle attestazioni del trust della relying party. Per modificare la policy di emissione delle rivendicazioni:
- Nell'elenco delle relazioni di trust del relying party, seleziona la relazione di trust che hai appena creato e fai clic su Modifica criteri di emissione delle attestazioni.
- Fai clic su Aggiungi regola.
- Nella pagina Scegli tipo di regola della procedura guidata Aggiungi regola di trasformazione dell'attestazione, svolgi le seguenti operazioni:
- Seleziona Trasforma una rivendicazione in arrivo.
- Fai clic su Avanti.
Nella pagina Configura regola di rivendicazione, configura le seguenti impostazioni:
- Nome della regola per le rivendicazioni:
Name Identifier
. - Tipo di attestazione in entrata: seleziona SID principale, UPN o un'altra attestazione per identificare in modo univoco il soggetto.
- Tipo di attestazione in uscita: ID nome.
- Formato ID nome in uscita: Non specificato.
- Nome della regola per le rivendicazioni:
Seleziona Pass through all claim values (Trasmetti tutti i valori delle rivendicazioni) e fai clic su Fine.
(Facoltativo) Configura regole aggiuntive per includere altri attributi nelle asserzioni SAML.
Fai clic su Ok per chiudere la finestra di dialogo relativa alle norme di emissione delle rivendicazioni.
Configura la federazione delle identità per i workload
Devi eseguire questi passaggi una sola volta per ogni dominio Microsoft Active Directory con cui vuoi eseguire la federazione. Puoi quindi utilizzare lo stesso pool e lo stesso provider di identità del carico di lavoro per più carichi di lavoro e in più progettiGoogle Cloud .
Per iniziare a configurare la federazione delle identità per i workload:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
È consigliabile
utilizzare un progetto dedicato per gestire i provider e i pool di identità del workload.
-
Make sure that billing is enabled for your Google Cloud project.
Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.
Definisci un mapping degli attributi e una condizione
Le credenziali specifiche dell'ambiente del tuo workload Active Directory contengono
più attributi e devi decidere quale utilizzare come
identificatore soggetto (google.subject
) in Google Cloud.
Se vuoi, puoi mappare altri attributi. Puoi quindi fare riferimento a questi attributi aggiuntivi quando concedi l'accesso alle risorse.
OIDC
Le mappature degli attributi possono utilizzare le rivendicazioni incorporate nei token di accesso AD FS come attributi di origine.
Per autenticare un'applicazione, puoi utilizzare la seguente mappatura degli attributi:
google.subject=assertion.appid
Questo mapping imposta google.subject
sul valore dell'attestazione appid
, che
contiene l'ID client dell'applicazione AD FS.
SAML o WS-Trust
I mapping degli attributi possono utilizzare le attestazioni incorporate nell'asserzione emessa da AD FS, come descritto in precedenza in questa guida.
Utilizza il seguente mapping per consentire alla federazione delle identità per i carichi di lavoro di utilizzare l'attestazione ID nome dell'asserzione SAML per identificare in modo univoco l'utente:
google.subject=assertion.subject
Se hai configurato i criteri di emissione delle rivendicazioni in modo da includere rivendicazioni aggiuntive nelle asserzioni SAML, puoi aggiungere mappature aggiuntive. Ad esempio:
google.groups=assertion.attributes['http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid'] attribute.userip=['http://schemas.microsoft.com/2014/09/requestcontext/claims/userip'][0]
(Facoltativo) Definisci una condizione dell'attributo. Le condizioni degli attributi sono espressioni CEL che possono controllare gli attributi dell'asserzione e gli attributi di destinazione.
Se la condizione dell'attributo restituisce il valore true
per una determinata credenziale, la credenziale viene accettata. In caso contrario, la credenziale viene rifiutata.
OIDC
Puoi utilizzare una condizione dell'attributo per limitare i client che possono utilizzare la federazione di Workload Identity per ottenere token Google Cloud di breve durata.
Ad esempio, la seguente condizione definisce che le applicazioni devono utilizzare IWA per l'autenticazione in AD FS:
assertion.authmethod=='http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/windows'
Per controllare l'elenco delle applicazioni che possono ottenere credenziali di breve durata per Google Cloud, non definire condizioni degli attributi. Utilizza invece le autorizzazioni client in AD FS per definire le applicazioni consentite.
SAML o WS-Trust
Puoi utilizzare una condizione dell'attributo per limitare gli utenti di Active Directory che possono utilizzare la federazione di identità del workload per ottenere token Google Cloud di breve durata.
Ad esempio, la seguente condizione consente solo le asserzioni SAML che includono una determinata rivendicazione di appartenenza a un gruppo:
"S-1-5-6" in google.groups
Crea il fornitore e il pool di identità del workload
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare la federazione delle identità per i carichi di lavoro, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Amministratore del pool di identità dei carichi di lavoro (
roles/iam.workloadIdentityPoolAdmin
) -
Amministratore account di servizio (
roles/iam.serviceAccountAdmin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci 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 devi concedere ruoli di base in un ambiente di produzione, ma puoi concederli in un ambiente di sviluppo o di test.
Console
Nella console Google Cloud , vai alla pagina Nuovo provider e pool di workload.
In Crea un pool di identità, inserisci quanto segue:
- Nome: il nome del pool. Il nome viene utilizzato anche come ID pool. Non potrai modificare l'ID pool in un secondo momento.
- Descrizione: testo che descrive lo scopo del pool.
Fai clic su Continua.
Configura le impostazioni del fornitore:
OIDC
- Seleziona un provider: OpenID Connect (OIDC).
- Nome fornitore: il nome del fornitore. Il nome viene utilizzato anche come ID fornitore. Non potrai modificare l'ID fornitore in un secondo momento.
- URL emittente:
https://ADFS_DOMAIN/adfs
doveADFS_DOMAIN
è il nome di dominio pubblico del server o della server farm AD FS.
SAML
Per configurare la federazione delle identità del workload da un IdP compatibile con SAML 2.0, puoi utilizzare le istruzioni gcloud CLI.
Fai clic su Continua.
In Configura attributi del provider, aggiungi le mappature degli attributi che hai identificato in precedenza.
In Condizioni degli attributi, inserisci la condizione dell'attributo che hai identificato in precedenza. Lascia il campo vuoto se non hai una condizione dell'attributo.
Fai clic su Salva per creare il fornitore e il pool di identità del workload.
gcloud
Crea un nuovo pool di identità del workload:
gcloud iam workload-identity-pools create WORKLOAD_POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Sostituisci quanto segue:
WORKLOAD_POOL_ID
: ID univoco del pool.DISPLAY_NAME
: il nome del pool.DESCRIPTION
: Descrizione del pool. Questa descrizione viene visualizzata quando si concede l'accesso alle identità dei pool.
Aggiungi un provider di pool di identità del workload:
OIDC
gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \ --location="global" \ --workload-identity-pool="WORKLOAD_POOL_ID" \ --issuer-uri="
https://ADFS_DOMAIN/adfs
" \ --allowed-audiences="RELYING_PARTY_ID" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"Sostituisci quanto segue:
WORKLOAD_PROVIDER_ID
: un ID univoco per il fornitore.WORKLOAD_POOL_ID
: l'ID del pool.ADFS_DOMAIN
: il nome di dominio pubblico del server o della farm AD FS.RELYING_PARTY_ID
: l'identificatore della relying party dell'applicazione API web per il pool di identità del workload in AD FS. Questo parametro è necessario solo se utilizzi un identificatore della relying party personalizzato.MAPPINGS
: elenco separato da virgole di mappature degli attributi che hai identificato in precedenza.CONDITIONS
: condizione dell'attributo che hai identificato in precedenza. Rimuovi il parametro se non hai una condizione dell'attributo.
Il prefisso
gcp-
è riservato e non può essere utilizzato in un ID pool di identità per la forza lavoro o provider di pool di identità per la forza lavoro.SAML o WS-Trust
curl -O https://ADFS_DOMAIN/federationmetadata/2007-06/federationmetadata.xml gcloud iam workload-identity-pools providers create-saml WORKLOAD_PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --idp-metadata-path="federationmetadata.xml" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Sostituisci quanto segue:
WORKLOAD_PROVIDER_ID
: un ID univoco per il provider.ADFS_DOMAIN
: il nome di dominio del server o della server farm AD FS.WORKLOAD_POOL_ID
: l'ID del pool.MAPPINGS
: un elenco separato da virgole di mappature degli attributi che hai identificato in precedenza.CONDITIONS
: (facoltativo) la condizione dell'attributo che hai creato in precedenza in questa guida.
Il prefisso
gcp-
è riservato e non può essere utilizzato in un ID pool di identità per la forza lavoro o provider di pool di identità per la forza lavoro.Esempio:
gcloud iam workload-identity-pools providers create-saml example-provider \ --location="global" \ --workload-identity-pool="pool-1" \ --idp-metadata-path="federationmetadata.xml" \ --attribute-mapping=google.subject=assertion.subject"
(Facoltativo) Accetta le asserzioni SAML criptate dal tuo IdP
Per consentire al tuo IdP SAML 2.0 di produrre asserzioni SAML criptate che possono essere accettate dalla federazione delle identità per i carichi di lavoro, procedi nel seguente modo:
- Nella federazione delle identità per i carichi di lavoro, procedi nel seguente modo:
- Crea una coppia di chiavi asimmetriche per il provider del pool di identità del workload.
- Scarica un file di certificato contenente la chiave pubblica.
- Configura l'IdP SAML in modo che utilizzi la chiave pubblica per criptare le asserzioni SAML che emette.
- Nel tuo IdP:
- Attiva la crittografia delle asserzioni, nota anche come crittografia dei token.
- Carica la chiave pubblica che hai creato nella federazione delle identità per i carichi di lavoro.
- Conferma che il tuo IdP produce asserzioni SAML criptate.
Crea chiavi di crittografia delle asserzioni SAML per la federazione delle identità per i workload
Questa sezione ti guida nella creazione di una coppia di chiavi asimmetriche che consente alla federazione delle identità per i carichi di lavoro di accettare asserzioni SAML criptate.
Google Cloud utilizza la chiave privata per decriptare le asserzioni SAML emesse dal tuo IdP. Per creare una coppia di chiavi asimmetriche da utilizzare con la crittografia SAML, esegui il seguente comando. Per saperne di più, consulta Algoritmi di crittografia SAML supportati.
gcloud iam workload-identity-pools providers keys create KEY_ID \ --workload-identity-pool WORKLOAD_POOL_ID \ --provider WORKLOAD_PROVIDER_ID \ --location global \ --use encryption \ --spec KEY_SPECIFICATION
Sostituisci quanto segue:
KEY_ID
: un nome della chiave a tua sceltaWORKLOAD_POOL_ID
: l'ID poolWORKLOAD_PROVIDER_ID
: l'ID del provider del pool di identità della forza lavoro-
KEY_SPECIFICATION
: la specifica della chiave, che può esserersa-2048
,rsa-3072
ersa-4096
.
Dopo aver creato la coppia di chiavi, esegui il seguente comando per scaricare la chiave pubblica in un file di certificato. Solo la federazione delle identità per i carichi di lavoro ha accesso alla chiave privata.
gcloud iam workload-identity-pools providers keys describe KEY_ID \ --workload-identity-pool WORKLOAD_POOL_ID \ --provider WORKLOAD_PROVIDER_ID \ --location global \ --format "value(keyData.key)" \ > CERTIFICATE_PATH
Sostituisci quanto segue:
KEY_ID
: il nome della chiaveWORKLOAD_POOL_ID
: l'ID poolWORKLOAD_PROVIDER_ID
: l'ID del provider del pool di identità della forza lavoroCERTIFICATE_PATH
: il percorso in cui scrivere il certificato, ad esempiosaml-certificate.cer
osaml-certificate.pem
Configurare l'IdP conforme a SAML 2.0 per emettere asserzioni SAML criptate
- Sposta il file del certificato sul server AD FS.
- Sul server AD FS, fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell (Amministratore).
-
In PowerShell, esegui il comando seguente per abilitare la crittografia:
Set-AdfsRelyingPartyTrust ` -TargetName NAME ` -SamlResponseSignature MessageAndAssertion ` -EncryptionCertificate PATH ` -EncryptClaims $True
Sostituisci quanto segue:
NAME
: il nome dell'attendibilità della relying partyPATH
: il percorso del file del certificato
Utenti WS-Trust: questa funzionalità è disponibile solo quando utilizzi SAML.
Dopo aver configurato l'IdP per criptare le asserzioni SAML, ti consigliamo di verificare che le asserzioni generate siano effettivamente criptate. Anche con la crittografia delle asserzioni SAML configurata, la federazione delle identità per i workload può comunque elaborare le asserzioni in testo normale.
Elimina le chiavi di crittografia della federazione delle identità per i workload
Per eliminare le chiavi di crittografia SAML, esegui questo comando:gcloud iam workload-identity-pools providers keys delete KEY_ID \ --workload-identity-pool WORKLOAD_POOL_ID \ --provider WORKLOAD_PROVIDER_ID \ --location global
Sostituisci quanto segue:
KEY_ID
: il nome della chiaveWORKLOAD_POOL_ID
: l'ID poolWORKLOAD_PROVIDER_ID
: l'ID del provider del pool di identità della forza lavoro
Algoritmi di crittografia SAML supportati
La federazione delle identità per i carichi di lavoro supporta i seguenti algoritmi di trasporto delle chiavi:
- http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
- http://www.w3.org/2009/xmlenc11#rsa-oaep"
- http://www.w3.org/2001/04/xmlenc#rsa-1_5"
La federazione delle identità per i carichi di lavoro supporta i seguenti algoritmi di crittografia a blocchi:
(Facoltativo) Attiva la crittografia SAML
Le asserzioni SAML emesse da AD FS sono firmate crittograficamente e scambiate su un canale TLS criptato. Tuttavia, le asserzioni SAML non sono criptate. Utilizzando la crittografia SAML, puoi configurare AD FS per criptare le asserzioni in modo che possano essere decriptate e lette solo dal tuo pool di identità del workload.
OIDC
Questa funzionalità è disponibile solo quando utilizzi SAML.
SAML o WS-Trust
Crea una chiave di crittografia per il fornitore del pool di identità del workload:
gcloud iam workload-identity-pools providers keys create rsa2048 \ --workload-identity-pool=POOL_ID \ --provider=WORKLOAD_PROVIDER_ID \ --location=global \ --use=ENCRYPTION \ --spec=RSA_2048
Sostituisci quanto segue:
WORKLOAD_PROVIDER_ID
: ID del fornitore.POOL_ID
: l'ID del pool.
La coppia di chiavi viene archiviata e gestita dalla federazione delle identità per i workload. Puoi esportare la chiave pubblica, ma solo la federazione di Workload Identity può accedere alla chiave privata.
Esporta un certificato contenente la chiave pubblica:
gcloud iam workload-identity-pools providers keys describe rsa2048 \ --workload-identity-pool=POOL_ID \ --provider=WORKLOAD_PROVIDER_ID \ --location=global \ --format="value(keyData.key)" > workload-identity-federation.cer
Sposta il file del certificato sul server AD FS.
Sul server AD FS, fai clic con il tasto destro del mouse su Start, quindi fai clic su Windows PowerShell (Amministratore).
In PowerShell, modifica l'attendibilità della relying party in modo che utilizzi la crittografia:
Set-AdfsRelyingPartyTrust ` -TargetName NAME ` -SamlResponseSignature MessageAndAssertion ` -EncryptionCertificate PATH ` -EncryptClaims $True
Sostituisci quanto segue:
NAME
: il nome dell'attendibilità della relying partyPATH
: il percorso del file del certificato
Autenticare un workload
Devi eseguire questi passaggi una volta per carico di lavoro.
Consenti al carico di lavoro esterno di accedere alle risorse Google Cloud
Per fornire al tuo workload l'accesso alle risorse Google Cloud , ti consigliamo di concedere l'accesso diretto alle risorse all'entità. In questo caso, il principal è l'utente federato. Alcuni prodotti Google Cloud hanno limitazioni dell'API Google Cloud. Se il tuo carico di lavoro chiama un endpoint API che presenta una limitazione, puoi invece utilizzare la rappresentazione dell'identità delaccount di serviziot. In questo caso, l'entità è il service accountGoogle Cloud , che funge da identità. Concedi l'accesso alaccount di serviziot sulla risorsa.
Accesso diretto alle risorse
Puoi concedere l'accesso a un'identità federata direttamente alle 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 accedere 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 l'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 pool di workloadSUBJECT
: il soggetto individuale 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 pool di workloadGROUP
: il gruppo mappato dal tuo 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 pool di workloadATTRIBUTE_NAME
: uno degli attributi mappati dal tuo IdPATTRIBUTE_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 che concedono.
Fai clic su Salva.
gcloud
Per utilizzare gcloud CLI per concedere ruoli IAM su una risorsa in un progetto, procedi nel seguente modo:
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
) alle identità esterne che soddisfano determinati criteri, esegui questo 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 workload.POOL_ID
: l'ID pool del pool di identità del workloadSUBJECT
: il valore previsto per l'attributo che hai mappato sugoogle.subject
GROUP
: il valore previsto per l'attributo che hai mappato sugoogle.groups
ATTRIBUTE_NAME
: il nome di un attributo personalizzato nel mapping degli attributiATTRIBUTE_VALUE
: il valore dell'attributo personalizzato nella mappatura degli attributi
Puoi concedere ruoli su qualsiasi risorsa Google Cloud che supporta i criteri di autorizzazione IAM.
Simulazione dell'identità dei service account
Per creare un account di servizio per il workload esterno:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
Crea un service account che rappresenti il workload. Ti consigliamo di utilizzare un account di servizio dedicato per ogni workload. Il 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 il account di servizio.
Concedi al account di servizio l'accesso alle risorse a cui vuoi che accedano le identità esterne.
Per consentire all'identità federata di rappresentare il account di servizio, procedi nel seguente modo:
Console
Per utilizzare la console Google Cloud per concedere ruoli IAM a un'identità federata con account di servizio:
Service Account nello stesso progetto
Per concedere l'accesso utilizzando la simulazione dell'identità del account di servizio per un account di servizio nello stesso progetto:
Vai alla pagina Pool di identità del workload.
Seleziona Concedi l'accesso.
Nella finestra di dialogo Concedi l'accesso al service account, seleziona Concedi l'accesso utilizzando la simulazione dell'identità del service account.
Nell'elenco Service account, seleziona il account di servizio per le identità esterne da rappresentare e procedi nel seguente modo:
Per scegliere quali identità nel pool possono rappresentare l'account di servizio, esegui una delle seguenti azioni:
Per consentire solo a identità specifiche del pool di identità del workload di simulare l'identità del account di servizio, seleziona Solo le identità corrispondenti al filtro.
Nell'elenco Nome attributo, seleziona l'attributo in base al quale vuoi filtrare.
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'attestazionesub
nei token emessi dal tuo IdP esterno.
Per salvare la configurazione, fai clic su Salva e poi su Ignora.
Service account in un altro progetto
Per concedere l'accesso utilizzando la rappresentazione dell'account di servizio per un service account in un altro progetto, procedi nel seguente modo:
Vai alla pagina Service Accounts.
Seleziona l'account di servizio che vuoi rappresentare.
Fai clic su Gestisci accesso.
Fai clic su Aggiungi entità.
Nel campo Nuova entità, inserisci uno dei seguenti identificatori dell'entità per le identità nel tuo pool che rappresenteranno 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 pool di workloadSUBJECT
: il soggetto individuale 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 pool di workloadGROUP
: il gruppo mappato dal tuo 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 pool di workloadATTRIBUTE_NAME
: uno degli attributi mappati dal tuo IdPATTRIBUTE_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 pool di workload
In Seleziona un ruolo, seleziona il ruolo Utente Workload Identity (
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à federata o a un insieme di entità, esegui questo
comando. Per scoprire di più sugli identificatori dei principal della federazione delle identità per i workload, consulta Tipi di principal.
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 del account di servizioPROJECT_NUMBER
: il numero di progetto del progetto che contiene il pool di identità del workload.POOL_ID
: l'ID pool del pool di identità del workloadSUBJECT
: il valore previsto per l'attributo che hai mappato sugoogle.subject
GROUP
: il valore previsto per l'attributo che hai mappato sugoogle.groups
ATTRIBUTE_NAME
: il nome di un attributo personalizzato nel mapping degli attributiATTRIBUTE_VALUE
: il valore dell'attributo personalizzato nella mappatura degli attributi
Creare una configurazione delle credenziali
Puoi consentire alle librerie client di Cloud e a strumenti come gcloud CLI e Terraform di utilizzare le credenziali di Active Directory per l'autenticazione a Google Cloud utilizzando Workload Authenticator per Windows.
Workload Authenticator per Windows è uno strumento open source che funge da plug-in per le librerie client Cloud e strumenti come la gcloud CLI:
- Quando lo strumento o la libreria ha bisogno di nuove credenziali, avvia Workload Authenticator in background.
- Workload Authenticator utilizza OIDC, SAML o WS-Trust per ottenere un nuovo token o un'asserzione SAML da AD FS e lo restituisce allo strumento o alla libreria.
- Lo strumento o la libreria scambia quindi il token o l'asserzione SAML con credenziali Google Cloud di breve durata utilizzando la federazione delle identità del workload.
Per utilizzare Workload Authenticator per Windows, devi creare un file di configurazione delle credenziali. Questo file definisce quanto segue:
- Dove trovare l'eseguibile di Workload Authenticator per Windows (
wwauth.exe
) e con quali parametri eseguirlo - Quale fornitore e pool di identità del workload utilizzare
- Quale account di servizio rappresentare
Per creare un file di configurazione delle credenziali, esegui le seguenti operazioni sul server Windows che esegue il tuo workload:
- Fai clic con il tasto destro del mouse sul pulsante Start (o premi Win+X) e poi su Windows PowerShell.
Scarica Workload Authenticator per Windows e salvalo in una posizione accessibile al tuo workload:
(New-Object Net.WebClient).DownloadFile( "https://github.com/GoogleCloudPlatform/iam-windows-authenticator/releases/latest/download/wwauth.exe", "${env:ProgramData}\wwauth.exe")
Se crei un file di configurazione delle credenziali utilizzando Workload Authenticator per Windows, il file contiene il percorso del relativo eseguibile. Se in un secondo momento elimini o sposti l'eseguibile, i workload non saranno in grado di trovarlo e utilizzarlo.
Avvia
wwauth.exe
:& ${env:ProgramData}\wwauth.exe
Si apre una finestra di dialogo di configurazione:
Seleziona la scheda AD FS e inserisci le seguenti impostazioni:
URI emittente del server AD FS: URI pubblico del server o della server farm AD FS.
https://ADFS_DOMAIN/adfs/
Sostituisci
ADFS_DOMAIN
con il nome di dominio pubblico del tuo server AD FS o della tua server farm.
Le impostazioni successive dipendono dal protocollo che vuoi utilizzare:
OIDC
- Protocollo: AdfsOidc
- ID relying party: mantieni il valore predefinito.
- ID client Identificatore client (ID client) dell'applicazione server in AD FS.
SAML
- Protocollo: AdfsSamlPost
- URL Assertion Consumer Service:
https://sts.googleapis.com/v1/token
. - Richieste di firma tramite certificato: disattivato
WS-Trust
- Protocollo: AdfsWsTrust
Seleziona la scheda Workload Identity e inserisci le seguenti impostazioni:
- Numero progetto: il numero del progetto che contiene il pool di identità del workload
- ID pool: ID del pool di identità del workload
- ID provider: ID del provider del pool di identità del workload
- Simula identità service account: abilitato se utilizzi la simulazione dell'identità del account di servizio
- Indirizzo email: l'indirizzo email del account di servizio, se utilizzi la simulazione dell'identità delaccount di serviziot
Seleziona la scheda AD FS e verifica che il campo ID relying party ora contenga l'URL del provider del pool di identità del workload.
Fai clic su Applica e scegli una posizione in cui salvare il file di configurazione delle credenziali.
A differenza di una chiave del service account, un file di configurazione delle credenziali non contiene secret e non deve essere mantenuto riservato. I dettagli sul file di configurazione delle credenziali sono disponibili all'indirizzo https://google.aip.dev/auth/4117.
Ora puoi testare la configurazione:
Seleziona un utente di Active Directory da utilizzare per il test. Può trattarsi dell'utente Active Directory del workload o dell'utente con cui hai eseguito l'accesso.
Per testare la configurazione con l'utente attuale, fai clic su Testa.
Per eseguire il test con un altro utente, seleziona Test > Testa configurazione come utente e inserisci le credenziali dell'utente.
Lo strumento ora tenta di autenticarsi su Google Cloud eseguendo i seguenti passaggi:
- Acquisisci un token OIDC o un'asserzione SAML da AD FS.
- Ottieni un token del servizio token di sicurezza Google.
- Rappresenta il account di servizio, se utilizzi l'impersonificazione delaccount di serviziot.
Se l'autenticazione ha esito positivo, viene visualizzato il messaggio Test completato correttamente:
Utilizza la configurazione delle credenziali per accedere a Google Cloud
Per consentire a strumenti e librerie client di utilizzare la configurazione delle credenziali, esegui le seguenti operazioni su Windows Server che esegue il tuo workload:
- Fai clic con il tasto destro del mouse sul pulsante Start e poi su Esegui.
- Inserisci
sysdm.cpl
e fai clic su Ok. - Nella scheda Avanzate, fai clic su Variabili di ambiente.
Nella sezione Variabili di sistema, aggiungi due nuove variabili:
Nome Valore GOOGLE_APPLICATION_CREDENTIALS
Percorso del file di configurazione delle credenziali GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
1
Fai clic su OK.
Utilizza una libreria o uno strumento client che supporti la federazione delle identità per i carichi di lavoro e che possa trovare automaticamente le credenziali:
C++
Le librerie client per C++ supportano la federazione delle identità per i workload a partire dalla versione v2.6.0.Google Cloud Per utilizzare la federazione delle identità per i carichi di lavoro, devi creare le librerie client con gRPC versione 1.36.0 o successive.
Vai
Le librerie client per Go supportano la federazione delle identità per i carichi di lavoro se utilizzano la versione v0.0.0-20210218202405-ba52d332ba99 o successive del modulo
golang.org/x/oauth2
.Per controllare quale versione di questo modulo utilizza la tua libreria client, esegui i seguenti comandi:
cd $GOPATH/src/cloud.google.com/go go list -m golang.org/x/oauth2
Java
Le librerie client per Java supportano la federazione delle identità per i carichi di lavoro se utilizzano la versione 0.24.0 o successive dell'artefatto
com.google.auth:google-auth-library-oauth2-http
.Per controllare quale versione di questo artefatto utilizza la libreria client, esegui il seguente comando Maven nella directory dell'applicazione:
mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
Node.js
Le librerie client per Node.js supportano la federazione delle identità per i carichi di lavoro se utilizzano la versione 7.0.2 o successive del pacchetto
google-auth-library
.Per controllare quale versione di questo pacchetto utilizza la tua libreria client, esegui questo comando nella directory dell'applicazione:
npm list google-auth-library
Quando crei un oggetto
GoogleAuth
, puoi specificare un ID progetto oppure consentire aGoogleAuth
di trovare automaticamente l'ID progetto. Per trovare automaticamente l'ID progetto, il account di servizio nel file di configurazione deve disporre del ruolo Browser (roles/browser
) o di un ruolo con autorizzazioni equivalenti per il tuo progetto. Per maggiori dettagli, consulta iREADME
per il pacchettogoogle-auth-library
.Python
Le librerie client per Python supportano la federazione delle identità per i carichi di lavoro se utilizzano la versione 1.27.0 o successive del pacchetto
google-auth
.Per controllare quale versione di questo pacchetto utilizza la tua libreria client, esegui il comando seguente 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 ambiente
GOOGLE_CLOUD_PROJECT
oppure puoi 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 per il tuo progetto. Per maggiori dettagli, consulta la guida dell'utente per il pacchettogoogle-auth
.gcloud
Per eseguire l'autenticazione utilizzando la federazione delle identità per i carichi di lavoro, 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 per la federazione delle identità per i workload in gcloud CLI è disponibile nella versione 363.0.0 e successive di gcloud CLI.
Terraform
Il Google Cloud provider supporta la federazione delle identità per i carichi di lavoro se utilizzi la versione 3.61.0 o successive:
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.61.0" } } }
bq
Per l'autenticazione tramite la federazione delle identità per i carichi di lavoro, utilizza il comando
gcloud auth login
, come segue: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 in bq è disponibile nella versione 390.0.0 e successive della gcloud CLI.
Passaggi successivi
- Scopri di più sulla federazione delle identità per i workload.
- Scopri le best practice per l'utilizzo della federazione delle identità per i workload.
- Scopri come gestire i fornitori e i pool di identità del workload.