Nello script #171 abbiamo visto come far accedere una Azure App ad un database SQL senza l'ausilio di credenziali. Grazie al System Assigned Identity possiamo trattare l'app come se fosse un'utenza alla quale dare uno specifico accesso al nostro database. Questo approccio è molto comodo ma ha dei limiti. In presenza di più App Service o Virtual Machine, ad esse è necessario dare uno specifico permesso per accedere alle risorse Azure, tra le quali SQL Database.
In alternativa al System Assigned Identity possiamo quindi utilizzare lo User Assigned Identity. In questo caso, invece di avere un'identità per ogni risorsa, l'identità è da noi creata e poi assegnata ai servizi di computazione, in modo che questi si autentichino e accedano alle risorse, tutte allo stesso modo.
Per prima cosa è necessario quindi creare l'identità, accedendo alla sezione apposita Managed Identity, disponibile sempre dal portale.
Gli assegniamo semplicemente un nome e ci annotiamo il Client ID, utile in un successivo momento. A questo punto ci rechiamo sul nostro App Service (la procedura è identica anche per una Virtual Machine) e sempre nella sezione Identity troviamo la voce User Assigned. Qui possiamo aggiungere uno o più identità da assegnare all'app.
La facoltà di assegnare più identità ci permette di impersonificare un'utenza all'interno del nostro applicativo a seconda delle necessità. Per questo motivo, riprendendo il codice visto nello script 171, è necessario che alla classe AzureServiceTokenProvider passiamo una stringa di connessione nella quale specifichiamo il Client ID che ci siamo segnati in precedenza.
var azureServiceTokenProvider = new AzureServiceTokenProvider("RunAs=App;AppId=db7e259d-8008-4172-a178-d87f4bdca974"); string token = await azureServiceTokenProvider.GetAccessTokenAsync("https://database.windows.net/");
Nello script precedente per semplicità è inserito direttamente nel codice, ma l'ideale è recuperarlo dalle configurazioni. Se omesso, magari, consigliamo di non passare alcuna stringa di connessione per supportare lo sviluppo in locale tramite Visual Studio, visto nello script #170. Fatto questo dobbiamo assegnare i permessi di accesso SQL come già fatto nello script #171, usando come nome l'identità creata.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Migrate and Modernize your .NET Applications on Azure
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Hosting di componenti WebAssembly in un'applicazione Blazor static
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Migliorare l'organizzazione delle risorse con Azure Policy
Creare gruppi di client per Event Grid MQTT
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Migrare una service connection a workload identity federation in Azure DevOps
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
I più letti di oggi
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online
- Un ExpressionBuilder per recuperare stringhe nazionalizzate da database
- Controllare l'effettivo frame-rate di una applicazione Windows 8
- Visual Studio 2005 Express in italiano al download
- Eliminare una tabella di un database
- Copiare le righe tra due DataSet di ADO.NET
- Creare un custom HTML helper per ASP.NET MVC
- Una classe Comparer per ordinare le collection con Generics
- Cambiare le impostazioni internazionali con VBScript 5.x