Configurare un'app per considerare attendibile un provider di identità esterno
Questo articolo descrive come gestire una credenziale di identità federata in un'applicazione in Microsoft Entra ID. La credenziale dell'identità federata crea una relazione di trust tra un'applicazione e un provider di identità esterno (IdP).
È quindi possibile configurare un carico di lavoro software esterno per scambiare un token dal provider di identità esterno per un token di accesso dalla piattaforma di identità Microsoft. Il carico di lavoro esterno può accedere alle risorse protette di Microsoft Entra senza dover gestire i segreti (in scenari supportati). Per altre informazioni sul flusso di lavoro di scambio di token, vedere federazione dell'identità del carico di lavoro.
Questo articolo illustra come creare, elencare ed eliminare le credenziali di identità federate in un'applicazione in Microsoft Entra ID.
Considerazioni e restrizioni importanti
Per creare, aggiornare o eliminare una credenziale di identità federata, l'account che esegue l'azione deve avere il ruolo amministratore applicazione , Sviluppatore di applicazioni, Amministratore applicazioni cloudo Proprietario applicazione. L'autorizzazione microsoft.directory/applications/credentials/update è necessaria per aggiornare una credenziale di identità federata.
È possibile aggiungere al massimo 20 credenziali di identità federate a un'applicazione o a un'identità gestita assegnata dall'utente.
Quando si configura una credenziale di identità federata, sono disponibili diverse informazioni importanti da fornire:
issuer e soggetto sono le informazioni chiave necessarie per configurare la relazione di fiducia. La combinazione di
issuer
esubject
deve essere univoca nell'app. Quando il carico di lavoro del software esterno richiede a Microsoft Identity Platform di scambiare il token esterno con un token di accesso, i valori del criterio di identità federata per l'emittente e il soggetto vengono controllati rispetto alle dichiarazioniissuer
esubject
fornite nel token esterno. Se il controllo di convalida viene superato, la piattaforma di identità Microsoft emette un token di accesso al carico di lavoro esterno del software.emissore è l'URL del provider di identità esterno e deve corrispondere alla richiesta
issuer
del token esterno scambiato. Obbligatorio. Se l'attestazioneissuer
contiene spazi vuoti iniziali o finali nel valore, lo scambio di token viene bloccato. Questo campo ha un limite di caratteri di 600 caratteri.oggetto è l'identificatore del carico di lavoro software esterno e deve corrispondere all'attestazione
sub
(subject
) del token esterno scambiato. oggetto non ha un formato fisso, perché ogni IdP usa il proprio: a volte un GUID, a volte un identificatore delimitato da due punti, talvolta stringhe arbitrarie. Questo campo ha un limite di caratteri di 600 caratteri.Importante
I valori di impostazione dell'oggetto devono corrispondere esattamente alla configurazione del flusso di lavoro di GitHub. In caso contrario, Microsoft Identity Platform esaminerà il token esterno in ingresso e rifiuterà lo scambio per un token di accesso. Non riceverai un errore, lo scambio fallisce senza errori.
Importante
Se si aggiungono accidentalmente le informazioni errate sul carico di lavoro esterno nell'oggetto l'impostazione della credenziale dell'identità federata viene creata correttamente senza errori. L'errore non diventa evidente fino a quando lo scambio di token non riesce.
gruppi di destinatari elenca i gruppi di destinatari che possono essere visualizzati nel token esterno. Obbligatorio. È necessario aggiungere un singolo valore del gruppo di destinatari, con un limite di 600 caratteri. Il valore consigliato è "api://AzureADTokenExchange". Indica ciò che la piattaforma di identità di Microsoft deve accettare nella dichiarazione
aud
all'interno del token in ingresso.name è l'identificatore univoco per la credenziale di identità federata. Obbligatorio. Questo campo ha un limite di 3-120 caratteri e deve essere compatibile con l'URL. Sono supportati caratteri alfanumerici, trattini o caratteri di sottolineatura, il primo carattere deve essere solo alfanumerico. Una volta creato, non è modificabile.
descrizione è la descrizione fornita dall'utente delle credenziali di identità federate. Opzionale. La descrizione non viene convalidata o controllata da Microsoft Entra ID. Questo campo ha un limite di 600 caratteri.
I caratteri jolly non sono supportati in alcun valore della proprietà delle credenziali dell'identità federata.
Per altre informazioni sulle aree supportate, tempo necessario per propagare gli aggiornamenti delle credenziali federate, le autorità emittenti supportate e altro ancora, vedere Considerazioni importanti e restrizioni per le credenziali di identità federate.
Prerequisiti
- Creare una registrazione dell'applicazione o un'identità gestita in Microsoft Entra ID. Concedere all'app l'accesso alle risorse di Azure destinate al carico di lavoro del software esterno.
- Trovare l'ID oggetto dell'app (non l'ID applicazione (client)) necessario nei passaggi seguenti. È possibile trovare l'ID oggetto dell'app nel centro di amministrazione Microsoft Entra. Passare all'elenco delle registrazioni delle app e selezionare la registrazione della tua app. In Panoramicaè possibile trovare l'ID oggetto .
- Ottenere le informazioni oggetto
e dell'autorità emittente per il carico di lavoro idP e software esterno, necessari nei passaggi seguenti.
Configurare una credenziale di identità federata in un'app
GitHub Actions
Per aggiungere un'identità federata per GitHub actions, seguire questa procedura:
Trova la registrazione della tua app nel portale di amministrazione di Microsoft Entra, nella sezione dedicata alle registrazioni delle app . Selezionare Certificates & secrets nel riquadro di spostamento a sinistra, selezionare la scheda credenziali federate e selezionare Aggiungi credenziale.
Nella menu a tendina scenario di credenziali federate , selezionare GitHub Actions che distribuiscono le risorse di Azure.
Specificare il dell'organizzazione
e repository per il flusso di lavoro di GitHub Actions. Per Tipo di entità, selezionare Environment, Branch, Pull requesto Tag e specificare il valore. I valori devono corrispondere esattamente alla configurazione nel flusso di lavoro gitHub . La corrispondenza dei pattern non è supportata per rami e tag. Specificare un ambiente se il flusso di lavoro "on-push" viene eseguito su molti branch o tag. Per altre informazioni, leggere gli esempi .
Aggiungere un Nome per le credenziali federate.
I campiissuer
, Audiences eIdentificatore oggetto popolano automaticamente in base ai valori immessi.Selezionare Aggiungi per configurare le credenziali federate.
Utilizzare i seguenti valori dalla registrazione dell'applicazione di Microsoft Entra per il workflow di GitHub.
AZURE_CLIENT_ID
l'ID applicazione (client)AZURE_TENANT_ID
l'ID directory (tenant)Lo screenshot seguente illustra come copiare l'ID applicazione e l'ID tenant.
AZURE_SUBSCRIPTION_ID
il tuo ID abbonamento. Per ottenere l'ID sottoscrizione, aprire Sottoscrizioni nel portale di Azure e trovare la sottoscrizione. Copiare quindi l'ID sottoscrizione .
Esempi di tipi di entità
Esempio di filiale
Per un flusso di lavoro attivato da un evento di richiesta push o pull nel ramo main:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Specificare un tipo di entità di Branch e un nome del branch GitHub chiamato "main".
Esempio di ambiente
Per Lavori associati a un ambiente denominato "produzione":
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Specificare un tipo di entità di Environment e un nome di ambiente GitHub di "produzione".
Esempio di tag
Ad esempio, per un flusso di lavoro attivato da un push al tag denominato "v2":
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
Specificare un tipo di entità di tag e un nome di tag GitHub di "v2".
Esempio di pull request
Per un flusso di lavoro attivato da un evento di richiesta pull, specificare un tipo di entità di richiesta pull
Kubernetes
Trova la registrazione della tua app nella sezione registrazioni app dell'interfaccia di amministrazione di Microsoft Entra . Selezionare Certificati & Segreti nel riquadro di spostamento a sinistra, selezionare la scheda Credenziali federate e selezionare Aggiungi credenziale.
Selezionare lo scenario di Kubernetes che accede alle risorse di Azure dal menu a discesa.
Immettere l'URL del rilascio del cluster , lo spazio dei nomi , il nome dell'account del servizio e il nome :
- L'URL dell'emittente del cluster è l'URL dell'emittente OIDC per il cluster gestito o l'URL dell'emittente OIDC per un cluster autogestito.
- Nome dell'account del servizio è il nome dell'account del servizio di Kubernetes, che fornisce un'identità per i processi eseguiti in un Pod.
- spazio dei nomi è lo spazio dei nomi dell'account del servizio.
- Nome è il nome della credenziale federata, che non può essere modificata in un secondo momento.
Altri provider di identità
Trova la registrazione dell'app nell'area Registrazioni delle app dell'interfaccia di amministrazione di Microsoft Entra . Selezionare Certificati & Segreti nel riquadro di spostamento a sinistra, selezionare la scheda Credenziali federate e selezionare Aggiungi credenziali.
Selezionare lo scenario Altro emittente dal menu a discesa.
Specificare i campi seguenti (usando un carico di lavoro software in esecuzione in Google Cloud come esempio):
- Nome è il nome della credenziale federata, che non può essere modificata in un secondo momento.
-
identificatore del soggetto: deve corrispondere alla dichiarazione
sub
nel token rilasciato dal provider di identità esterno. In questo esempio che usa Google Cloud, oggetto è l'ID univoco dell'account del servizio che si intende usare. -
Issuer: deve corrispondere all'attestazione
iss
nel token emesso dal provider di identità esterno. URL conforme alla specifica di individuazione OIDC. Microsoft Entra ID usa questo URL dell'autorità di certificazione per recuperare le chiavi necessarie per convalidare il token. Per Google Cloud, l'autorità di certificazione èhttps://accounts.google.com
.
Elencare le credenziali di identità federate in un'app
Trovare la registrazione dell'app nell'area delle registrazioni delle app del portale di amministrazione di Microsoft Entra . Selezionare certificati segreti & nel riquadro di spostamento a sinistra e selezionare la scheda credenziali federate. Le credenziali federate configurate nell'app sono elencate.
Eliminare una credenziale di identità federata da un'app
Trova la registrazione della tua app nell'area dedicata alla registrazione delle applicazioni del centro amministrativo di Microsoft Entra . Selezionare Certificati & segreti nel pannello di navigazione a sinistra e selezionare la scheda Credenziali Federate. Le credenziali federate configurate nell'app sono elencate.
Per eliminare una credenziale di identità federata, selezionare l'icona elimina per la credenziale.
Configurare una credenziale di identità federata flessibile (anteprima)
- Passare a Microsoft Entra ID e selezionare l'applicazione in cui si desidera configurare le credenziali dell'identità federata.
- Nel riquadro di spostamento a sinistra selezionare Certificati & segreti.
- Nella scheda credenziali federate selezionare + Aggiungi credenziali.
- Nella finestra Aggiungi una credenziale visualizzata, dal menu a discesa accanto a Scenario di credenziale federata, selezionare Altro emittente.
- In Valore immettere l'espressione corrispondente alla dichiarazione da usare.
Prerequisiti
- Se non si ha già un account Azure, registrarsi per un account gratuito prima di continuare.
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Se si esegue in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se usi un'installazione locale, accedi all'interfaccia della riga di comando di Azure usando il comando az login. Per completare il processo di autenticazione, seguire i passaggi visualizzati nel terminale. Per altre opzioni di accesso, vedere Accedere con l'interfaccia della riga di comando di Azure.
Quando richiesto, installare l'estensione dell'interfaccia della riga di comando di Azure alla prima utilizzazione. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
- Creare una registrazione dell'app in Microsoft Entra ID. Concedere all'app l'accesso alle risorse di Azure destinate al carico di lavoro del software esterno.
- Trovare l'ID oggetto, l'ID dell'app (client) o l'URI dell'identificatore dell'app, che sono necessari nei passaggi seguenti. Puoi trovare questi valori nel centro di amministrazione di Microsoft Entra . Passare all'elenco delle applicazioni registrate e selezionare la registrazione dell'app. In Panoramica->Essentials, ottieni il valore ID oggetto, il valore ID applicazione (client), o l'URI ID applicazione , necessari nei passaggi seguenti.
- Ottenere le informazioni dell'oggetto e dell'emittente per il tuo IdP esterno e per il carico di lavoro software, che sono necessari nei passaggi seguenti.
Configurare una credenziale di identità federata in un'app
Eseguire il comando az ad app federated-credential create per creare una nuova credenziale di identità federata sulla tua app.
Il parametro id
specifica l'URI dell'identificatore, l'ID applicazione o l'ID oggetto dell'applicazione. Il parametro parameters
specifica i parametri, in formato JSON, per la creazione delle credenziali di identità federate.
Esempio di GitHub Actions
Il nome specifica il nome della credenziale dell'identità federata.
L'emittente identifica il percorso del provider OIDC di GitHub: https://token.actions.githubusercontent.com/
. Quest'emittente diventa attendibile per la tua applicazione Azure.
L'oggetto identifica l'organizzazione, il repository e l'ambiente GitHub per il flusso di lavoro di GitHub Actions. Quando il flusso di lavoro di GitHub Actions richiede a Microsoft Identity Platform di scambiare un token GitHub per un token di accesso, i valori nelle credenziali dell'identità federata vengono controllati rispetto al token GitHub fornito. Prima che Azure conceda un token di accesso, la richiesta deve corrispondere alle condizioni definite qui.
- Per i lavori associati a un ambiente:
repo:< Organization/Repository >:environment:< Name >
- Per i job non associati a un ambiente, includere il percorso di riferimento per branch/tag in base al percorso di riferimento usato per attivare il flusso di lavoro:
repo:< Organization/Repository >:ref:< ref path>
. Ad esempio,repo:n-username/ node_express:ref:refs/heads/my-branch
orepo:n-username/ node_express:ref:refs/tags/my-tag
. - Per i flussi di lavoro attivati da un evento di richiesta pull:
repo:< Organization/Repository >:pull-request
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Esempio di Kubernetes
L'emittente è l'URL dell'emittente dell'account del servizio (l'URL dell'emittente OIDC per il cluster gestito o l'URL dell'emittente OIDC per un cluster autogestito).
Il soggetto è il nome del soggetto nei token rilasciati all'account di servizio. Kubernetes usa il formato seguente per i nomi dei soggetti: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
Il nome è il nome della credenziale federata, che non può essere modificata in un secondo momento.
I gruppi di destinatari elencano i gruppi di destinatari che possono essere visualizzati nel token esterno. Questo campo è obbligatorio. Il valore consigliato è api://AzureADTokenExchange
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
Esempi di altri fornitori di identità
È possibile configurare una credenziale di identità federata in un'app e creare una relazione di trust con altri provider di identità esterni. L'esempio seguente usa un carico di lavoro software in esecuzione in Google Cloud come esempio:
-
name
è il nome della credenziale federata, che non può essere modificata in un secondo momento. -
id
: ID oggetto, ID applicazione (client) o URI dell'identificatore dell'app. -
subject
: deve corrispondere alla dichiarazionesub
nel token rilasciato dal provider di identità esterno. In questo esempio che utilizza Google Cloud, soggetto è l'ID univoco dell'account del servizio che prevedi di utilizzare. -
issuer
: deve corrispondere alla dichiarazioneiss
nel token rilasciato dal provider di identità esterno. URL conforme alla specifica di individuazione OIDC. Microsoft Entra ID usa questo URL dell'autorità di certificazione per recuperare le chiavi necessarie per convalidare il token. Per Google Cloud, l'emittente èhttps://accounts.google.com
. -
audiences
: elenca i gruppi di destinatari che possono essere visualizzati nel token esterno. Questo campo è obbligatorio. Il valore consigliato è "api://AzureADTokenExchange".
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
Elencare le credenziali di identità federate in un'app
Eseguire il comando az ad app federated-credential list per elencare le credenziali di identità federate nella tua app.
Il parametro id
specifica l'URI dell'identificatore, l'ID applicazione o l'ID oggetto dell'applicazione.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Ottenere credenziali di identità federate in un'app
Eseguire il comando az ad app federated-credential show per ottenere una credenziale di identità federata nell'app.
Il parametro id
specifica l'URI dell'identificatore, l'ID applicazione o l'ID oggetto dell'applicazione.
Il federated-credential-id
specifica l'ID o il nome della credenziale dell'identità federata.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Eliminare una credenziale di identità federata da un'app
Eseguire il comando az ad app federated-credential delete per rimuovere una credenziale di identità federata dall'app.
Il parametro id
specifica l'URI dell'identificatore, l'ID applicazione o l'ID oggetto dell'applicazione.
Il federated-credential-id
specifica l'ID o il nome della credenziale dell'identità federata.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Prerequisiti
- Per eseguire gli script di esempio, sono disponibili due opzioni:
- Usare Azure Cloud Shell, che è possibile aprire usando il pulsante Prova nell'angolo superiore destro dei blocchi di codice.
- Eseguire script in locale con Azure PowerShell, come descritto nella sezione successiva.
- Creare una registrazione dell'app in Microsoft Entra ID. Concedere all'app l'accesso alle risorse di Azure destinate al carico di lavoro del software esterno.
- Trova l'ID oggetto dell'app (non l'ID applicazione (client)), necessaria nei passaggi seguenti. È possibile trovare l'ID dell'oggetto dell'app nel centro di amministrazione Microsoft Entra. Passare all'elenco delle applicazioni registrate e selezionare la registrazione dell'app. In Panoramica->Essentials, trova l'ID oggetto .
- Ottieni le informazioni sull'oggetto e sull'emittente per il tuo IdP esterno e il carico di lavoro software, necessarie nei passaggi seguenti.
Configurare Azure PowerShell in locale
Per usare Azure PowerShell in locale per questo articolo invece di usare Cloud Shell:
Installare la versione più recente di Azure PowerShell, se non l'hai già fatto.
Accedere ad Azure.
Connect-AzAccount
Installare versione più recente di PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Potrebbe essere necessario
Exit
dalla sessione di PowerShell corrente dopo aver eseguito questo comando per il passaggio successivo.Installare la versione preliminare del modulo
Az.Resources
per svolgere le operazioni relative alle credenziali di identità federata in questo articolo.Install-Module -Name Az.Resources -AllowPrerelease
Configurare una credenziale di identità federata in un'app
Eseguire il cmdlet New-AzADAppFederatedCredential per creare una nuova credenziale di identità federata in un'applicazione.
Esempio di GitHub Actions
- ApplicationObjectId: l'ID oggetto dell'app (non l'ID applicazione (client) registrato in precedenza in Microsoft Entra ID.
- Issuer identifica GitHub come emittente del token esterno.
-
Subject identifica l'organizzazione GitHub, il repository GitHub e l'ambiente GitHub per il flusso di lavoro di GitHub Actions. Quando il flusso di lavoro di GitHub Actions richiede a Microsoft Identity Platform di scambiare un token GitHub per un token di accesso, i valori nelle credenziali dell'identità federata vengono controllati rispetto al token GitHub fornito.
- Per i lavori associati a un ambiente:
repo:< Organization/Repository >:environment:< Name >
- Per le attività non associate a un ambiente, includere il percorso di riferimento per branch/tag in base al percorso di riferimento usato per attivare il flusso di lavoro:
repo:< Organization/Repository >:ref:< ref path>
. Ad esempio,repo:n-username/ node_express:ref:refs/heads/my-branch
orepo:n-username/ node_express:ref:refs/tags/my-tag
. - Per i flussi di lavoro attivati da un evento di richiesta pull:
repo:< Organization/Repository >:pull-request
.
- Per i lavori associati a un ambiente:
- Nome è il nome della credenziale federata, che non può essere modificata in un secondo momento.
-
gruppo di destinatari elenca i gruppi di destinatari che possono essere visualizzati nel token esterno. Questo campo è obbligatorio. Il valore consigliato è
api://AzureADTokenExchange
.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Esempio di Kubernetes
- ApplicationObjectId: l'ID oggetto dell'app (non l'ID applicazione (client) registrato in precedenza in Microsoft Entra ID.
- Issuer è l'URL dell'issuer dell'account del servizio (l'URL dell'issuer OIDC per il cluster gestito o l'URL dell'issuer OIDC per un cluster autogestito).
-
Subject è il nome del soggetto nei token rilasciati all'account di servizio. Kubernetes usa il formato seguente per i nomi dei soggetti:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - Nome è il nome della credenziale federata, che non può essere modificata in un secondo momento.
-
Audience elenca i gruppi di destinatari che possono essere visualizzati nell'attestazione
aud
del token esterno.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
Esempio di altri provider di identità
Specificare i parametri seguenti (usando un carico di lavoro software in esecuzione in Google Cloud come esempio):
- ObjectID: l'ID oggetto dell'app (non l'ID dell'applicazione (client)) registrato in precedenza in Microsoft Entra ID.
- Nome è il nome della credenziale federata, che non può essere modificata in un secondo momento.
-
Subject: deve corrispondere all'asserzione
sub
nel token rilasciato dal provider di identità esterno. In questo esempio che usa Google Cloud, oggetto è l'ID univoco dell'account del servizio che si intende usare. -
Issuer: deve corrispondere all'attestazione
iss
nel token rilasciato dal provider di identità esterno. URL conforme alla specifica di scoperta OIDC. Microsoft Entra ID utilizza questo URL dell'emittente per recuperare le chiavi necessarie a convalidare il token. Per Google Cloud, l'emittente èhttps://accounts.google.com
. -
gruppi di destinatari: deve corrispondere all'attestazione
aud
nel token esterno. Per motivi di sicurezza, è consigliabile scegliere un valore univoco per i token destinati all'ID Microsoft Entra. Il valore consigliato è "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Elencare le credenziali di identità federate in un'app
Eseguire il cmdlet Get-AzADAppFederatedCredential
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Ottenere credenziali di identità federate in un'app
Eseguire il cmdlet Get-AzADAppFederatedCredential
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Eliminare una credenziale di identità federata da un'app
Eseguire il cmdlet Remove-AzADAppFederatedCredential per eliminare una credenziale di identità federata da un'applicazione.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Prerequisiti
Creare una registrazione dell'app in Microsoft Entra ID. Concedere all'app l'accesso alle risorse di Azure destinate al carico di lavoro del software esterno.
Trovare l'ID oggetto dell'app (non l'ID dell'applicazione (client)) di cui avete bisogno nei passaggi seguenti. È possibile trovare l'ID oggetto dell'app nel centro di amministrazione di Microsoft Entra . Passare all'elenco delle applicazioni registrate e selezionare la registrazione dell'app. In Panoramica->degli Essentialsè possibile trovare l'ID oggetto .
Ottieni le informazioni sull'oggetto e sull'emittente per il tuo IdP esterno e il carico di lavoro software, che ti servono nei passaggi seguenti.
L'endpoint di Microsoft Graph (https://graph.microsoft.com
) espone le API REST per creare, aggiornare ed eliminare federatedIdentityCredentials nelle applicazioni. Avvia Azure Cloud Shell e accedi al tenant per eseguire i comandi di Microsoft Graph tramite Azure CLI.
Configurare una credenziale di identità federata in un'app
GitHub Actions
Esegui il seguente metodo per creare una nuova credenziale di identità federata nella tua app (specificata dall'ID oggetto dell'app). Il issuer
identifica GitHub come emittente del token esterno.
subject
identifica l'organizzazione, il repository e l'ambiente GitHub per il flusso di lavoro di GitHub Actions. Quando il flusso di lavoro di GitHub Actions richiede a Microsoft Identity Platform di scambiare un token GitHub per un token di accesso, i valori nelle credenziali dell'identità federata vengono controllati rispetto al token GitHub fornito.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
E si ottiene la risposta:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
Nel frammento di codice i parametri sono i seguenti:
-
name
: nome dell'applicazione Azure. -
issuer
: percorso del provider OIDC di GitHub:https://token.actions.githubusercontent.com
. L'autorità emittente viene considerata attendibile dalla tua applicazione Azure. -
subject
: prima che Azure conceda un token di accesso, la richiesta deve corrispondere alle condizioni definite qui.- Per i lavori collegati a un ambiente:
repo:< Organization/Repository >:environment:< Name >
- Per i processi non associati a un ambiente, includere il percorso di riferimento per branch/tag in base al percorso di riferimento usato per attivare il flusso di lavoro:
repo:< Organization/Repository >:ref:< ref path>
. Ad esempio,repo:n-username/ node_express:ref:refs/heads/my-branch
orepo:n-username/ node_express:ref:refs/tags/my-tag
. - Per i flussi di lavoro attivati da un evento di richiesta pull:
repo:< Organization/Repository >:pull-request
.
- Per i lavori collegati a un ambiente:
-
audiences
elenca i gruppi di destinatari che possono essere visualizzati nel token esterno. Questo campo è obbligatorio. Il valore consigliato è "api://AzureADTokenExchange".
Esempio di Kubernetes
Eseguire il metodo seguente per configurare una credenziale di identità federata in un'app e creare una relazione di trust con un account del servizio Kubernetes. Specificare i parametri seguenti:
-
issuer
è l'URL dell'emittente dell'account di servizio (l'URL dell'emittente OIDC per il cluster gestito o l'URL dell'emittente OIDC per un cluster autogestito). -
subject
è il nome del soggetto nei token rilasciati all'account di servizio. Kubernetes usa il formato seguente per i nomi dei soggetti:system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. -
name
è il nome della credenziale federata, che non può essere modificata in un secondo momento. -
audiences
elenca i gruppi di destinatari che possono essere visualizzati nel token esterno. Questo campo è obbligatorio. Il valore consigliato è "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
E si ottiene la risposta:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
Esempi di altri fornitori di identità
Eseguire il metodo seguente per configurare le credenziali di identità federate in un'app e creare una relazione di trust con un provider di identità esterno. Specificare i parametri seguenti (usando un carico di lavoro software in esecuzione in Google Cloud come esempio):
- nome è il nome della credenziale federata, che non può essere modificata in un secondo momento.
- ObjectID: l'ID oggetto dell'applicazione (non l'ID dell'applicazione (client)) registrata precedentemente in Microsoft Entra ID.
-
oggetto: deve corrispondere alla rivendicazione
sub
nel token rilasciato dal fornitore di identità esterno. In questo esempio che usa Google Cloud, oggetto è l'ID univoco dell'account del servizio che si intende usare. -
emittente: deve corrispondere all'asserzione
iss
nel token rilasciato dal provider di identità esterno. URL conforme alla specifica di scoperta OIDC. Microsoft Entra ID utilizza questo URL dell'emittente per recuperare le chiavi necessarie a convalidare il token. Per Google Cloud, l'emittente è "https://accounts.google.com". - gruppi di destinatari elenca i gruppi di destinatari che possono essere visualizzati nel token esterno. Questo campo è obbligatorio. Il valore consigliato è "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
E si ottiene la risposta:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
Elencare le credenziali di identità federate in un'app
Eseguire il metodo seguente per elencare le credenziali di identità federata per un'applicazione (specificata dall'ID oggetto dell'app):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
E si ottiene una risposta simile a:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
Ottenere credenziali di identità federate in un'app
Esegui il seguente metodo per ottenere una credenziale di identità federata per un'app (specificata dall'ID oggetto dell'app):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
E si ottiene una risposta simile a:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
Eliminare una credenziale di identità federata da un'app
Esegui il metodo seguente per eliminare una credenziale di identità federata da un'app (specificata dall'ID dell'oggetto dell'app):
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Vedere anche
- Per imparare a utilizzare la federazione dell'identità del carico di lavoro per Kubernetes, consultare il Microsoft Entra Workload ID per Kubernetes progetto open source.
- Per informazioni su come usare la federazione delle identità del carico di lavoro per GitHub Actions, vedere Configurare un flusso di lavoro di GitHub Actions per ottenere un token di accesso.
- Leggere la documentazione di GitHub Actions per altre informazioni sulla configurazione del flusso di lavoro di GitHub Actions per ottenere un token di accesso dal provider di identità Microsoft e accedere alle risorse di Azure.
- Per ulteriori informazioni, leggi come Microsoft Entra ID utilizza il grant di credenziali client OAuth 2.0 e un'asserzione di client emessa da un altro IdP per ottenere un token.
- Per informazioni sul formato richiesto dei JWT creati dai provider di identità esterni, consultare il formato di asserzione .