Azure SQL Database e Virtual Network Rule
Recentemente ho avuto l’occasione di configurare le impostazioni di networking per un database Azure SQL e desidero condividere un aspetto che non avevo considerato durante le scelte iniziali di deployment della soluzione.
La soluzione comprende un database Azure SQL, un’applicazione e una macchina virtuale Azure che ospita l’applicazione la quale necessita della connessione al database.
Per ragioni di sicurezza, il database dell’applicazione deve essere accessibile, in alcuni casi, dalla rete internet pubblica, previa autorizzazione dell’indirizzo IP del client sul firewall a livello di database. Il database deve essere accessibile ovviamente anche dalla VM Azure. Inoltre, deve essere sempre rispettato il principio del minimo privilegio.
Dopo aver effettuato il deploy del database Azure SQL e della macchina virtuale, non avendo al momento richieste di accesso provenienti dalla rete internet pubblica, ho disabilitato l’accesso pubblico al server SQL. La configurazione degli indirizzi IP nel firewall potrà avvenire successivamente.
Il passo successivo è stato configurare una Virtual Network Rule che consentisse alla VM di connettersi al database, limitando l’accesso esclusivamente alla macchina virtuale che ospita l’applicazione.
La procedura è descritta nella documentazione Microsoft a questo link.
Si tratta di configurare una regola di rete in grado di collegare la virtual network della VM al server Azure SQL. Per farlo è sufficiente accedere alla scheda Networking della sezione Security del server SQL. Il pulsante Create a private endpoint nella scheda Private access permette di aprire la pagina di configurazione; tuttavia, nel mio caso, non era possibile selezionare la virtual network associata alla macchina virtuale e di conseguenza non poteva essere creato l’endpoint privato.
Osservando le reti disponibili per l’associazione mi sono accorto che nell’elenco erano presenti esclusivamente virtual network appartenenti a macchine virtuali distribuite nella stessa region del server Azure SQL. La VM che stavo cercando di collegare si trovava invece in una region differente. Nonostante il deploy del database fosse già stato completato, l’ho rifatto nella stessa region della macchina virtuale e come per magia, la virtual network è immediatamente comparsa tra quelle selezionabili e ho potuto completare la configurazione.
Conclusioni
Nel caso delle Virtual Network Rules basate su Service Endpoint, Azure SQL Database consente di associare soltanto subnet appartenenti a virtual network presenti nella stessa region del server Azure SQL. Durante la configurazione, le virtual network di region differenti non vengono rese disponibili tra le opzioni selezionabili.