Key Vault è un servizio di Microsoft Azure che permette di memorizzare in maniera sicura dati sensibili, quali certificati, stringhe di connessione, password, e quant'altro, mantenendoli in uno storage criptato.
Questi dati sono poi esposti tramite una REST API protetta da Azure Active Directory, così che solo utenti o service principal autorizzati possano accedervi.
Ma come possiamo sfruttare questo servizio in un'applicazione ASP.NET Core?
Il modo più semplice consiste nell'utilizare una libreria di Microsoft che permetta di integrare gli AppSettings con i valori provenienti da KeyVault.
Per iniziare dobbiamo aggiungere una reference ai seguenti pacchetti NuGet:
dotnet add package Azure.Identity dotnet add package Azure.Extensions.AspNetCore.Configuration.Secrets
A questo punto, nel nostro program.cs, possiamo recuperare i secret in Azure KeyVault con il seguente metodo:
builder.Configuration.AddAzureKeyVault( new Uri($"https://{builder.Configuration["KeyVaultName"]}.vault.azure.net/"), new DefaultAzureCredential());
I secret così ottenuti, verranno aggiunti agli AppSettings, così che possiamo accedervi come ogni altra configurazione:
var connectionString = builder.Configuration.GetValue<string>("sqlconnectionstring")
Ma come viene effettuata l'autenticazione? La spiegazione sta nell'utilizzo di DefaultAzureCredential, che sfrutta la Managed Identity della nostra applicazione su Azure, senza che dobbiamo preoccuparci di gestire username o password. Tutto ciò che dobbiamo fare è attivare questa opzione sul nostro App Service, come nell'immagine in basso:
Successivamente, dobbiamo ricordarci di assegnare a questa identity i relativi permessi su KeyVault tramite Access Policies:
Un'ultima nota riguarda il fatto che Managed Identity funziona esclusivamente quando la nostra applicazione è in esecuzione in Azure. Quando siamo in fase di sviluppo, possiamo configurare un'account di test (ovviamente autorizzato nella stessa KeyVault) tramite l'opzione Azure Service Authentication di Visual Studio:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare un hash con SHA-3 in .NET
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Path addizionali per gli asset in ASP.NET Core MVC
Gestire il colore CSS con HWB
Creare una libreria CSS universale: Nav menu
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Creare alias per tipi generici e tuple in C#
Criptare la comunicazione con mTLS in Azure Container Apps
Usare una container image come runner di GitHub Actions
Migliorare la sicurezza dei prompt con Azure AI Studio
I più letti di oggi
- Simulare Azure Cosmos DB in locale con Docker
- Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online