Implementare un firewall del database SQL di Azure

Completato

Quando si crea un nuovo server sul database SQL di Azure o su Azure Synapse Analytics chiamato, ad esempio, mysqlserver, un firewall a livello di server blocca l'accesso all'endpoint pubblico per il server (accessibile su mysqlserver.database.windows.net). Per semplicità, il termine database SQL viene usato per fare riferimento sia al database SQL che al database di Azure Synapse Analytics. Questo articolo non si applica a Istanza gestita di SQL di Azure. Per informazioni sulla configurazione della rete, consultare Connetti l'applicazione all’Istanza gestita di SQL di Azure.

Funzionamento del firewall

I tentativi di collegamento provenienti da Internet e da Azure devono superare il firewall prima di raggiungere il server o il database, come mostra il seguente diagramma.

Diagramma che mostra un esempio di funzionamento del firewall.

Importante

Azure Synapse supporta solo regole del firewall IP a livello di server. Non supporta regole del firewall IP a livello di database.

Regole del firewall IP a livello di server

consentono ai client di accedere all'intero server ovvero a tutti i database gestiti dal server. Queste regole sono archiviate nel database master. Il numero massimo di regole del firewall IP è limitato a 256 per server. Se è abilitata l'opzione Consenti alle risorse e ai servizi di Azure di accedere a questo server, questa viene considerata come una singola regola del firewall per il server.

È possibile configurare le regole del firewall IP a livello di server usando il portale di Azure, PowerShell o le istruzioni Transact-SQL.

Annotazioni

Durante la configurazione tramite il portale di Azure, il numero massimo di regole del firewall IP a livello di server è limitato a 256.

  • Per usare il portale o PowerShell, è necessario essere il proprietario o un contributore della sottoscrizione.
  • Per usare Transact-SQL, è necessario connettersi al database master come entità principale a livello server o come amministratore di Microsoft Entra. (Una regola del firewall IP a livello di server deve essere creata prima da un utente con autorizzazioni a livello di Azure.)

Annotazioni

Per impostazione predefinita, durante la creazione di un nuovo server SQL logico dal portale di Azure, l'impostazione Consenti a Servizi e risorse di Azure di accedere a questo server è impostata su No.

Regole del firewall IP a livello di database

Le regole del firewall IP a livello di database consentono ai client di accedere a determinati database sicuri. Queste regole vengono create per ciascun database (incluso il database master) e vengono archiviate nei singoli database.

  • È possibile creare e gestire le regole del firewall IP a livello di database per i database utente e master solo usando le istruzioni Transact-SQL e solo dopo aver configurato il primo firewall a livello di server.
  • Se nella regola del firewall IP a livello di database si specifica un intervallo di indirizzi IP che non rientra nell'intervallo nella regola del firewall IP a livello di server, solo i client che dispongono di indirizzi IP compresi nell'intervallo a livello di database possono accedere al database.
  • Il valore predefinito è fino a 256 regole del firewall IP a livello di database per un database. Per altre informazioni sulla configurazione delle regole del firewall IP a livello di database, vedere l'esempio presente in questo articolo e vedere sp_set_database_firewall_rule (Database SQL di Azure).

Consigli su come fare a impostare le regole del firewall

Quando è possibile, è consigliabile usare le regole del firewall IP a livello di database. Questa pratica migliora la sicurezza e rende più portabile il database. Usare le regole del firewall IP a livello di server per gli amministratori. È anche possibile usare queste regole quando sono disponibili molti database che presentano gli stessi requisiti di accesso e non si vuole dedicare tempo alla configurazione di ogni singolo database.

Annotazioni

Per informazioni sui database portabili nel contesto della continuità aziendale, vedere i requisiti di autenticazione per il ripristino di emergenza.

Regole del firewall IP a livello di server e a livello di database a confronto

Gli utenti di un database devono essere completamente isolati da un altro database?

In caso affermativo, usare le regole del firewall IP a livello di database per concedere l’accesso. Questo metodo evita l’uso delle regole del firewall IP a livello di server che consentono l'accesso attraverso il firewall a tutti i database. Ciò potrebbe ridurre l’efficacia delle misure di difesa.

Gli utenti degli indirizzi IP devono avere accesso a tutti i database?

In caso affermativo, usare le regole del firewall IP a livello di server per ridurre il numero di volte in cui è necessario configurare le regole del firewall IP.

La persona o il team che configura le regole del firewall IP ha accesso solo tramite il portale di Azure, PowerShell o l'API REST?

In tal caso, è necessario usare le regole del firewall IP a livello di server. Le regole del firewall IP a livello di database possono essere configurate solo tramite Transact-SQL.

Alla persona o al team che configura le regole del firewall IP è vietato avere autorizzazioni elevate a livello di database?

In tale caso, usare regole del firewall IP a livello di server. È necessaria almeno l'autorizzazione CONTROLLO DATABASE a livello di database per configurare le regole del firewall IP a livello di database tramite Transact-SQL.

La persona o il team che configura o controlla le regole del firewall IP gestisce centralmente le regole del firewall IP per molti database (forse centinaia)?

In questo scenario, le procedure consigliate sono determinate dalle esigenze e dall'ambiente. Le regole del firewall IP a livello di server potrebbero essere più facili da configurare, tuttavia lo scripting consente di configurare le regole a livello di database. E anche se si usano le regole del firewall IP a livello di server, potrebbe essere necessario controllare le regole del firewall IP a livello di database per verificare se gli utenti con autorizzazione CONTROLLO nel database hanno creato le regole del firewall IP a livello di database.

È possibile usare una combinazione di regole del firewall IP a livello di server e a livello di database?

Sì. Alcuni utenti, come gli amministratori, potrebbero aver bisogno di regole del firewall IP a livello di server. Altri utenti, ad esempio gli utenti di un'applicazione di database, potrebbero aver bisogno di regole del firewall IP a livello di database.

Connessioni da Internet

Quando un computer cerca di connettersi al server da Internet, il firewall verifica prima l'indirizzo IP di origine della richiesta rispetto alle regole del firewall IP a livello di database, per il database richiesto dalla connessione.

  • Se l'indirizzo all’interno della richiesta rientra in uno degli intervalli specificati nelle regole del firewall IP a livello di database, la connessione al database che contiene le regole viene concessa.
  • Se l'indirizzo della richiesta non rientra in uno degli intervalli specificati nelle regole del firewall IP a livello di database, il firewall controlla le regole del firewall IP a livello di server. Se l'indirizzo rientra in uno degli intervalli specificati nelle regole del firewall IP a livello di server, la connessione viene concessa. Le regole del firewall IP a livello di server si applicano a tutti i database gestiti dal server.
  • Se l'indirizzo della richiesta non rientra in nessuna delle regole del firewall IP a livello di database o di server, la richiesta di connessione ha esito negativo.

Annotazioni

Per accedere al database SQL di Azure dal computer locale, verificare che il firewall in rete e nel computer locale consenta le comunicazioni in uscita sulla porta TCP 1433.

Connessione dall'interno di Azure

Per consentire alle applicazioni ospitate da Azure di connettersi a SQL server, è necessario abilitare le connessioni da Azure. Per abilitare le connessioni di Azure, è necessario che esista una regola del firewall con indirizzi IP di partenza e di arrivo impostati su 0.0.0.0. Questa regola consigliata è applicabile solo per il database SQL di Azure.

Quando un'applicazione di Azure tenta di connettersi al server, il firewall controlla che le connessioni di Azure siano consentite verificando che questa regola del firewall esista. Questa opzione può essere attivata direttamente dal riquadro del portale di Azure passando alle impostazioni Consenti a Servizi e risorse di Azure di accedere a questo server su SÌ nelle impostazioni Firewall e reti virtuali. Se si passa a ON, viene creata una regola del firewall in ingresso per IP 0.0.0.0 - 0.0.0.0 denominato AllowAllWindowsAzureIps. La regola può essere visualizzata nella vista del database master sys.firewall_rules . Usare PowerShell o l'interfaccia della riga di comando di Azure per creare una regola del firewall con indirizzi IP di partenza e di arrivo impostati su 0.0.0.0 se non si usa il portale.

Importante

Questa opzione configura il firewall in modo da consentire tutte le connessioni da Azure, incluse le connessioni dalle sottoscrizioni di altri clienti. Se si seleziona questa opzione, assicurarsi che l'account di accesso e le autorizzazioni utente limitino l'accesso ai soli utenti autorizzati.

Autorizzazioni

Per poter creare e gestire le regole del firewall IP per SQL Server di Azure, sarà necessario avere:

Creare e gestire le regole del firewall IP

La prima impostazione del firewall a livello di server può essere creata usando il Portale di Azure o a livello di programmazione tramite Azure PowerShell, l'interfaccia della riga di comando di Azure, o un'API REST di Azure. Le regole del firewall IP a livello di server aggiuntive possono essere create e gestite usando questi metodi o Transact-SQL.

Importante

Le regole del firewall IP a livello di database possono essere create e gestite solo usando Transact-SQL.

Per migliorare le prestazioni, le regole del firewall IP a livello di server vengono temporaneamente memorizzate nella cache a livello di database. Per aggiornare la cache, vedere DBCC FLUSHAUTHCACHE.

Suggerimento

È possibile usare il servizio di controllo del database per controllare le modifiche del firewall a livello di server e di database.

Usare il portale di Azure per gestire le regole del firewall IP a livello di server

Per impostare una regola del firewall IP a livello di server nel portale di Azure, è possibile consultare la pagina Panoramica per il database o per il server.

Suggerimento

Per un'esercitazione, vedere Creare un database usando il portale di Azure.

Dalla pagina di panoramica del database

  1. Per impostare una regola del firewall IP a livello di server dalla pagina di panoramica del database, selezionare Imposta firewall server sulla barra degli strumenti, come illustrato nell'immagine seguente.

    Screenshot che mostra un esempio della barra degli strumenti delle impostazioni del firewall del database SQL.

    Si apre la pagina di rete per il server.

  2. Aggiungere una regola nella sezione Regole del firewall per aggiungere l'indirizzo IP del computer in uso e quindi selezionare Salva. Una regola del firewall IP a livello di server viene creata per l'indirizzo IP corrente.

    Screenshot che mostra un esempio della pagina di rete di SQL Server.

Dalla pagina di panoramica del server

Si apre la pagina di panoramica del server in questione. Mostra il nome completo del server completo (ad esempio mynewserver20170403.database.windows.net) e offre altre opzioni di configurazione.

  1. Per impostare una regola a livello di server da questa pagina, selezionare Rete dal menu Impostazioni a sinistra.
  2. Aggiungere una regola nella sezione Regole del firewall per aggiungere l'indirizzo IP del computer in uso e quindi selezionare Salva. Una regola del firewall IP a livello di server viene creata per l'indirizzo IP corrente.

Usare Transact-SQL per gestire le regole del firewall IP

Espandi la tabella

Vista del catalogo o stored procedure livello Descrizione
sys.firewall_rules Servidor Visualizza le regole del firewall IP a livello di server correnti
sp_set_firewall_rule Servidor Crea o aggiorna regole del firewall IP a livello di server
sp_delete_firewall_rule Servidor Rimuove regole del firewall IP a livello di server
sys.database_firewall_rules Banca dati Visualizza le regole del firewall IP a livello di database correnti
sp_set_database_firewall_rule Banca dati Crea o aggiorna regole del firewall IP a livello di database
sp_delete_database_firewall_rule Banche dati Rimuove le regole del firewall IP a livello di database

Nell’esempio seguente si rivedono le regole esistenti, si abilita un intervallo di indirizzi IP nel server di Contoso e si elimina una regola del firewall IP:

SQL

SELECT * FROM sys.firewall_rules ORDER BY name;

Aggiungere quindi una regola del firewall IP a livello di server.

SQL

SELECT * FROM sys.firewall_rules ORDER BY name;

EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule',
@start_ip_address = '192.168.1.1', @end\_ip\_address = '192.168.1.10'

Per eliminare una regola del firewall IP a livello di server, eseguire la stored procedure sp_delete_firewall_rule. Nell'esempio seguente viene eliminata la regola ContosoFirewallRule:

SQL

EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'

Usare PowerShell per gestire le regole del firewall IP a livello di server

Annotazioni

Questo esempio usa il modulo Azure Az PowerShell, che è il modulo PowerShell consigliato per interagire con Azure. Per iniziare a usare il modulo Az PowerShell, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Importante

Il modulo Azure Resource Manager (AzureRM) di PowerShell è stato reso obsoleto il 29 febbraio 2024. Tutto lo sviluppo futuro deve usare il modulo Az.Sql. Agli utenti è consigliato migrare da AzureRM al modulo Az PowerShell per garantire supporto e aggiornamenti continui. Il modulo AzureRM non è più gestito o supportato. Gli argomenti per i comandi nel modulo Az PowerShell e nei moduli AzureRM sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione al nuovo modulo Az PowerShell.

Espandi la tabella

Cmdlet livello Descrizione
Get-AzSqlServerFirewallRule Servidor Restituisce le regole del firewall a livello di server correnti
New-AzSqlServerFirewallRule Servidor Crea una nuova regola del firewall a livello di server
Set-AzSqlServerFirewallRule Servidor Aggiorna le proprietà di una regola del firewall a livello di server esistente
Remove-AzSqlServerFirewallRule Servidor Rimuove regole del firewall a livello di server

Nel seguente esempio, viene utilizzato PowerShell per impostare una regola del firewall IP a livello server.

PowerShell

New-AzSqlServerFirewallRule -ResourceGroupName "myResourceGroup" `-ServerName $servername `-FirewallRuleName "ContosoIPRange" -StartIpAddress "192.168.1.0" -EndIpAddress "192.168.1.255"

Suggerimento

Per $servername specificare il nome del server e non il nome DNS completo, ad esempio specificare mysqldbserver anziché mysqldbserver.database.windows.net. Per esempi di PowerShell nel contesto di un avvio rapido, vedere Creare un database usando PowerShell e Creare un database singolo e configurare una regola del firewall IP a livello di server di database SQL usando PowerShell.

Usare la CLI per gestire le regole del firewall IP a livello di server

Espandi la tabella

Cmdlet livello Descrizione
az sql server firewall-rule create Servidor Crea una regola del firewall IP del server
az sql server firewall-rule list Servidor Elenca le regole del firewall IP in un server
az sql server firewall-rule show (visualizza regola del firewall sql server) Servidor Mostra i dettagli di una regola del firewall IP
az sql server firewall-rule update Servidor Aggiorna una regola del firewall IP
az sql server firewall-rule delete Servidor Elimina una regola del firewall IP

Nell'esempio seguente viene usata la CLI per impostare una regola del firewall IP a livello di server:

Interfaccia CLI di Azure



az sql server firewall-rule create --resource-group myResourceGroup --server $servername \-n ContosoIPRange --start-ip-address 192.168.1.0 --end-ip-address 192.168.1.255">">


Suggerimento

Per $servername, specificare il nome del server e non il nome DNS completo. Ad esempio, usare mysqldbserver anziché mysqldbserver.database.windows.net. Per un esempio di CLI nel contesto di una procedura di avvio rapido, vedere Creare un DB - interfaccia della riga di comando di Azure e Creare un database singolo e configurare una regola del firewall a livello di server usando l'interfaccia della riga di comando di Azure. Per Azure Synapse Analytics, vedere i seguenti esempi:

Espandi la tabella

Cmdlet livello Descrizione
az synapse workspace firewall-rule create Servidor Creare una regola del firewall
az synapse workspace firewall-rule delete Servidor Eliminare una regola del firewall
az synapse workspace firewall-rule list Servidor Elencare tutte le regole del firewall
az synapse workspace firewall-rule show Servidor Ottienere una regola del firewall
az synapse workspace firewall-rule update Servidor Aggiornare una regola del firewall
az synapse workspace firewall-rule wait Servidor Posizionare la CLI in uno stato di attesa fino a quando non viene soddisfatta una condizione di una regola del firewall

Nell'esempio seguente viene usata la CLI per impostare una regola del firewall IP a livello di server su Azure Synapse:

Interfaccia CLI di Azure

az synapse workspace firewall-rule create --name AllowAllWindowsAzureIps --workspace-name $workspacename --resource-group $resourcegroupname --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

Usare un’API REST per gestire le regole del firewall IP a livello di server

Espandi la tabella

api livello Descrizione
Elencare le regole del firewall Servidor Visualizza le regole del firewall IP a livello di server correnti
Creare o aggiornare la regola del firewall Servidor Crea o aggiorna regole del firewall IP a livello di server
Eliminare le regole del firewall Servidor Rimuove regole del firewall IP a livello di server
Ottenere le regole del firewall Servidor Ottiene regole del firewall IP a livello di server

Eseguire la risoluzione dei problemi del firewall del database

Quando l'accesso al database SQL di Azure non si comporta come previsto, considerare i seguenti punti.

  • Configurazione del firewall locale: prima che il computer possa accedere al database SQL di Azure, potrebbe essere necessario creare un'eccezione del firewall nel computer per la porta TCP 1433. Per effettuare connessioni all'interno del limite del cloud di Azure, può essere necessario aprire porte aggiuntive. Per altre informazioni, vedere la sezione “Database SQL: Esterno rispetto all'interno” di Porte successive alla 1433 per ADO.NET 4.5 e Database SQL di Azure.

  • Conversione degli indirizzi di rete: a causa di NAT (Network Address Translation), l'indirizzo IP usato dal computer per connettersi al database SQL di Azure può essere diverso dall'indirizzo IP nelle impostazioni di configurazione IP del computer. Per vedere l'indirizzo IP usato dal computer per connettersi ad Azure:

    1. Accedere al portale.
    2. Passare alla scheda Configura nel server che ospita il database.
    3. L'indirizzo IP client corrente viene visualizzato nella sezione Indirizzi IP consentiti. Selezionare "Aggiungi" per gli Indirizzi IP consentiti per permettere a questo computer di accedere al server.
  • Le modifiche apportate all'elenco di elementi consentiti non sono ancora state applicate: potrebbero essere necessari fino a cinque minuti di ritardo per rendere effettive le modifiche alla configurazione del firewall del database SQL di Azure.

  • L'account di accesso non è autorizzato o è stata usata una password non corretta: se un account di accesso non dispone delle autorizzazioni per il server o la password non è corretta, la connessione al server viene negata. La creazione di un'impostazione del firewall offre solo ai client l’opportunità di tentare una connessione al server. Il client deve fornire le credenziali di sicurezza necessarie, in ogni caso. Per altre informazioni sulla preparazione degli accessi, vedere Controllo e concessione dell'accesso al database.

  • Indirizzo IP dinamico: se si dispone di una connessione Internet che usa indirizzi IP dinamici e si verificano problemi durante il firewall, provare una delle soluzioni seguenti:

    • Richiedere al provider di servizi Internet l'intervallo di indirizzi IP assegnato ai computer client che accedono al server. Aggiungere tale intervallo di indirizzi IP come regola del firewall IP.
    • Ottenere invece l’assegnazione di indirizzi IP statici per i computer client. Aggiungere gli indirizzi IP come regole del firewall IP.