Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un servizio eseguito in Google Cloud in genere esegue l'autenticazione per Microsoft Entra ID con un segreto dell'applicazione Microsoft Entra archiviato in modo che possa raggiungere Azure risorse. È necessario proteggere e ruotare il segreto e il servizio affronta un'interruzione se il segreto scade prima di sostituirlo.
La federazione dell'identità del carico di lavoro rimuove il segreto archiviato. Si configura un'applicazione Microsoft Entra per considerare attendibile il token ID che Google rilascia a un account del servizio Google Cloud e il servizio scambia il token rilasciato da Google per un token di accesso Microsoft Entra anziché archiviare credenziali.
In questa esercitazione si identifica un account del servizio Google Cloud, lo si esegue la federazione con un'applicazione Microsoft Entra e si scambia un token ID rilasciato da Google per un token di accesso Microsoft Entra usato dal carico di lavoro per chiamare una risorsa Azure, ad esempio Archiviazione BLOB di Azure.
L'esercitazione include tre parti sequenziali che vengono compilate in uno scenario completato. Ogni parte dipende dall'output della parte prima.
In questa esercitazione, imparerai a:
- Identificare un account del servizio Google Cloud e ottenere l'ID univoco.
- Configurare un'applicazione Microsoft Entra per considerare attendibile il token rilasciato da Google.
- Exchange un token ID Google per un token di accesso Microsoft Entra e accedere a una risorsa Azure.
Il diagramma seguente illustra il flusso di federazione dell'identità del carico di lavoro: un carico di lavoro ottiene un token da un provider di identità esterno, lo scambia con il Microsoft Identity Platform per un token di accesso e usa tale token di accesso per raggiungere una risorsa Azure. In questa esercitazione il provider di identità esterno è Google Cloud e il token è un token ID rilasciato da Google.
Prerequisiti
- Un tenant Microsoft Entra e una sottoscrizione Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Un progetto Google Cloud e un carico di lavoro eseguito in un servizio Google Cloud che può ottenere un token ID per un account del servizio, ad esempio Motore di app o Motore di calcolo.
- Accesso alla console di Google Cloud con l'autorizzazione per visualizzare gli account del servizio in IAM & Admin.
- Lo strumento da riga di comando interfaccia della riga di comando di Azure (
az) installato e configurato per raggiungere il tenant. È anche possibile completare i passaggi Microsoft Entra nel Interfaccia di amministrazione di Microsoft Entra. - Autorizzazione per aggiungere credenziali di identità federate a una registrazione dell'app o a un'identità gestita. Per aggiungere una credenziale federata a una registrazione dell'app, l'account deve essere un proprietario dell'app o conservare uno dei ruoli Amministratore applicazione, Sviluppatore di applicazioni o Amministratore applicazioni cloud oppure disporre dell'autorizzazione
microsoft.directory/applications/credentials/update.
Parte 1: Identificare un account del servizio Google Cloud
Il carico di lavoro di Google Cloud necessita di un'identità per cui Google può emettere token. Gli account del servizio Google Cloud forniscono questa identità. Usare l'account del servizio predefinito del progetto Google Cloud o creare un account di servizio dedicato per il carico di lavoro.
Google rilascia token ID per un account del servizio in cui l'attestazione sub (oggetto) è l'ID univoco dell'account del servizio e l'attestazione iss (autorità emittente) è https://accounts.google.com. Usare entrambi i valori per configurare l'attendibilità nell'applicazione Microsoft Entra nella parte 2.
Nella console di Google Cloud passare adAccount del serviziodi amministrazione> e IAM.
Selezionare l'account del servizio eseguito dal carico di lavoro.
Nei dettagli dell'account del servizio individuare l'ID univoco e copiare il valore. Questo valore è l'attestazione
subnei token che Google rilascia per l'account del servizio.
Registrare l'ID univoco come <service-account-unique-id>. Viene usato come oggetto delle credenziali di identità federate nella parte 2.
Parte 2: Configurare un'applicazione Microsoft Entra per considerare attendibile il token Google
In questa parte si aggiungono credenziali di identità federate a un'applicazione Microsoft Entra in modo che Microsoft Entra ID considera attendibili i token ID che Google rilascia per l'account del servizio. Una credenziale di identità federata richiede tre input:
-
subject: deve corrispondere all'attestazionesubnel token rilasciato da Google, ovvero l'ID univoco dell'account del servizio,<service-account-unique-id>. -
issuer: deve corrispondere all'attestazioneiss. Per Google Cloud, questo valore èhttps://accounts.google.com. L'autorità emittente deve essere conforme alla specifica di individuazione openID Connect, perché Microsoft Entra ID usa l'URL dell'autorità di certificazione per recuperare le chiavi che convalidano il token. -
audiences: deve corrispondere all'attestazioneaud. Usare il valoreapi://AzureADTokenExchangeconsigliato Microsoft .
Un'applicazione Microsoft Entra supporta un numero limitato di credenziali di identità federate. Per il limite corrente e altre restrizioni, vedere Considerazioni importanti e restrizioni per le credenziali di identità federate.
Creare un file denominato
credential.jsoncon il contenuto seguente. Sostituire<service-account-unique-id>con l'ID univoco copiato nella parte 1.{ "name": "AccessFromGoogle", "issuer": "https://accounts.google.com", "subject": "<service-account-unique-id>", "audiences": ["api://AzureADTokenExchange"], "description": "Federated credential for a Google Cloud workload" }Aggiungere le credenziali dell'identità federata alla registrazione dell'app. Sostituire
<your-app-id>con l'ID applicazione (client) della registrazione dell'app.az ad app federated-credential create --id <your-app-id> --parameters credential.json
È anche possibile aggiungere le credenziali federate nella Interfaccia di amministrazione di Microsoft Entra. Passare a Registrazioni app> l'app >Certificati e segreti>Credenziali federate>Aggiungi credenziali e selezionare lo scenario Altro autorità di certificazione. Specificare https://accounts.google.com come emittente e l'ID univoco dell'account del servizio come oggetto. Per i passaggi dettagliati, vedere Configurare un'app per considerare attendibile un provider di identità esterno.
Per configurare le credenziali in un'identità gestita assegnata dall'utente anziché in una registrazione dell'app, usare il comando seguente. È necessario il ruolo Proprietario o Collaboratore nell'identità gestita. Per la procedura dettagliata, vedere Configurare un'identità gestita assegnata dall'utente per considerare attendibile un provider di identità esterno.
az identity federated-credential create \
--name AccessFromGoogle \
--identity-name <your-identity-name> \
--resource-group <your-resource-group> \
--issuer https://accounts.google.com \
--subject <service-account-unique-id> \
--audience api://AzureADTokenExchange
Concedere all'app o all'identità gestita l'accesso alle risorse Azure chiamate dal carico di lavoro, ad esempio un'assegnazione di ruolo nell'account di archiviazione.
Parte 3: Exchange un token Google per un token di accesso Microsoft Entra
In questa parte, il carico di lavoro ottiene un token ID rilasciato da Google per l'account del servizio e lo scambia per un token di accesso Microsoft Entra, che usa per chiamare una risorsa Azure.
Un servizio Google Cloud, ad esempio Motore di app o Motore di calcolo, richiede un token ID per il proprio account di servizio dal server di metadati Google. Google gestisce le chiavi di firma, quindi il carico di lavoro non necessita di chiavi archiviate.
Richiedere un token ID Google dal server di metadati. Il gruppo di destinatari nella richiesta deve corrispondere al gruppo di destinatari configurato nella credenziale dell'identità federata,
api://AzureADTokenExchange. Il frammento di codice Node.js seguente richiede il token e lo restituisce come stringa. Il concetto è lo stesso in qualsiasi linguaggio.async function getGoogleIdToken() { const endpoint = "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=api://AzureADTokenExchange"; const headers = { "Metadata-Flavor": "Google" }; const response = await fetch(endpoint, { method: "GET", headers }); return response.text(); }Exchange il token ID Google per un token di accesso Microsoft Entra usando
ClientAssertionCredentialAzure Identity SDK.ClientAssertionCredentialaccetta un callback che restituisce l'asserzione federata, in questo caso il token ID Google. Specificare l'ID tenant Microsoft Entra cometenantIde l'ID applicazione (client) della registrazione dell'app comeclientId.import { ClientAssertionCredential } from "@azure/identity"; const credential = new ClientAssertionCredential(tenantId, clientId, getGoogleIdToken);Usare le credenziali con qualsiasi client Azure SDK. Ad esempio, per chiamare Archiviazione BLOB di Azure:
const { BlobServiceClient } = require("@azure/storage-blob"); const blobClient = new BlobServiceClient(blobUrl, credential);
Quando il client richiede un token, richiama il callback per recuperare un nuovo token ID Google, scambia il token Google con Microsoft Identity Platform per un token di accesso e memorizza nella cache il token di accesso risultante. Poiché ClientAssertionCredential fornisce l'asserzione federata tramite un callback, il carico di lavoro non archivia mai un segreto.
ClientAssertionCredentialè disponibile negli SDK di identità Azure, tra cui .NET, Java, JavaScript, Python e Go. Le librerie MSAL supportano anche le asserzioni client se è necessario un controllo di livello inferiore sullo scambio di token.
Il carico di lavoro di Google Cloud può ora accedere Microsoft Entra risorse protette senza segreti archiviati.
Pulire le risorse
Se non sono più necessarie le risorse create in questa esercitazione, rimuoverle per evitare addebiti in corso:
Eliminare le credenziali dell'identità federata dalla registrazione dell'app:
az ad app federated-credential delete \ --id <your-app-id> \ --federated-credential-id AccessFromGoogleSe è stato creato un account del servizio Google Cloud dedicato per questa esercitazione, eliminarlo nella console di Google Cloud in Account del servizio di amministrazione> e IAM.
Rimuovere le assegnazioni di ruolo aggiunte per concedere all'app o all'identità gestita l'accesso alle risorse Azure.
Contenuti correlati
- Federazione delle identità del carico di lavoro
- Configurare un'app per considerare attendibile un provider di identità esterno
- Configurare un'identità gestita assegnata dall'utente per considerare attendibile un provider di identità esterno
- Considerazioni importanti e restrizioni per le credenziali di identità federate
- Creare un oggetto federatedIdentityCredential (Microsoft Graph)