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 da Microsoft Identity Platform. 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 delle 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 Application Amministrazione istrator, Application Developer, Cloud Application Amministrazione istrator o Application Owner. 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:

  • l'autorità emittente e l'oggetto sono le informazioni chiave necessarie per configurare la relazione di trust. La combinazione di issuer e subject deve essere univoca nell'app. Quando il carico di lavoro del software esterno richiede a Microsoft Identity Platform di scambiare il token esterno per un token di accesso, i valori dell'autorità di certificazione e dell'oggetto delle credenziali dell'identità federata vengono controllati rispetto alle issuer attestazioni e subject fornite nel token esterno. Se il controllo di convalida supera, Microsoft Identity Platform rilascia un token di accesso al carico di lavoro software esterno.

  • issuer è l'URL del provider di identità esterno e deve corrispondere all'attestazione issuer del token esterno scambiato. Obbligatorio. Se l'attestazione issuer contiene spazi vuoti iniziali o finali nel valore, lo scambio di token viene bloccato. Questo campo ha un limite di caratteri di 600 caratteri.

  • subject è l'identificatore del carico di lavoro software esterno e deve corrispondere all'attestazione sub (subject) del token esterno scambiato. subject 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 dell'impostazione dell'oggetto devono corrispondere esattamente alla configurazione nella configurazione del flusso di lavoro GitHub. In caso contrario, Microsoft Identity Platform esaminerà il token esterno in ingresso e rifiuterà lo scambio per un token di accesso. Non verrà visualizzato un errore, lo scambio non riesce senza errori.

    Importante

    Se si aggiungono accidentalmente le informazioni errate sul carico di lavoro esterno nell'impostazione dell'oggetto, la credenziale dell'identità federata viene creata correttamente senza errori. L'errore non diventa evidente fino a quando lo scambio di token non riesce.

  • i gruppi di destinatari elencano 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 Microsoft Identity Platform deve accettare nell'attestazione aud nel token in ingresso.

  • name è l'identificatore univoco per le credenziali di identità federate. Obbligatorio. Questo campo ha un limite di caratteri di 3-120 caratteri e deve essere descrittivo per l'URL. Sono supportati caratteri alfanumerici, trattini o caratteri di sottolineatura, il primo carattere deve essere solo alfanumerico.  Una volta creato, non è modificabile.

  • description è la descrizione fornita dall'utente della credenziale di identità federata. Facoltativo. 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'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 applicazione (client) necessario nei passaggi seguenti. È possibile trovare l'ID oggetto dell'app nell'interfaccia di amministrazione di Microsoft Entra. Passare all'elenco delle registrazioni dell'app e selezionare la registrazione dell'app. In Overview-Essentials> trovare l'ID oggetto.

Ottenere le informazioni sull'oggetto e sull'autorità emittente per il carico di lavoro idP esterno e software, necessari nei passaggi seguenti.

Configurare una credenziale di identità federata in un'app

Azioni di GitHub

Per aggiungere un'identità federata per GitHub actions, seguire questa procedura:

  1. Trovare la registrazione dell'app nell'esperienza di registrazione delle app dell'interfaccia di amministrazione di Microsoft Entra. Selezionare Certificati e segreti nel riquadro di spostamento a sinistra, selezionare la scheda Credenziali federate e selezionare Aggiungi credenziali.

  2. Nella casella di riepilogo a discesa Scenario credenziali federate selezionare GitHub actions che distribuisce le risorse di Azure.

  3. Specificare l'organizzazione e il repository per il flusso di lavoro di GitHub Actions.

  4. Per Tipo di entità selezionare Ambiente, Ramo, Richiesta pull o Tag e specificare il valore. I valori devono corrispondere esattamente alla configurazione nel flusso di lavoro GitHub. La corrispondenza dei criteri non è supportata per rami e tag. Specificare un ambiente se il flusso di lavoro on-push viene eseguito su molti rami o tag. Per altre info, leggi gli esempi.

  5. Aggiungere un nome per le credenziali federate.

  6. I campi Issuer, Audiences e Subject identifier vengono popolati automaticamente in base ai valori immessi.

  7. Selezionare Aggiungi per configurare le credenziali federate.

    Screenshot of the Add a credential window, showing sample values.

Usare i valori seguenti dalla registrazione dell'applicazione Microsoft Entra per il flusso di lavoro GitHub:

  • AZURE_CLIENT_IDID applicazione (client)

  • AZURE_TENANT_IDID directory (tenant)

    Lo screenshot seguente illustra come copiare l'ID applicazione e l'ID tenant.

    Screenshot that demonstrates how to copy the application ID and tenant ID from Microsoft Entra admin center.

  • AZURE_SUBSCRIPTION_ID ID sottoscrizione. Per ottenere l'ID sottoscrizione, aprire Sottoscrizioni in portale di Azure e trovare la sottoscrizione. Copiare quindi l'ID sottoscrizione.

Esempi di tipi di entità

Esempio di ramo

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 di ramo GitHub "main".

Esempio di ambiente

Per Processi 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 Ambiente e un nome di ambiente GitHub "production".

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 "v2".

Esempio di richiesta pull

Per un flusso di lavoro attivato da un evento di richiesta pull, specificare un tipo di entità di richiesta pull

Kubernetes

Trovare la registrazione dell'app nell'esperienza di registrazione delle app dell'interfaccia di amministrazione di Microsoft Entra. Selezionare Certificati e segreti nel riquadro di spostamento a sinistra, selezionare la scheda Credenziali federate e selezionare Aggiungi credenziali.

Selezionare lo scenario kubernetes che accede alle risorse di Azure dal menu a discesa.

Compilare i campi URL autorità di certificazione cluster, Spazio dei nomi, Nome account del servizio e Nome :

  • L'URL dell'autorità di certificazione del cluster è l'URL dell'autorità di certificazione OIDC per il cluster gestito o l'URL dell'autorità di certificazione OIDC per un cluster autogestito.
  • Il nome dell'account del servizio è il nome dell'account del servizio Kubernetes, che fornisce un'identità per i processi eseguiti in un pod.
  • Lo spazio dei nomi è lo spazio dei nomi dell'account del servizio.
  • Name è il nome della credenziale federata, che non può essere modificata in un secondo momento.

Altri provider di identità

Trovare la registrazione dell'app nell'esperienza di registrazione delle app dell'interfaccia di amministrazione di Microsoft Entra. Selezionare Certificati e segreti nel riquadro di spostamento a sinistra, selezionare la scheda Credenziali federate e selezionare Aggiungi credenziali.

Selezionare lo scenario Altro autorità emittente dal menu a discesa.

Specificare i campi seguenti (usando 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.
  • Identificatore del soggetto: deve corrispondere all'attestazionesub nel token rilasciato dal provider di identità esterno. In questo esempio che usa Google Cloud, subject è l'ID univoco dell'account del servizio che si intende usare.
  • Autorità emittente: 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à emittente è "https://accounts.google.com".

Elencare le credenziali di identità federate in un'app

Trovare la registrazione dell'app nell'esperienza di registrazione delle app dell'interfaccia di amministrazione di Microsoft Entra. Selezionare Certificati e 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

Trovare la registrazione dell'app nell'esperienza di registrazione delle app dell'interfaccia di amministrazione di Microsoft Entra. Selezionare Certificati e segreti nel riquadro di spostamento 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 le credenziali.

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, l'ID dell'app (client) o l'URI dell'identificatore dell'app, necessari nei passaggi seguenti. Questi valori sono disponibili nell'interfaccia di amministrazione di Microsoft Entra. Passare all'elenco delle applicazioni registrate e selezionare la registrazione dell'app. In Overview-Essentials> ottenere il valore di ID oggetto, ID applicazione (client) o URI ID applicazione, necessario nei passaggi seguenti.
  • Ottenere le informazioni sull'oggetto e sull'autorità emittente per il carico di lavoro idP esterno e software, 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 nell'app.

Il id parametro specifica l'URI dell'identificatore, l'ID applicazione o l'ID oggetto dell'applicazione. Il parameters parametro 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'autorità emittente identifica il percorso del provider OIDC gitHub: https://token.actions.githubusercontent.com/. L'autorità emittente diventerà attendibile dall'applicazione Azure.

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. Prima che Azure conceda un token di accesso, la richiesta deve corrispondere alle condizioni definite qui.

  • Per i processi associati 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 o repo: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 f6475511-fd81-4965-a00e-41e7792b7b9c --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

issuer è l'URL dell'autorità di certificazione dell'account del servizio (l'URL dell'autorità di certificazione OIDC per il cluster gestito o l'URL dell'autorità di certificazione OIDC per un cluster autogestito).

subject è il nome soggetto nei token rilasciati all'account del 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.

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 f6475511-fd81-4965-a00e-41e7792b7b9c --parameters credential.json
("credential.json" contains the following content)
{
    "name": "Kubernetes-federated-credential",
    "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
    "subject": "system:serviceaccount:erp8asle:pod-identity-sa",
    "description": "Kubernetes service account federated credential",
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

Esempio di altri provider 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 all'attestazione sub nel token rilasciato dal provider di identità esterno. In questo esempio che usa Google Cloud, subject è 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à 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 ad app federated-credential create --id f6475511-fd81-4965-a00e-41e7792b7b9c --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 nell'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 f6475511-fd81-4965-a00e-41e7792b7b9c

Ottenere credenziali di identità federate in un'app

Eseguire il comando az ad app federated-credential show per ottenere credenziali di identità federate nell'app.

Il parametro id specifica l'URI dell'identificatore, l'ID applicazione o l'ID oggetto dell'applicazione.

Federated-credential-id specifica l'ID o il nome della credenziale dell'identità federata.

az ad app federated-credential show --id f6475511-fd81-4965-a00e-41e7792b7b9c --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.

Federated-credential-id specifica l'ID o il nome della credenziale dell'identità federata.

az ad app federated-credential delete --id f6475511-fd81-4965-a00e-41e7792b7b9c --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 gli 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.
  • Trovare l'ID oggetto dell'app (non l'ID applicazione (client) necessario nei passaggi seguenti. È possibile trovare l'ID oggetto dell'app nell'interfaccia di amministrazione di Microsoft Entra. Passare all'elenco delle applicazioni registrate e selezionare la registrazione dell'app. In Overview-Essentials> trovare l'ID oggetto.
  • Ottenere le informazioni sull'oggetto e sull'autorità emittente per il carico di lavoro idP esterno e software, necessari nei passaggi seguenti.

Configurare Azure PowerShell in locale

Per usare Azure PowerShell in locale per questo articolo invece di usare Cloud Shell:

  1. Installare la versione più recente di Azure PowerShell, se non è già installata.

  2. Accedere ad Azure.

    Connect-AzAccount
    
  3. Installare la versione più recente di PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Potrebbe essere necessario uscire Exit dalla sessione corrente di PowerShell dopo aver eseguito questo comando per il passaggio successivo.

  4. Installare la versione non definitiva del Az.Resources modulo per eseguire le operazioni sulle credenziali delle identità federate 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.
  • L'autorità emittente identifica GitHub come autorità emittente del token esterno.
  • 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.
    • Per i processi associati 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 o repo: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.
  • Name è il nome della credenziale federata, che non può essere modificata in un secondo momento.
  • Il 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'autorità di certificazione dell'account del servizio (URL dell'autorità di certificazione OIDC per il cluster gestito o l'URL dell'autorità di certificazione OIDC per un cluster autogestito).
  • L'oggetto è il nome soggetto nei token rilasciati all'account del 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.
  • Il gruppo di destinatari 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/9d80a3e1-2a87-46ea-ab16-e629589c541c/' -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 applicazione (client) registrato in precedenza in Microsoft Entra ID.
  • Name è il nome della credenziale federata, che non può essere modificata in un secondo momento.
  • Oggetto: deve corrispondere all'attestazione sub nel token emesso dal provider di identità esterno. In questo esempio che usa Google Cloud, subject è l'ID univoco dell'account del servizio che si intende usare.
  • Autorità emittente: 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à 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 per elencare le credenziali di identità federate per un'applicazione.

Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential

Ottenere credenziali di identità federate in un'app

Eseguire il cmdlet Get-AzADAppFederatedCredential per ottenere le credenziali dell'identità federata in base all'ID da un'applicazione.

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 applicazione (client) necessario nei passaggi seguenti. È possibile trovare l'ID oggetto dell'app nell'interfaccia di amministrazione di Microsoft Entra. Passare all'elenco delle applicazioni registrate e selezionare la registrazione dell'app. In Overview-Essentials> trovare l'ID oggetto.

Ottenere le informazioni sull'oggetto e sull'autorità emittente per il carico di lavoro idP esterno e software, necessari nei passaggi seguenti.

L'endpoint di Microsoft Graph (https://graph.microsoft.com) espone le API REST per creare, aggiornare ed eliminare federatedIdentityCredentials nelle applicazioni. Avviare Azure Cloud Shell e accedere al tenant per eseguire i comandi di Microsoft Graph dall'interfaccia della riga di comando di Azure.

Configurare una credenziale di identità federata in un'app

Azioni di GitHub

Eseguire il metodo seguente per creare una nuova credenziale di identità federata nell'app (specificata dall'ID oggetto dell'app). L'autorità di certificazione identifica GitHub come autorità di certificazione di token esterna. 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/f6475511-fd81-4965-a00e-41e7792b7b9c/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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
  "issuer": "https://token.actions.githubusercontent.com",
  "name": "Testing",
  "subject": "repo:octo-org/octo-repo:environment:Production"
}

name: nome dell'applicazione Azure.

issuer: percorso del provider OIDC gitHub: https://token.actions.githubusercontent.com. L'autorità emittente diventerà attendibile dall'applicazione Azure.

subject: prima che Azure conceda un token di accesso, la richiesta deve corrispondere alle condizioni definite qui.

  • Per i processi associati 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 o repo: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.

i gruppi di destinatari elencano 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 seguenti parametri:

  • issuer è l'URL dell'autorità di certificazione dell'account del servizio (l'URL dell'autorità di certificazione OIDC per il cluster gestito o l'URL dell'autorità di certificazione OIDC per un cluster autogestito).
  • subject è il nome soggetto nei token rilasciati all'account del 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.
  • 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 rest --method POST --uri 'https://graph.microsoft.com/applications/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/","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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Kubernetes service account federated credential",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
  "name": "Kubernetes-federated-credential",
  "subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}

Esempio di altri provider 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):

  • name è il nome della credenziale federata, che non può essere modificata in un secondo momento.
  • ObjectID: l'ID oggetto dell'app (non l'ID applicazione (client) registrato in precedenza in Microsoft Entra ID.
  • subject: deve corrispondere all'attestazione sub nel token rilasciato dal provider di identità esterno. In questo esempio che usa Google Cloud, subject è 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à emittente è "https://accounts.google.com".
  • 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 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('f6475511-fd81-4965-a00e-41e7792b7b9c')/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à federate per un'app (specificata dall'ID oggetto dell'app):

az rest -m GET -u 'https://graph.microsoft.com/applications/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials'

E si ottiene una risposta simile a:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": [
    {
      "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "issuer": "https://token.actions.githubusercontent.com/",
      "name": "Testing",
      "subject": "repo:octo-org/octo-repo:environment:Production"
    }
  ]
}

Ottenere credenziali di identità federate in un'app

Eseguire il metodo seguente 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/f6475511-fd81-4965-a00e-41e7792b7b9c//federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

E si ottiene una risposta simile a:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": {
      "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
      "@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials('f6475511-fd81-4965-a00e-41e7792b7b9c')/f6475511-fd81-4965-a00e-41e7792b7b9c",
    "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "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

Eseguire il metodo seguente per eliminare una credenziale di identità federata da un'app (specificata dall'ID oggetto dell'app):

az rest -m DELETE  -u 'https://graph.microsoft.com/applications/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Passaggi successivi

  • Per informazioni su come usare la federazione delle identità del carico di lavoro per Kubernetes, vedere ID dei carichi di lavoro di Microsoft Entra per il progetto open source Kubernetes.
  • 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 altre informazioni, vedere come Microsoft Entra ID usa la concessione di credenziali client OAuth 2.0 e un'asserzione client rilasciata da un altro IdP per ottenere un token.
  • Per informazioni sul formato richiesto di JWT creati da provider di identità esterni, vedere il formato di asserzione.