Proteggere un database in SQL Data WarehouseSecure a database in SQL Data Warehouse

Questo articolo illustra i concetti di base relativi alla protezione del proprio database di Azure SQL Data Warehouse.This article walks through the basics of securing your Azure SQL Data Warehouse database. In particolare l'articolo spiega come iniziare a usare le risorse per limitare l'accesso, proteggere i dati e monitorare le attività in un database.In particular, this article will get you started with resources for limiting access, protecting data, and monitoring activities on a database.

Sicurezza delle connessioniConnection security

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.Connection Security refers to how you restrict and secure connections to your database using firewall rules and connection encryption.

Le regole del firewall vengono usate dal server e dal database per rifiutare i tentativi di connessione da indirizzi IP che non sono stati esplicitamente inclusi nell'elenco di IP consentiti.Firewall rules are used by both the server and the database to reject connection attempts from IP addresses that have not been explicitly whitelisted. Prima di consentire le connessioni dall'applicazione o dall'indirizzo IP pubblico del computer client è necessario creare una regola firewall di livello server tramite il portale di Azure, l'API REST o PowerShell.To allow connections from your application or client machine's public IP address, you must first create a server-level firewall rule using the Azure Portal, REST API, or PowerShell. Come procedura consigliata, si suggerisce di limitare gli intervalli di indirizzi IP consentiti attraverso il firewall del server quanto più possibile.As a best practice, you should restrict the IP address ranges allowed through your server firewall as much as possible. Per accedere ad Azure 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.To access Azure SQL Data Warehouse from your local computer, ensure the firewall on your network and local computer allows outgoing communication on TCP port 1433. Per altre informazioni, vedere il firewall per il database SQL di Azure, sp_set_firewall_rule e sp_set_database_firewall_rule.For more information, see Azure SQL Database firewall, sp_set_firewall_rule, and sp_set_database_firewall_rule.

Le connessioni a SQL Data Warehouse vengono crittografate per impostazione predefinita.Connections to your SQL Data Warehouse are encrypted by default. La modifica delle impostazioni di connessione per disabilitare la crittografia viene ignorata.Modifying connection settings to disable encryption are ignored.

AutenticazioneAuthentication

Per autenticazione si intende il modo in cui viene dimostrata la propria identità durante la connessione al database.Authentication refers to how you prove your identity when connecting to the database. SQL Data Warehouse attualmente supporta l'autenticazione di SQL Server con un nome utente e una password, nonché con Azure Active Directory.SQL Data Warehouse currently supports SQL Server Authentication with a username and password as well as a Azure Active Directory.

Durante la creazione del server logico per il database, è stato specificato un account di accesso "amministratore del server" con un nome utente e una password.When you created the logical server for your database, you specified a "server admin" login with a username and 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.Using these credentials, you can authenticate to any database on that server as the database owner, or "dbo" through SQL Server Authentication.

Tuttavia, come procedura consigliata, è opportuno che gli utenti dell'organizzazione usino un account diverso per l'autenticazione.However, as a best practice, your organization’s users should use a different account to authenticate. 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.This way you can limit the permissions granted to the application and reduce the risks of malicious activity in case your application code is vulnerable to a SQL injection attack.

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.To create a SQL Server Authenticated user, connect to the master database on your server with your server admin login and create a new server login. Inoltre, è consigliabile creare un utente nel database master per gli utenti di SQL Data Warehouse di Azure.Additionally, it is a good idea to create a user in the master database for Azure SQL Data Warehouse users. La creazione di un utente nel database master consente all'utente di accedere tramite strumenti come SSMS senza specificare un nome di database.Creating a user in master allows a user to login using tools like SSMS without specifying a database name. Consente inoltre di usare Esplora oggetti per visualizzare tutti i database in SQL server.It also allows them to use the object explorer to view all databases on a SQL server.

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

Quindi connettersi al database di SQL Data Warehouse con l'account di accesso amministratore server e creare un utente di database basato sull'account di accesso al server appena creato.Then, connect to your SQL Data Warehouse database with your server admin login and create a database user based on the server login you just created.

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

Se un utente esegue altre operazioni, ad esempio crea accessi o nuovi database, avrà anche bisogno dell'assegnazione dei ruoli Loginmanager e dbmanager nel database master.If a user will be doing additional operations such as creating logins or creating new databases, they will also need to be assigned to the Loginmanager and dbmanager roles in the master database. Per altre informazioni sui questi ruoli aggiuntivi e sull'autenticazione a un database SQL, vedere Gestione di database e account di accesso in database SQL di Azure.For more information on these additonal roles and authenticating to a SQL Database, see Managing databases and logins in Azure SQL Database. Per altre informazioni su Azure AD per SQL Data Warehouse, vedere Connessione a SQL Data Warehouse con l'autenticazione di Azure Active Directory.For more details on Azure AD for SQL Data Warehouse, see Connecting to SQL Data Warehouse By Using Azure Active Directory Authentication.

AuthorizationAuthorization

Per autorizzazione si intendono le operazioni che è possibile effettuare all'interno di un database di Azure SQL Data Warehouse e questa funzionalità viene controllata mediante le autorizzazioni e le appartenenze ai ruoli dell'account utente.Authorization refers to what you can do within an Azure SQL Data Warehouse database, and this is controlled by your user account's role memberships and permissions. Come procedura consigliata, è opportuno concedere agli utenti i privilegi minimi necessari.As a best practice, you should grant users the least privileges necessary. Azure SQL Data Warehouse ne semplifica la gestione con i ruoli in T-SQL:Azure SQL Data Warehouse makes this easy to manage with roles in T-SQL:

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.The server admin account you are connecting with is a member of db_owner, which has authority to do anything within the database. Salvare questo account per la distribuzione degli aggiornamenti allo schema e altre operazioni di gestione.Save this account for deploying schema upgrades and other management operations. Utilizzare l'account "ApplicationUser" con autorizzazioni più limitate per la connessione dall'applicazione al database con i privilegi minimi richiesti dall'applicazione.Use the "ApplicationUser" account with more limited permissions to connect from your application to the database with the least privileges needed by your application.

Esistono modi per limitare ulteriormente le operazioni possibili con il database SQL di Azure:There are ways to further limit what a user can do with Azure SQL Database:

  • Le autorizzazioni granulari consentono di controllare le operazioni possibili per le singole colonne, tabelle, viste, procedure e altri oggetti nel database.Granular Permissions let you control which operations you can do on individual columns, tables, views, procedures, and other objects in the database. Usare le autorizzazioni granulari per avere il massimo controllo e concedere solo le autorizzazioni necessarie.Use granular permissions to have the most control and grant the minimum permissions necessary. Il sistema di autorizzazioni granulari è complesso; per usarlo in modo efficace è necessario un certo grado di preparazione.The granular permission system is somewhat complicated and will require some study to use effectively.
  • È 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.Database roles other than db_datareader and db_datawriter can be used to create more powerful application user accounts or less powerful management accounts. I ruoli del database predefiniti incorporati sono una soluzione semplice per la concessione di autorizzazioni, ma possono concedere più autorizzazioni di quelle necessarie.The built-in fixed database roles provide an easy way to grant permissions, but can result in granting more permissions than are necessary.
  • È possibile usare stored procedure per limitare le operazioni che possono essere eseguite nel database.Stored procedures can be used to limit the actions that can be taken on the database.

La gestione di database e server logici dal portale di Azure classico o mediante l'API di gestione risorse di Azure viene controllata dalle assegnazioni di ruolo dell'account utente del portale.Managing databases and logical servers from the Azure Classic Portal or using the Azure Resource Manager API is controlled by your portal user account's role assignments. Per altre informazioni su questo argomento, vedere Controllo degli accessi in base al ruolo nel portale di Azure.For more information on this topic, see Role-based access control in Azure Portal.

CrittografiaEncryption

La funzionalità Transparent Data Encryption (TDE) di Azure SQL Data Warehouse consente di proteggersi da attività dannose eseguendo in tempo reale la crittografia e la decrittografia dei dati inattivi.Azure SQL Data Warehouse Transparent Data Encryption (TDE) helps protect against the threat of malicious activity by performing real-time encryption and decryption of your data at rest. Quando si crittografa il database, i file di log delle transazioni e i backup associati vengono crittografati senza bisogno di apportare modifiche alle applicazioni.When you encrypt your database, associated backups and transaction log files are encrypted without requiring any changes to your applications. TDE esegue la crittografia dell'archiviazione di un intero database usando una chiave simmetrica detta "chiave di crittografia del database".TDE encrypts the storage of an entire database by using a symmetric key called the database encryption key. Nel database SQL la chiave di crittografia del database è protetta da un certificato server incorporato.In SQL Database the database encryption key is protected by a built-in server certificate. Il certificato server incorporato è univoco per ogni server di database SQL.The built-in server certificate is unique for each SQL Database server. Microsoft ruota automaticamente questi certificati almeno ogni 90 giorni.Microsoft automatically rotates these certificates at least every 90 days. L’algoritmo di crittografia utilizzato da SQL Data Warehouse è AES-256.The encryption algorithm used by SQL Data Warehouse is AES-256. Per una descrizione generale della funzionalità TDE, vedere Transparent Data Encryption.For a general description of TDE, see Transparent Data Encryption.

È possibile crittografare il database usando il portale di Azure o T-SQL.You can encrypt your database using the Azure Portal or T-SQL.

Passaggi successiviNext steps

Per informazioni dettagliate ed esempi di connessione a SQL Data Warehouse con protocolli diversi, vedere Connettersi ad Azure SQL Data Warehouse.For details and examples on connecting to your SQL Data Warehouse with different protocols, see Connect to SQL Data Warehouse.