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 operazioni sui blob con Azure Storage Actions
Migliorare l'organizzazione delle risorse con Azure Policy
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Utilizzare Azure AI Studio per testare i modelli AI
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Criptare la comunicazione con mTLS in Azure Container Apps
Evitare il flickering dei componenti nel prerender di Blazor 8
Eseguire una query su SQL Azure tramite un workflow di GitHub
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Creare alias per tipi generici e tuple in C#
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- anche #vs13 update 4 è disponibile in RTM: https://aspit.co/azm
- Indicizzare Cosmos DB con #azure Search https://aspit.co/b4v di @CristianCivera #cosmosdb
- stando a @edbott, la consumer preview di #win8 sarà rilasciata il 29 febbraio! http://aspitalia.com/42