Negli script #169 e #170 abbiamo visto un nuovo modo di accedere ad un'istanza di Azure SQL Database sfruttando Azure Active Directory. Abbiamo visto come dare accesso ad utenti AAD e come ottenere un access token per accedere al database senza l'ausilio di credenziali. L'approccio basato su access token ha molteplici vantaggi che trovano massima potenzialità quando utilizziamo tutto questo all'interno di un contesto Azure.
Quando creiamo una Web App o una Function, infatti, abbiamo la possibilità di accedere ad una sezione Identity nella quale possiamo scegliere di attivare il System assigned, come mostrato nella figura.

Una volta attivato viene creata un'identità del nostro App Service (nell'esempio di nome ricciolotest) che permette di equiparare l'applicativo stesso allo stesso modo di un utente. Questo significa che, una volta attivato il supporto di AAD all'interno di SQL Database, come mostrato nello script #169, possiamo dare accesso all'applicativo stesso creando un utente apposito, come nello snippet seguente.
CREATE USER [ricciolotest] FROM EXTERNAL PROVIDER; exec sp_addrolemember db_datareader, [ricciolotest]
Fatto questo possiamo pubblicare il nostro applicativo sull'App Service e, allo stesso modo dello script #170, ottenere prima un access token e poi connetterci al database usando una stringa di connessione senza credenziali. In modo molto simile a come Visual Studio fornisce un endpoint per il rilascio del token, anche all'interno di Azure gli App Service disponiamo di un endpoint locale di rilascio del token che la libreria Microsoft.Azure.Services.AppAuthentication conosce, rendendoci il tutto trasparente. Ricapitolando quindi i passi necessari sono:
- Abilitare AAD sull'istanza di SQL Server;
- Abilitare l'identità sull'applicativo di nostro interesse;
- Creare l'utenza SQL con il nome dell'applicativo stesso;
- Connetterci usando una stringa di connessione senza credenziali e ottenendo il token usando la libreria.
Facendo questo non dobbiamo più rincorrere credenziali, è più facile controllare gli applicativi che possono accedere al database e rimuoverne l'accesso, è più difficile il furto delle credenziali, ed infine possiamo sviluppare con una code base identica usando 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
Eseguire i worklow di GitHub su runner potenziati
Filtering sulle colonne in una QuickGrid di Blazor
Utilizzare Azure AI Studio per testare i modelli AI
Configurare e gestire sidecar container in Azure App Service
Migrare una service connection a workload identity federation in Azure DevOps
Disabilitare automaticamente un workflow di GitHub
Gestire il colore CSS con HWB
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Utilizzare QuickGrid di Blazor con Entity Framework
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Aggiornare a .NET 9 su Azure App Service