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
Disabilitare automaticamente un workflow di GitHub
Determinare lo stato di un pod in Kubernetes
Migrare una service connection a workload identity federation in Azure DevOps
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Usare una container image come runner di GitHub Actions
Controllare gli accessi IP alle app con Azure Container Apps
Eseguire attività basate su eventi con Azure Container Jobs
Eseguire attività pianificate con Azure Container Jobs
Reactive form tipizzati con FormBuilder in Angular
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Creare un'applicazione React e configurare Tailwind CSS
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)