Usare le identità gestite per accedere a Configurazione app
Le identità gestite di Microsoft Entra semplificano la gestione dei segreti per l'applicazione cloud. Con un'identità gestita, il codice può usare l'entità servizio creata per il servizio di Azure in cui viene eseguita. È possibile usare un'identità gestita invece di usare credenziali distinte archiviate in Azure Key Vault o una stringa di connessione locale.
Configurazione app di Azure e le relative librerie client .NET, .NET Framework e Java Spring supportano le identità gestite integrate. Benché il suo utilizzo non sia obbligatorio, l'identità gestita elimina la necessità di un token di accesso che contiene i segreti. Il codice può accedere all'archivio di Configurazione app usando solo l'endpoint di servizio. È possibile incorporare questo URL direttamente nel codice senza esporre alcun segreto.
Questo articolo illustra come sfruttare l'identità gestita per accedere a Configurazione app. Si basa sull'app Web presentata nelle guide introduttive. Prima di continuare, Creare un'app ASP.NET Core con Configurazione app.
Questo articolo illustra come sfruttare l'identità gestita per accedere a Configurazione app. Si basa sull'app Web presentata nelle guide introduttive. Prima di continuare, Creare un'app Java Spring con Configurazione app di Azure.
Importante
L'identità gestita non può essere usata per autenticare le applicazioni in esecuzione in locale. L'applicazione deve essere distribuita in un servizio di Azure che supporta l'identità gestita. Questo articolo usa servizio app di Azure come esempio. Tuttavia, lo stesso concetto si applica a qualsiasi altro servizio di Azure che supporta l'identità gestita. Ad esempio, il servizio Azure Kubernetes, la macchina virtuale di Azure e le Istanze di Azure Container. Se il carico di lavoro è ospitato in uno di questi servizi, è anche possibile sfruttare il supporto dell'identità gestita del servizio.
Per completare i passaggi riportati in questa esercitazione, è possibile usare qualsiasi editor di codice. Visual Studio Code è un'ottima scelta per le piattaforme Windows, macOS e Linux.
In questo articolo vengono illustrate le operazioni seguenti:
- Concedere a un'identità gestita l'accesso a Configurazione app.
- Configurare l'app in modo da usare un'identità gestita per connettersi a Configurazione app.
Prerequisiti
Per completare l'esercitazione, sono necessari:
- Un account Azure con una sottoscrizione attiva. Crearne una gratuitamente.
- Un archivio di Configurazione app di Azure. Creare un archivio.
- .NET SDK 6.0 o versione successiva.
- Un account Azure con una sottoscrizione attiva. Crearne una gratuitamente.
- Un archivio di Configurazione app di Azure. Creare un archivio.
- Java Development Kit (JDK) versione 11 supportato.
- Apache Maven versione 3.0 o successive.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Aggiungere un'identità gestita
Per configurare un'identità gestita nel portale, è prima necessario creare un'applicazione e quindi abilitare la funzionalità.
Accedere alla risorsa Servizi app nel portale di Azure. Se non si ha una risorsa di Servizi app esistente da usare, crearne una.
Scorrere verso il basso fino al gruppo Impostazioni nel riquadro a sinistra e selezionare Identità.
Nella scheda Assegnata dal sistema impostare Stato su Attivato e selezionare Salva.
Quando richiesto, rispondere Sì per attivare l'identità gestita assegnata dal sistema.
Concedere l'accesso a Configurazione app
I passaggi seguenti descrivono come assegnare il ruolo Lettore dati di Configurazione app al servizio app. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Nel portale di Azure selezionare l'archivio di Configurazione app.
Seleziona Controllo di accesso (IAM).
Seleziona Aggiungi>Aggiungi assegnazione ruolo.
Se non si dispone dell'autorizzazione per assegnare ruoli, allora l'opzione Aggiungi assegnazione di ruolo verrà disabilitata. Per altre informazioni, vedere Ruoli predefiniti di Azure.
Nella scheda Ruolo, selezionare il ruolo Lettore dati Configurazione app e quindi selezionare Avanti.
Nella scheda Membri, selezionare Identità gestita e quindi Seleziona membri.
Selezionare la sottoscrizione di Azure per Identità gestita selezionare Servizio app e quindi selezionare il nome del servizio app.
Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.
Usare un'identità gestita
Aggiungere un riferimento al pacchetto
Azure.Identity
:dotnet add package Azure.Identity
Trovare l'endpoint nell'archivio di Configurazione app. Questo URL è elencato nella scheda Chiavi di accesso per l'archivio nel portale di Azure.
Aprire il file appsettings.json e aggiungere lo script seguente. Sostituire <service_endpoint> (incluse le parentesi acute) con l'URL dell'archivio di Configurazione app.
"AppConfig": { "Endpoint": "<service_endpoint>" }
Aprire il file Program.cs e aggiungere un riferimento allo spazio dei nomi
Azure.Identity
:using Azure.Identity;
Per accedere ai valori archiviati in Configurazione app, aggiornare la configurazione
Builder
per usare il metodoAddAzureAppConfiguration()
.var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddAzureAppConfiguration(options => options.Connect( new Uri(builder.Configuration["AppConfig:Endpoint"]), new ManagedIdentityCredential()));
Nota
Se si vuole usare un'identità gestita assegnata dall'utente, assicurarsi di specificare
clientId
quando si crea ManagedIdentityCredential.new ManagedIdentityCredential("<your_clientId>")
Come illustrato nelle domande frequenti sulle identità gestite per le risorse di Azure, esiste un modo predefinito per risolvere l'identità gestita usata. In questo caso, la libreria di identità di Azure impone di specificare l'identità desiderata per evitare possibili problemi di runtime in futuro. Ad esempio, se viene aggiunta una nuova identità gestita assegnata dall'utente o se l'identità gestita assegnata dal sistema è abilitata. Sarà quindi necessario specificare anche
clientId
se viene definita una sola identità gestita assegnata dall'utente e non esiste alcuna identità gestita assegnata dal sistema.
Trovare l'endpoint nell'archivio di Configurazione app. Questo URL è elencato nella scheda Panoramica per l'archivio nel portale di Azure.
Aprire
bootstrap.properties
, rimuovere la proprietà della stringa di connessione e sostituirla con l'endpoint per Identità assegnata dal sistema:
spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>
Per l'identità assegnata dall'utente:
spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>
spring.cloud.azure.credential.managed-identity-enabled= true
spring.cloud.azure.credential.client-id= <client_id>
Nota
Per altre informazioni, vedere Autenticazione di Spring Cloud in Azure.
Distribuire l'applicazione
È necessario distribuire l'app in un servizio di Azure quando si usano le identità gestite. Le identità gestite non possono essere usate per l'autenticazione delle app in esecuzione in locale. Per distribuire l'app .NET Core creata nella guida introduttiva Creare un'app ASP.NET Core con Configurazione app e modificare per usare le identità gestite, seguire le indicazioni riportate in Pubblicare l'app Web.
L'uso delle identità gestite richiede la distribuzione dell'app in un servizio di Azure. Le identità gestite non possono essere usate per l'autenticazione delle app in esecuzione in locale. Per distribuire l'app Spring creata nella guida introduttiva Creare un'app Java Spring con Configurazione app di Azure e modificare per usare le identità gestite, seguire le indicazioni riportate in Pubblicare l'app Web.
Oltre al servizio app, molti altri servizi di Azure supportano le identità gestite. Per altre informazioni, vedere Servizi che supportano le identità gestite per le risorse di Azure.
Pulire le risorse
Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.
Importante
L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.
Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.
Passaggi successivi
In questa esercitazione è stata aggiunta un'identità gestita di Azure per facilitare l'accesso a Configurazione app e migliorare la gestione delle credenziali dell'app. Per altre informazioni sull'uso di Configurazione app, passare agli esempi dell'interfaccia della riga di comando di Azure.