Autenticazione di app ospitate in Azure in risorse di Azure con Azure SDK per .NET
Quando un'app è ospitata in Azure usando un servizio come Servizio app di Azure, Macchine virtuali di Azure o Istanze di Azure Container, l'approccio consigliato per autenticare un'app nelle risorse di Azure consiste nell'usare un'identità gestita.
Un'identità gestita fornisce un'identità per l'app in modo che possa connettersi ad altre risorse di Azure senza la necessità di usare una chiave privata o un altro segreto dell'applicazione. Internamente, Azure conosce l'identità dell'app e le risorse a cui è consentito connettersi. Azure usa queste informazioni per ottenere automaticamente i token di Microsoft Entra per consentire all'app di connettersi ad altre risorse di Azure, senza dover gestire i segreti dell'applicazione.
Tipi di identità gestita
Sono disponibili due tipi di identità gestite:
- Identità gestite assegnate dal sistema: questo tipo di identità gestita viene fornito da una risorsa di Azure e associato direttamente alla stessa. Quando si abilita l'identità gestita in una risorsa di Azure, si ottiene un'identità gestita assegnata dal sistema per tale risorsa. Un'identità gestita assegnata dal sistema è associata al ciclo di vita della risorsa di Azure a cui è associata. Quando la risorsa viene eliminata, Azure elimina automaticamente anche l'identità. Poiché è sufficiente abilitare l'identità gestita per la risorsa di Azure che ospita il codice, questo è il tipo di identità gestita più semplice da usare.
- Identità gestite assegnate dall'utente: è anche possibile creare un'identità gestita come risorsa di Azure autonoma. Questo approccio viene usato più frequentemente quando la soluzione ha più carichi di lavoro eseguiti in più risorse di Azure che devono tutti condividere la stessa identità e le stesse autorizzazioni. Ad esempio, se la soluzione include componenti eseguiti in più istanze di Servizio app e macchina virtuale che necessitano tutte dell'accesso allo stesso set di risorse di Azure, la creazione e l'uso di un'identità gestita assegnata dall'utente per tali risorse sarebbe la scelta più opportuna.
Questo articolo illustra i passaggi per abilitare e usare un'identità gestita assegnata dal sistema per un'app. Se è necessario usare un'identità gestita assegnata dall'utente, vedere l'articolo Gestire le identità gestite assegnate dall'utente per informazioni su come creare un'identità gestita assegnata dall'utente.
1 - Abilitare l'identità gestita nella risorsa di Azure che ospita l'app
Il primo passaggio consiste nell'abilitare l'identità gestita nella risorsa di Azure che ospita l'app. Ad esempio, se si ospita un'applicazione .NET che usa Servizio app di Azure, è necessario abilitare l'identità gestita per l'app Web Servizio app che ospita l'app. Se si usa una macchina virtuale per ospitare l'app, è necessario abilitare la macchina virtuale all'uso dell'identità gestita.
È possibile abilitare l'uso dell'identità gestita per una risorsa di Azure usando il portale di Azure o l'interfaccia della riga di comando di Azure.
2 - Assegnare ruoli all'identità gestita
Come passaggio successivo occorre determinare i ruoli (autorizzazioni) necessari per l'app e assegnare l'identità gestita a tali ruoli in Azure. A un'identità gestita è possibile assegnare ruoli a livello di risorsa, gruppo di risorse o sottoscrizione. Questo esempio illustra come assegnare i ruoli a livello di gruppo di risorse perché la maggior parte delle applicazioni raggruppa tutte le risorse di Azure in un unico gruppo di risorse.
3 - Implementare DefaultAzureCredential nell'applicazione
DefaultAzureCredential
supporta più metodi di autenticazione e determina il metodo di autenticazione usato in fase di esecuzione. In questo modo, l'app può usare metodi di autenticazione diversi in ambienti diversi senza implementare codice specifico dell'ambiente.
L'ordine e le posizioni in cui DefaultAzureCredential
cerca le credenziali sono disponibili in DefaultAzureCredential.
Per implementare DefaultAzureCredential
, aggiungere prima di tutto il pacchetto Azure.Identity
e facoltativamente i pacchetti Microsoft.Extensions.Azure
all'applicazione. A tale scopo, è possibile usare la riga di comando o Gestione pacchetti NuGet.
Aprire l'ambiente terminale desiderato nella directory del progetto dell'applicazione e immettere il comando seguente.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
I servizi di Azure sono in genere accessibili usando le classi client corrispondenti dall'SDK. Queste classi e i propri servizi personalizzati devono essere registrati nel file Program.cs
in modo da poter essere accessibili tramite l'inserimento delle dipendenze in tutta l'app. All'interno di Program.cs
, seguire questa procedura per configurare correttamente il servizio e DefaultAzureCredential
.
- Includere gli spazi dei nomi
Azure.Identity
eMicrosoft.Extensions.Azure
con un'istruzione using. - Registrare il servizio di Azure usando i metodi helper pertinenti.
- Passare un'istanza dell'oggetto
DefaultAzureCredential
al metodoUseCredential
.
Un esempio è illustrato nel segmento di codice seguente.
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
In alternativa, è anche possibile usare DefaultAzureCredential
nei servizi più direttamente senza l'aiuto di altri metodi di registrazione di Azure, come illustrato di seguito.
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Quando il codice precedente viene eseguito nella workstation locale durante lo sviluppo locale, cercherà nelle variabili di ambiente un'entità servizio dell'applicazione o in Visual Studio, VS Code, nell'interfaccia della riga di comando di Azure o in Azure PowerShell un set di credenziali per sviluppatori, che possono essere usate per autenticare l'app nelle risorse di Azure durante lo sviluppo locale.
Quando distribuito in Azure, lo stesso codice può anche autenticare l'app in altre risorse di Azure. DefaultAzureCredential
può recuperare automaticamente le impostazioni dell'ambiente e le configurazioni dell'identità gestita per l'autenticazione automatica in altri servizi.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per