Proteggere un pool SQL dedicato (in precedenza SQL DW) in Azure Synapse Analytics

Questo articolo illustra le nozioni di base per proteggere il pool SQL dedicato (in precedenza SQL Data Warehouse). In particolare, l'articolo spiega come iniziare a usare le risorse per limitare l'accesso, proteggere i dati e monitorare le attività usando un pool SQL dedicato (in precedenza SQL Data Warehouse).

Sicurezza delle connessioni

La sicurezza delle connessioni fa riferimento al modo che si limitano e proteggono le connessioni al database mediante regole del firewall e crittografia di connessione.

Le regole del firewall vengono usate sia dal server SQL logico che dai relativi database per rifiutare i tentativi di connessione da indirizzi IP che non sono stati approvati in modo esplicito. Prima di consentire le connessioni dall'applicazione o dall'indirizzo IP pubblico del computer client, è necessario creare una regola del firewall di livello server tramite il portale di Azure, l'API REST o PowerShell.

Come procedura consigliata, si suggerisce di limitare gli intervalli di indirizzi IP consentiti attraverso il firewall a livello di server quanto più possibile. Per accedere al pool SQL dedicato (in precedenza SQL Data Warehouse) dal computer locale, verificare che il firewall in rete e nel computer locale consenta le comunicazioni in uscita sulla porta TCP 1433.

Il pool SQL dedicato (in precedenza SQL Data Warehouse) usa regole del firewall IP a livello di server. Non supporta le regole del firewall IP a livello di database. Per ulteriori informazioni, vedere Regole del firewall di database SQL di Azure

Le connessioni al pool SQL dedicato (in precedenza SQL Data Warehouse) vengono crittografate per impostazione predefinita. La modifica delle impostazioni di connessione per disabilitare la crittografia viene ignorata.

Autenticazione

Per autenticazione si intende il modo in cui viene dimostrata la propria identità durante la connessione al database. Il pool SQL dedicato (in precedenza SQL Data Warehouse) attualmente supporta l'autenticazione di SQL Server con un nome utente e una password e con Microsoft Entra ID.

Durante la creazione del server per il database, è stato specificato un account di accesso "amministratore del server" con un nome utente e una password. Con queste credenziali è possibile eseguire l'autenticazione in qualsiasi database di tale server come proprietario del database, o "dbo", tramite l'autenticazione di SQL Server.

Tuttavia, come procedura consigliata, è opportuno che gli utenti dell'organizzazione usino un account diverso per l'autenticazione. Questo modo può possibile limitare le autorizzazioni concesse all'applicazione e ridurre i rischi di attività dannose nel caso in cui il codice dell'applicazione sia vulnerabile a un attacco SQL injection.

Per creare un utente autenticato in SQL Server, connettersi al database master nel proprio server con l'account di accesso amministratore e creare un nuovo accesso al server. È consigliabile creare anche un utente nel database master. La creazione di un utente nel database master consente all'utente di accedere tramite strumenti come SSMS senza specificare un nome di database. Consente inoltre di usare Esplora oggetti per visualizzare tutti i database in un server.

-- Connect to master database and create a login
CREATE LOGIN ApplicationLogin WITH PASSWORD = 'Str0ng_password';
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;

Connettersi quindi al pool SQL dedicato (in precedenza SQL Data Warehouse) con l'account di accesso amministratore del server e creare un utente del database basato sull'account di accesso al server creato.

-- Connect to the database and create a database user
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;

Per concedere a un utente l'autorizzazione a eseguire altre operazioni, ad esempio la creazione di account di accesso o di nuovi database, assegnare all'utente stesso anche i ruoli Loginmanager e dbmanager nel database master.

Per altre informazioni sui questi ruoli aggiuntivi e sull'autenticazione a un database SQL, vedere Gestione di database e account di accesso nel database SQL di Azure. Per altre informazioni sulla connessione tramite Microsoft Entra ID, vedere Connessione tramite l'autenticazione di Microsoft Entra.

Autorizzazione

L'autorizzazione fa riferimento alle operazioni che è possibile eseguire all'interno di un database dopo l'autenticazione e la connessione. I privilegi di autorizzazione sono determinati dalle appartenenze ai ruoli e dalle autorizzazioni. È consigliabile concedere agli utenti i privilegi minimi necessari. Per gestire i ruoli, è possibile usare le stored procedure seguenti:

EXEC sp_addrolemember 'db_datareader', 'ApplicationUser'; -- allows ApplicationUser to read data
EXEC sp_addrolemember 'db_datawriter', 'ApplicationUser'; -- allows ApplicationUser to write data

L'account di amministrazione del server a cui ci si sta connettendo è un membro del ruolo db_owner, che è autorizzato a eseguire qualsiasi operazione all'interno del database. Salvare questo account per la distribuzione degli aggiornamenti allo schema e altre operazioni di gestione. Utilizzare l'account "ApplicationUser" con autorizzazioni più limitate per la connessione dall'applicazione al database con i privilegi minimi richiesti dall'applicazione.

Esistono modi per limitare ulteriormente le operazioni possibili all'interno del database:

  • Le autorizzazioni granulari consentono di controllare le operazioni possibili per colonne, tabelle, viste e procedure singole, nonché per altri oggetti nel database. Usare le autorizzazioni granulari per avere il massimo controllo e concedere solo le autorizzazioni necessarie.
  • È possibile usare ruoli del database diversi da db_datareader e db_datawriter per creare account utente dell'applicazione più potenti o account di gestione meno potenti. I ruoli del database predefiniti incorporati sono una soluzione semplice per la concessione di autorizzazioni, ma possono concedere più autorizzazioni di quelle necessarie.
  • Stored procedure per limitare le operazioni che possono essere eseguite nel database.

L'esempio seguente concede l'accesso in lettura a uno schema definito dall'utente.

--CREATE SCHEMA Test
GRANT SELECT ON SCHEMA::Test to ApplicationUser

La gestione di database e server dal portale di Azure o tramite l'API di Azure Resource Manager viene controllata dalle assegnazioni di ruolo degli account degli utenti del portale. Per ulteriori informazioni, vedi Assegnare ruoli di Azure usando il portale di Azure.

Crittografia

La funzionalità Transparent Data Encryption (TDE) consente di proteggersi dalla minaccia di attività dannose tramite la crittografia e la decrittografia dei dati inattivi. Quando si crittografa il database, i file di log delle transazioni e i backup associati vengono crittografati senza bisogno di apportare modifiche alle applicazioni. TDE esegue la crittografia dello spazio di archiviazione di un intero database usando una chiave simmetrica detta "chiave di crittografia del database".

Nel database SQL la chiave di crittografia del database è protetta da un certificato del server incorporato. Il certificato server integrato è univoco per ogni server. Microsoft ruota automaticamente questi certificati almeno ogni 90 giorni. L'algoritmo di crittografia utilizzato è AES-256. Per una descrizione generale della funzionalità TDE, vedere Transparent Data Encryption.

È possibile crittografare il database usando il portale di Azure o T-SQL.

Passaggi successivi

Per informazioni dettagliate ed esempi di connessione al warehouse con protocolli diversi, vedere Connettersi al pool SQL dedicato (in precedenza SQL Data Warehouse).