Protezione del Database SQLSecuring your SQL Database

In questo articolo vengono esaminate le informazioni di base relative alla protezione del livello dati di un'applicazione in cui viene utilizzato il database SQL di Azure.This article walks through the basics of securing the data tier of an application using Azure SQL Database. In particolare, questo articolo consente di iniziare a usare le risorse per la protezione dei dati, il controllo dell'accesso e il monitoraggio proattivo.In particular, this article will get you started with resources for protecting data, controlling access, and proactive monitoring.

Per una panoramica completa delle funzionalità di sicurezza disponibili in tutte le versioni di SQL, vedere il Centro sicurezza PC per il motore di database di SQL Server e per il database SQL di Azure.For a complete overview of security features available on all flavors of SQL, see the Security Center for SQL Server Database Engine and Azure SQL Database. Ulteriori informazioni sono inoltre disponibili nel white paper tecnico di protezione e del Database di SQL Azure (PDF).Additional information is also available in the Security and Azure SQL Database technical white paper (PDF).

Proteggere i datiProtect data

Il database SQL protegge i dati in movimento con la crittografia Transport Layer Security, i dati inattivi con la crittografia Transparent Data Encryption e i dati in uso con la crittografia Always Encrypted.SQL Database secures you data by providing encryption for data in motion using Transport Layer Security, for data at rest using Transparent Data Encryption, and for data in use using Always Encrypted.

Importante

Tutte le connessioni al database SQL di Azure richiedono la crittografia SSL/TLS (SSL/TLS) in qualsiasi caso quando i dati sono "in transito" da e verso il database in qualsiasi momento.All connections to Azure SQL Database require encryption (SSL/TLS) at all times while data is "in transit" to and from the database. Nella stringa di connessione dell'applicazione, è necessario specificare parametri per crittografare la connessione e non considerare attendibile il certificato del server (ciò viene eseguito automaticamente se si copia la stringa di connessione dal portale di Azure classico), in caso contrario durante le connessioni non verrà verificata l'identità del server e saranno possibili attacchi "man-in-the-middle".In your application's connection string, you must specify parameters to encrypt the connection and not to trust the server certificate (this is done for you if you copy your connection string out of the Azure Classic Portal), otherwise the connection will not verify the identity of the server and will be susceptible to "man-in-the-middle" attacks. Per il driver ADO.NET, ad esempio, questi parametri della stringa di connessione sono Encrypt=True e TrustServerCertificate=False.For the ADO.NET driver, for instance, these connection string parameters are Encrypt=True and TrustServerCertificate=False.

Per altri modi di crittografare i dati, considerare quanto segue:For other ways to encrypt your data, consider:

Controllare l'accessoControl access

Il database SQL protegge i dati limitando l'accesso al database usando regole del firewall, i meccanismi di autenticazione che richiedono agli utenti di dimostrare la propria identità e l'autorizzazione per i dati tramite le appartenenze basate sui ruoli e le autorizzazioni, oltre che tramite la sicurezza a livello di riga e la maschera dati dinamica.SQL Database secures your data by limiting access to your database using firewall rules, authentication mechanisms requiring users to prove their identity, and authorization to data through role-based memberships and permissions, as well as through row-level security and dynamic data masking. Per informazioni sull'uso delle funzionalità di controllo dell'accesso nel database SQL, vedere Control access (Controllare l'accesso).For a discussion of the use of access control features in SQL Database, see Control access.

Importante

La gestione dei database e dei server logici in Azure è controllata dalle assegnazioni di ruolo dell'account del portale utenti.Managing databases and logical servers within Azure is controlled by your portal user account's role assignments. Per ulteriori informazioni su questo argomento, vedere Controllo di accesso basato sui ruoli nel portale di Azure.For more information on this topic, see Role-based access control in Azure Portal.

Firewall e regole del firewallFirewall and firewall rules

Per proteggere i dati, il firewall impedisce qualsiasi accesso al server di database finché non vengono specificati i computer autorizzati usando le regole del firewall.To help protect your data, firewalls prevent all access to your database server until you specify which computers have permission using firewall rules. Il firewall concede l'accesso ai database in base all'indirizzo IP di origine di ogni richiesta.The firewall grants access to databases based on the originating IP address of each request.

AutenticazioneAuthentication

Per autenticazione del database SQL si intende il modo in cui viene dimostrata la propria identità durante la connessione al database.SQL database authentication refers to how you prove your identity when connecting to the database. Il database SQL supporta due tipi di autenticazione:SQL Database supports two types of authentication:

  • Autenticazione SQL, che usa nome utente e password.SQL Authentication, which uses a username and password. 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. Utilizzando queste credenziali, è possibile essere autenticati in qualsiasi database di tale server in qualità di proprietario del database o "dbo".Using these credentials, you can authenticate to any database on that server as the database owner, or "dbo."
  • Autenticazione di Azure Active Directory, che usa identità gestite da Azure Active Directory ed è supportata per domini gestiti e integrati.Azure Active Directory Authentication, which uses identities managed by Azure Active Directory and is supported for managed and integrated domains. Quando possibile, usare l'autenticazione di Active Directory (sicurezza integrata).Use Active Directory authentication (integrated security) whenever possible. Se si desidera utilizzare l'autenticazione di Azure Active Directory, è necessario creare un altro amministratore del server denominato "admin Azure AD," che è autorizzato ad amministrare utenti e gruppi di Azure AD.If you want to use Azure Active Directory Authentication, you must create another server admin called the "Azure AD admin," which is allowed to administer Azure AD users and groups. Questo amministratore può inoltre eseguire tutte le operazioni che un amministratore del server regolare può fare.This admin can also perform all operations that a regular server admin can. Vedere Connessione al Database SQL utilizzando l'autenticazione di Azure Active Directory per una procedura dettagliata di come creare un amministratore di Azure AD per abilitare l'autenticazione di Azure Active Directory.See Connecting to SQL Database By Using Azure Active Directory Authentication for a walkthrough of how to create an Azure AD admin to enable Azure Active Directory Authentication.

AuthorizationAuthorization

Per autorizzazione si intendono le operazioni che l'utente può eseguire in un database SQL di Azure, che sono controllate dalle appartenenze ai ruoli del database e dalle autorizzazioni a livello di oggetto dell'account utente.Authorization refers to what a user can do within an Azure SQL Database, and this is controlled by your user account's database role memberships and object-level permissions. Come procedura consigliata, è opportuno concedere agli utenti i privilegi minimi necessari.As a best practice, you should grant users the least privileges necessary. 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.

Sicurezza a livello di rigaRow-level security

La sicurezza a livello di riga consente ai clienti di controllare l'accesso alle righe in una tabella di database in base alle caratteristiche dell'utente che esegue una query, ad esempio l'appartenenza a un gruppo o il contesto di esecuzione.Row-Level Security enables customers to control access to rows in a database table based on the characteristics of the user executing a query (e.g., group membership or execution context). Per altre informazioni, vedere Sicurezza a livello di riga.For more information, see Row-Level security.

Maschera datiData masking

La funzione Maschera dati dinamica del database SQL limita l'esposizione dei dati sensibili, nascondendoli agli utenti senza privilegi.SQL Database dynamic data masking limits sensitive data exposure by masking it to non-privileged users. La maschera dati dinamica individua automaticamente dati potenzialmente sensibili nel database SQL di Azure e fornisce indicazioni pratiche per il mascheramento di questi campi, con un impatto minimo sul livello dell'applicazione.Dynamic data masking automatically discovers potentially sensitive data in Azure SQL Database and provides actionable recommendations to mask these fields, with minimal impact on the application layer. Questa funzionalità si basa sull'offuscamento dei dati sensibili nel set dei risultati di una query su campi designati del database, mentre i dati del database non subiscono modifiche.It works by obfuscating the sensitive data in the result set of a query over designated database fields, while the data in the database is not changed. Per altre informazioni sull'uso di questa funzionalità per limitare l'esposizione di dati sensibili, vedere Introduzione alla Maschera dati dinamica del database SQL.For more information, see Get started with SQL Database dynamic data masking can be used to limit exposure of sensitive data.

Monitoraggio proattivoProactive monitoring

Il database SQL protegge i dati fornendo funzionalità di controllo e di rilevamento delle minacce.SQL Database secures your data by providing auditing and threat detection capabilities.

ControlloAuditing

Il servizio di controllo del database SQL tiene traccia delle attività del database e consente di gestire la conformità alle normative, registrando gli eventi del database in un log di controllo nell'account di archiviazione di Azure.SQL Database Auditing tracks database activities and helps you to maintain regulatory compliance, by recording database events to an audit log in your Azure Storage account. Il servizio di controllo consente di conoscere le attività del database in corso e di analizzare ed esaminare l'attività cronologica per identificare potenziali minacce o uso improprio sospetto e violazioni della sicurezza.Auditing enables you to understand ongoing database activities, as well as analyze and investigate historical activity to identify potential threats or suspected abuse and security violations. Per altre informazioni, vedere Introduzione al controllo del database SQL.For additional information, see Get started with SQL Database Auditing.

Introduzione al rilevamento delle minacceThreat detection

Il rilevamento delle minacce è complementare al controllo perché offre un livello aggiuntivo di informazioni sulla sicurezza integrata nel servizio database SQL di Azure, che rileva tentativi insoliti e potenzialmente dannosi di accedere ai database o di sfruttarli.Threat Detection complements auditing, by providing an additional layer of security intelligence built into the Azure SQL Database service that detects unusual and potentially harmful attempts to access or exploit databases. L'utente verrà avvisato di attività sospette, vulnerabilità potenziali e attacchi SQL injection, nonché di modelli di accesso al database anomali.You will be alerted about suspicious activities, potential vulnerabilities and SQL injection attacks, as well as anomalous database access patterns. Gli avvisi di Rilevamento minacce sono disponibili nel Centro sicurezza di Azure, forniscono i dettagli delle attività sospette e raccomandano azioni per individuare e ridurre la minaccia.Threat Detection alerts can be viewed from Azure Security Center and provide details of suspicious activity and recommend action on how to investigate and mitigate the threat. La funzionalità Rilevamento delle minacce ha un costo di $15/server/meseThreat Detection costs $15/server/month. Questa funzionalità è gratuita per i primi 60 giorni.It will be free for the first 60 days. Per altre informazioni, vedere l' Introduzione al rilevamento delle minacce nel database SQL.For more information, see Get started with SQL Database Threat Detection.

Maschera datiData Masking

La funzione Maschera dati dinamica del database SQL limita l'esposizione dei dati sensibili, nascondendoli agli utenti senza privilegi.SQL Database dynamic data masking limits sensitive data exposure by masking it to non-privileged users. La maschera dati dinamica individua automaticamente dati potenzialmente sensibili nel database SQL di Azure e fornisce indicazioni pratiche per il mascheramento di questi campi, con un impatto minimo sul livello dell'applicazione.Dynamic data masking automatically discovers potentially sensitive data in Azure SQL Database and provides actionable recommendations to mask these fields, with minimal impact on the application layer. Questa funzionalità si basa sull'offuscamento dei dati sensibili nel set dei risultati di una query su campi designati del database, mentre i dati del database non subiscono modifiche.It works by obfuscating the sensitive data in the result set of a query over designated database fields, while the data in the database is not changed. Per altre informazioni, vedere Introduzione alla maschera dati dinamica del database SQLFor more information, see Get started with SQL Database dynamic data masking

ConformitàCompliance

Oltre alle caratteristiche e alle funzionalità sopra descritte, che consentono all'applicazione di soddisfare vari requisiti di sicurezza, il database SQL di Azure è inoltre sottoposto a controlli regolari ed ha ottenuto la certificazione per diversi standard di conformità.In addition to the above features and functionality that can help your application meet various security requirements, Azure SQL Database also participates in regular audits and has been certified against a number of compliance standards. Per ulteriori informazioni, vedere il Centro protezione di Microsoft Azure, dove è possibile trovare l'elenco più recente di certificazioni di conformità del database SQL.For more information, see the Microsoft Azure Trust Center, where you can find the most current list of SQL Database compliance certifications.

Passaggi successiviNext steps