Come usare le identità gestite nel servizio app e in Funzioni di Azure

Questo articolo illustra come creare un'identità gestita per servizio app e Funzioni di Azure applicazioni e come usarla per accedere ad altre risorse.

Importante

Poiché le identità gestite non supportano scenari tra directory, non si comportano come previsto se l'app viene migrata tra sottoscrizioni o tenant. Per ricreare le identità gestite dopo tale spostamento, vedere Le identità gestite verranno ricreate automaticamente se si sposta una sottoscrizione in un'altra directory? Per usare la nuova identità, anche le risorse a valle devono disporre di criteri di accesso aggiornati.

Nota

Le identità gestite non sono disponibili per le app distribuite in Azure Arc.

Un'identità gestita da Microsoft Entra ID consente all'app di accedere facilmente ad altre risorse protette di Microsoft Entra, ad esempio Azure Key Vault. L'identità viene gestita dalla piattaforma Azure e non è necessario eseguire il provisioning o ruotare alcun segreto. Per altre informazioni sulle identità gestite in Microsoft Entra ID, vedere Identità gestite per le risorse di Azure.

All'applicazione possono essere concessi due tipi di identità:

  • Un'identità assegnata dal sistema viene associata all'applicazione e viene eliminata in caso di eliminazione dell'app. A un'app può essere associata una sola identità assegnata dal sistema.
  • Un'identità assegnata dall'utente è una risorsa di Azure autonoma che può essere assegnata all'app. Un'app può avere più identità assegnate dall'utente.

La configurazione dell'identità gestita è specifica dello slot. Per configurare un'identità gestita per uno slot di distribuzione nel portale, passare prima allo slot. Per trovare l'identità gestita per l'app Web o lo slot di distribuzione nel tenant di Microsoft Entra dal portale di Azure, cercarlo direttamente dalla pagina Panoramica del tenant. In genere, il nome dello slot è simile a <app-name>/slots/<slot-name>.

Questo video illustra come usare le identità gestite per servizio app.

I passaggi del video sono descritti anche nelle sezioni seguenti.

Aggiungere un'identità assegnata dal sistema

  1. Nel riquadro di spostamento sinistro della pagina dell'app scorrere verso il basso fino al gruppo Impostazioni.

  2. Selezionare Identità.

  3. All'interno della scheda Assegnata dal sistema impostare Stato su Attivato. Fare clic su Salva.

    Screenshot che mostra dove impostare Stato su Sì e quindi selezionare Salva.

Aggiungere un'identità assegnata dall'utente

La creazione di un'app con un'identità assegnata dall'utente richiede la creazione dell'identità e quindi l'aggiunta dell'identificatore di risorsa corrispondente alla configurazione dell'app.

Sarà prima di tutto necessario creare una risorsa identità assegnata dall'utente.

  1. Seguire queste istruzioni per creare una risorsa identità gestita assegnata dall'utente.

  2. Nel riquadro di spostamento a sinistra per la pagina dell'app scorrere verso il basso fino al gruppo di Impostazioni.

  3. Selezionare Identità.

  4. Selezionare Aggiungi assegnato dall'utente>.

  5. Cercare l'identità creata in precedenza, selezionarla e selezionare Aggiungi.

    Identità gestita nel servizio app

    Dopo aver selezionato Aggiungi, l'app viene riavviata.

Configurare la risorsa di destinazione

Potrebbe essere necessario configurare la risorsa di destinazione per consentire l'accesso dall'app o dalla funzione. Ad esempio, se si richiede un token per accedere a Key Vault, è necessario aggiungere anche un criterio di accesso che includa l'identità gestita dell'app o della funzione. In caso contrario, le chiamate a Key Vault verranno rifiutate, anche se si usa un token valido. Lo stesso vale per database SQL di Azure. Per altre informazioni sulle risorse che supportano i token Microsoft Entra, vedere Servizi di Azure che supportano l'autenticazione di Microsoft Entra.

Importante

I servizi back-end per le identità gestite conservano una cache per ogni URI di risorsa per circa 24 ore. Se si aggiornano i criteri di accesso di una determinata risorsa di destinazione e si recupera immediatamente un token per tale risorsa, è possibile ottenere un token memorizzato nella cache con autorizzazioni obsolete fino alla scadenza del token. Attualmente non è possibile forzare l'aggiornamento di un token.

Connessione ai servizi di Azure nel codice dell'app

Con l'identità gestita, un'app può ottenere token per le risorse di Azure protette dall'ID Entra Di Microsoft, ad esempio database SQL di Azure, Azure Key Vault e Archiviazione di Azure. Questi token rappresentano le applicazioni che accedono alla risorsa e non un utente specifico dell'applicazione.

servizio app e Funzioni di Azure forniscono un endpoint REST accessibile internamente per il recupero dei token. È possibile accedere all'endpoint REST dall'interno dell'app con un HTTP GET standard, che può essere implementato con un client HTTP generico in ogni linguaggio. Per .NET, JavaScript, Java e Python, la libreria client di Identità di Azure fornisce un'astrazione su questo endpoint REST e semplifica l'esperienza di sviluppo. Connessione ad altri servizi di Azure è semplice come l'aggiunta di un oggetto credenziale al client specifico del servizio.

Una richiesta HTTP GET non elaborata è simile all'esempio seguente:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: localhost:4141
X-IDENTITY-HEADER: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a

E un esempio di risposta potrebbe apparire come segue:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJ0eXAi…",
    "expires_on": "1586984735",
    "resource": "https://vault.azure.net",
    "token_type": "Bearer",
    "client_id": "5E29463D-71DA-4FE0-8E69-999B57DB23B0"
}

Questa risposta corrisponde alla risposta per la richiesta di token di accesso da servizio a servizio Microsoft Entra. Per accedere a Key Vault, si aggiungerà quindi il valore di access_token a una connessione client con l'insieme di credenziali.

Per altre informazioni sull'endpoint REST, vedere Informazioni di riferimento sull'endpoint REST.

Rimuovere un'identità

Quando si rimuove un'identità assegnata dal sistema, viene eliminata dall'ID Microsoft Entra. Anche le identità assegnate dal sistema vengono rimosse automaticamente dall'ID Microsoft Entra quando si elimina la risorsa dell'app stessa.

  1. Nel riquadro di spostamento sinistro della pagina dell'app scorrere verso il basso fino al gruppo Impostazioni.

  2. Selezionare Identità. Seguire quindi i passaggi in base al tipo di identità:

    • Identità assegnata dal sistema: nella scheda Assegnata dal sistema impostare Stato su Disattivato. Fare clic su Salva.
    • Identità assegnata dall'utente: selezionare la scheda Assegnata dall'utente, selezionare la casella di controllo per l'identità e selezionare Rimuovi. Seleziona per confermare.

Nota

È inoltre disponibile l'impostazione applicazione WEBSITE_DISABLE_MSI che, se attivata, disabilita il servizio token locale, Tuttavia, lascia l'identità sul posto e gli strumenti visualizzeranno comunque l'identità gestita come "attivata" o "abilitata". Di conseguenza, l'uso di questa impostazione non è consigliato.

Informazioni di riferimento sugli endpoint REST

Un'app con un'identità gestita rende disponibile questo endpoint definendo due variabili di ambiente:

  • IDENTITY_ENDPOINT: URL del servizio token locale.
  • IDENTITY_HEADER: intestazione usata per mitigare gli attacchi SSRF (Server Side Request Forgery). Il valore viene ruotato dalla piattaforma.

IDENTITY_ENDPOINT è un URL locale da cui l'app può richiedere i token. Per ottenere un token per una risorsa, eseguire una richiesta HTTP GET a questo endpoint, includendo i parametri seguenti:

Nome parametro In Descrizione
resource Query URI della risorsa Microsoft Entra per cui ottenere un token. Potrebbe trattarsi di uno dei servizi di Azure che supportano l'autenticazione di Microsoft Entra o qualsiasi altro URI di risorsa.
api-version Query Versione dell'API del token da usare. Usare 2019-08-01.
X-IDENTITY-HEADER Intestazione Valore della variabile di ambiente IDENTITY_HEADER. Questa intestazione viene usata per mitigare gli attacchi SSRF (Server Side Request Forgery).
client_id Query (Facoltativo) ID client dell'identità assegnata dall'utente da usare. Non può essere usato in una richiesta che include principal_id, mi_res_id o object_id. Se vengono omessi tutti i parametri ID (client_id, principal_id, object_id e mi_res_id), viene usata l'identità assegnata dal sistema.
principal_id Query (Facoltativo) ID entità di sicurezza dell'identità assegnata dall'utente da usare. object_id è un alias che può essere usato in alternativa. Non può essere usato in una richiesta che include: client_id, mi_res_id oppure object_id. Se vengono omessi tutti i parametri ID (client_id, principal_id, object_id e mi_res_id), viene usata l'identità assegnata dal sistema.
mi_res_id Query (Facoltativo) ID delle risorsa Azure dell'identità assegnata dall'utente da usare. Non può essere usato in una richiesta che include principal_id, client_id o object_id. Se vengono omessi tutti i parametri ID (client_id, principal_id, object_id e mi_res_id), viene usata l'identità assegnata dal sistema.

Importante

Per ottenere i token per le identità assegnate dall'utente, è necessario includere una delle proprietà facoltative. In caso contrario, il servizio token tenterà di ottenere un token per un'identità assegnata dal sistema, che potrebbe o meno esistere.

Passaggi successivi