Procedure consigliate per la sicurezza del database di AzureAzure database security best practices

La sicurezza è un tema della massima importanza per la gestione dei database ed è sempre stata una priorità per il database SQL di Azure.Security is a top concern when managing databases, and it has always been a priority for Azure SQL Database. I database possono essere protetti in modo sicuro per soddisfare la maggior parte dei requisiti di legge e di sicurezza, tra i quali HIPAA, ISO 27001/27002 e PCI DSS livello 1.Your databases can be tightly secured to help satisfy most regulatory or security requirements, including HIPAA, ISO 27001/27002, and PCI DSS Level 1, among others. Un elenco aggiornato delle certificazioni di conformità di sicurezza è disponibile nel sito Centro protezione di Microsoft.A current list of security compliance certifications is available at the Microsoft Trust Center site. È anche possibile posizionare i database in specifici data center di Azure in base ai requisiti normativi.You also can choose to place your databases in specific Azure datacenters based on regulatory requirements.

In questo articolo verrà illustrato un insieme di procedure consigliate per la sicurezza del database di Azure,In this article, we will discuss a collection of Azure database security best practices. derivate dalla nostra esperienza con la sicurezza dei database di Azure e dalle esperienze di altri clienti.These best practices are derived from our experience with Azure database security and the experiences of customers like yourself.

Per ogni procedura consigliata verrà illustrato:For each best practice, we explain:

  • Qual è la procedura consigliataWhat the best practice is
  • Il motivo per cui si vuole abilitare tale procedura consigliataWhy you want to enable that best practice
  • Quale potrebbe essere il risultato se non fosse possibile abilitare la procedura consigliataWhat might be the result if you fail to enable the best practice
  • Come imparare ad abilitare la procedura consigliataHow you can learn to enable the best practice

Il presente articolo sulle procedure consigliate per la sicurezza del database di Azure si basa su un parere condiviso, nonché sulle capacità e sui set di funzionalità della piattaforma di Azure esistenti al momento della scrittura.This Azure Database Security Best Practices article is based on a consensus opinion and Azure platform capabilities and feature sets as they exist at the time this article was written. Le opinioni e le tecnologie cambiano nel tempo e questo articolo verrà aggiornato regolarmente per riflettere tali modifiche.Opinions and technologies change over time and this article will be updated on a regular basis to reflect those changes.

Le procedure consigliate per la sicurezza del database di Azure discusse in questo articolo includono:Azure database security best practices discussed in this article include:

  • Usare le regole del firewall per limitare l'accesso al databaseUse firewall rules to restrict database access
  • Abilitare l'autenticazione del databaseEnable database authentication
  • Proteggere i dati con la crittografiaProtect your data using encryption
  • Proteggere i dati in transitoProtect data in transit
  • Abilitare il controllo del databaseEnable database auditing
  • Abilitare il rilevamento delle minacce per il databaseEnable database threat detection

Usare le regole del firewall per limitare l'accesso al databaseUse firewall rules to restrict database access

Il database SQL di Microsoft Azure fornisce un servizio di database relazionale per Azure e altre applicazioni basate su Internet.Microsoft Azure SQL Database provides a relational database service for Azure and other Internet-based applications. Per garantire la sicurezza dell'accesso, il database SQL controlla l'accesso con regole del firewall che limitano la connettività in base all'indirizzo IP, meccanismi di autenticazione che richiedono agli utenti di dimostrare la propria identità e meccanismi di autorizzazione che consentono agli utenti di usufruire solo di azioni e dati specifici.To provide access security, SQL Database controls access with firewall rules limiting connectivity by IP address, authentication mechanisms requiring users to prove their identity, and authorization mechanisms limiting users to specific actions and data. I firewall impediscono qualsiasi accesso al server del database finché non vengono specificati i computer autorizzati.Firewalls prevent all access to your database server until you specify which computers have permission. 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.

Regole del firewall

Il servizio Database SQL di Azure è disponibile solo tramite la porta TCP 1433.The Azure SQL Database service is only available through TCP port 1433. Per accedere al database SQL dal computer, assicurarsi che il firewall del computer client consenta la comunicazione TCP in uscita sulla porta TCP 1433.To access a SQL Database from your computer, ensure that your client computer firewall allows outgoing TCP communication on TCP port 1433. Se non sono necessarie per altre applicazioni, bloccare le connessioni in ingresso sulla porta TCP 1433 usando le regole del firewall.If not needed for other applications, block inbound connections on TCP port 1433 using firewall rules.

Come parte del processo di connessione, le connessioni da macchine virtuali di Azure vengono reindirizzate a un indirizzo IP diverso e a una porta, univoca per ogni ruolo di lavoro.As part of the connection process, connections from Azure virtual machines are redirected to a different IP address and port, unique for each worker role. Il numero di porta è compreso nell'intervallo che va da 11000 a 11999.The port number is in the range from 11000 to 11999. Per altre informazioni sulle porte TCP, vedere Porte superiori a 1433 per ADO.NET 4.5 e il database SQL.For more information about TCP ports, see Ports beyond 1433 for ADO.NET 4.5 and SQL Database2.

Nota

Per informazioni generali sulle regole del firewall, vedere l'articolo relativo alle regole del firewall per il database SQL.For more information about firewall rules in SQL Database, see SQL Database firewall rules.

Abilitare l'autenticazione del databaseEnable database authentication

Il database SQL supporta due tipi di autenticazione: l'autenticazione SQL e l'autenticazione di Azure Active Directory (Azure AD).SQL Database supports two types of authentication, SQL Authentication and Azure Active Directory Authentication (Azure AD Authentication).

L'autenticazione SQL è consigliata nei casi seguenti:SQL Authentication is recommended in following cases:

  • Consente a SQL Azure di supportare gli ambienti con sistemi operativi misti, in cui non tutti gli utenti sono autenticati da un dominio Windows.It allows SQL Azure to support environments with mixed operating systems, where all users are not authenticated by a Windows domain.
  • Consente a SQL Azure di supportare le applicazioni meno recenti e lr applicazioni di terze parti che richiedono l'autenticazione di SQL Server.Allows SQL Azure to support older applications and applications provided by third parties that require SQL Server Authentication.
  • Consente agli utenti di connettersi da domini sconosciuti o non attendibili.Allows users to connect from unknown or untrusted domains. Ad esempio, un'applicazione in cui clienti specifici si connettono con account di accesso di SQL Server assegnati per ricevere lo stato dei relativi ordini.For instance, an application where established customers connect with assigned SQL Server logins to receive the status of their orders.
  • Consente a SQL Azure di supportare le applicazioni basate sul Web in cui gli utenti creano le proprie identità.Allows SQL Azure to support Web-based applications where users create their own identities.
  • Consente agli sviluppatori di software di distribuire le proprie applicazioni tramite una gerarchia di autorizzazioni complessa, basata su account di accesso di SQL Server noti e preimpostati.Allows software developers to distribute their applications by using a complex permission hierarchy based on known, preset SQL Server logins.

Nota

Tuttavia, l'autenticazione di SQL Server non può usare il protocollo di sicurezza Kerberos.However, SQL Server Authentication cannot use Kerberos security protocol.

Se si usa l'autenticazione di SQL è necessario:If you use SQL Authentication you must:

L'autenticazione di Azure Active Directory è un meccanismo di connessione al database SQL di Microsoft Azure e a SQL Data Warehouse tramite le identità di Azure Active Directory (Azure AD).Azure Active Directory authentication is a mechanism of connecting to Microsoft Azure SQL Database and SQL Data Warehouse by using identities in Azure Active Directory (Azure AD). Con l'autenticazione di Azure AD è possibile gestire centralmente le identità degli utenti del database e altri servizi Microsoft.With Azure AD authentication, you can centrally manage the identities of database users and other Microsoft services in one central location. La gestione centrale degli ID consente di gestire gli utenti del database da un unico punto e semplifica la gestione delle autorizzazioni.Central ID management provides a single place to manage database users and simplifies permission management. Ecco alcuni vantaggi:Benefits include the following:

  • Offre un'alternativa all'autenticazione di SQL Server.It provides an alternative to SQL Server authentication.
  • Contribuisce ad arrestare la proliferazione delle identità utente nei server di database.Helps stop the proliferation of user identities across database servers.
  • Consente la rotazione delle password in un'unica posizione.Allows password rotation in a single place.
  • I clienti possono gestire le autorizzazioni del database tramite gruppi (AAD) esterni.Customers can manage database permissions using external (AAD) groups.
  • Può eliminare l'archiviazione delle password abilitando l'autenticazione integrata di Windows e altre forme di autenticazione supportate da Azure Active Directory.It can eliminate storing passwords by enabling integrated Windows authentication and other forms of authentication supported by Azure Active Directory.
  • L'autenticazione di Azure SD usa gli utenti di un database indipendente per autenticare le identità a livello di database.Azure AD authentication uses contained database users to authenticate identities at the database level.
  • Azure AD supporta l'autenticazione basata su token per le applicazioni che si connettono a database SQL.Azure AD supports token-based authentication for applications connecting to SQL Database.
  • L'autenticazione di Azure AD supporta la federazione dei domini di AD FS o l'autenticazione utente/password nativa per un'istanza locale di Azure Active Directory senza la sincronizzazione del dominio.Azure AD authentication supports ADFS (domain federation) or native user/password authentication for a local Azure Active Directory without domain synchronization.
  • Azure AD supporta le connessioni da SQL Server Management Studio che utilizzano l'autenticazione universale di Active Directory, che include l'MFA (Multi-Factor Authentication).Azure AD supports connections from SQL Server Management Studio that use Active Directory Universal Authentication, which includes Multi-Factor Authentication (MFA). L'MFA include funzionalità avanzate di autenticazione con una serie di semplici opzioni di verifica, tra cui: chiamata telefonica, SMS, smart card con pin o notifica tramite app per dispositivi mobili.MFA includes strong authentication with a range of easy verification options — phone call, text message, smart cards with pin, or mobile app notification. Per altre informazioni Supporto di SQL Server Management Studio (SSMS) per l'autenticazione MFA di Azure AD con il database SQL e SQL Data Warehouse.For more information, see SSMS support for Azure AD MFA with SQL Database and SQL Data Warehouse.

I passaggi di configurazione includono le procedure seguenti per configurare e usare l'autenticazione di Azure Active Directory.The configuration steps include the following procedures to configure and use Azure Active Directory authentication.

  • Creare e popolare un'istanza di Azure AD.Create and populate Azure AD.
  • Facoltativo: associare o modificare l'istanza di Active Directory attualmente associata alla sottoscrizione di Azure.Optional: Associate or change the active directory that is currently associated with your Azure Subscription.
  • Creare un amministratore di Azure Active Directory per il server di Azure SQL o per Azure SQL Data Warehouse.Create an Azure Active Directory administrator for Azure SQL server or Azure SQL Data Warehouse.
  • Configurare i computer client.Configure your client computers.
  • Creare gli utenti di database indipendente nel database di cui è stato eseguito il mapping alle identità di Azure AD.Create contained database users in your database mapped to Azure AD identities.
  • Connettersi al database usando le identità di Azure AD.Connect to your database by using Azure AD identities.

Informazioni dettagliate sono disponibili qui.You can find details information here.

Proteggere i dati con la crittografiaProtect your data using encryption

La funzionalità Transparent Data Encryption del database SQL di Azure (TDE) consente di proteggere il sistema da attività dannose eseguendo in tempo reale la crittografia e la decrittografia dei database, dei backup associati e dei file di log delle transazioni inattivi, senza apportare modifiche all'applicazione.Azure SQL Database transparent data encryption (TDE) helps protect against the threat of malicious activity by performing real-time encryption and decryption of the database, associated backups, and transaction log files at rest without requiring changes to the application. 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.

Anche quando l'intera risorsa di archiviazione è crittografata, è molto importante crittografare anche il database stesso.Even when the entire storage is encrypted, it is very important to also encrypt your database itself. Si tratta di un'implementazione della strategia di difesa approfondita per la protezione dati.This is an implementation of the defense in depth approach for data protection. Se si usa il database SQL di Azure e si vuole proteggere dati riservati, ad esempio il numero della carta di credito o il codice fiscale, è possibile crittografare i database con la crittografia AES a 256 bit con convalida FIPS 140-2, che soddisfa i requisiti di molti standard di settore, quali HIPAA e PCI.If you are using Azure SQL Database and wish to protect sensitive data such as credit card or social security numbers, you can encrypt databases with FIPS 140-2 validated 256 bit AES encryption which meets the requirements of many industry standards (e.g., HIPAA, PCI).

È importante comprendere che i file correlati all'estensione del pool di buffer non vengono crittografati quando un database è crittografato con la funzionalità TDE.It’s important to understand that files related to buffer pool extension (BPE) are not encrypted when a database is encrypted using TDE. È necessario usare gli strumenti di crittografia a livello di file system come BitLocker o Encrypting File System (EFS) per i file correlati all'estensione del pool di buffer.You must use file system level encryption tools like BitLocker or the Encrypting File System (EFS) for BPE related files.

Dato che un utente autorizzato, ad esempio un amministratore della sicurezza o un amministratore di database, può accedere ai dati anche se il database è crittografato con TDE, è consigliabile seguire anche le raccomandazioni seguenti:Since an authorized user such as a security administrator or a database administrator can access the data even if the database is encrypted with TDE, you should also follow the recommendations below:

  • Abilitare l'autenticazione SQL a livello di database.Enable SQL authentication at the database level.
  • Usare l'autenticazione di Azure AD con i ruoli di Controllo degli accessi in base al ruolo.Use Azure AD authentication using RBAC roles.
  • Gli utenti e le applicazioni dovrebbero usare account separati per l'autenticazione.Users and applications should use separate accounts to authenticate. In questo modo è possibile limitare le autorizzazioni concesse a utenti e applicazioni e ridurre i rischi di attività dannose.This way you can limit the permissions granted to users and applications and reduce the risks of malicious activity.
  • Implementare la sicurezza a livello di database usando i ruoli predefiniti del database, ad esempio db_datareader o db_datawriter, oppure creare ruoli personalizzati per l'applicazione per concedere autorizzazioni esplicite su determinati oggetti di database.Implement database-level security by using fixed database roles (such as db_datareader or db_datawriter), or you can create custom roles for your application to grant explicit permissions to selected database objects.

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

  • Crittografia a livello di cella per crittografare colonne specifiche o anche celle di dati con chiavi di crittografia diverse.Cell-level encryption to encrypt specific columns or even cells of data with different encryption keys.
  • Crittografia di dati in uso con Always Encrypted: la funzionalità Always Encrypted consente ai client di crittografare i dati sensibili nelle applicazioni client e di non rivelare mai le chiavi di crittografia al motore di database (database SQL o SQL Server).Encryption in use using Always Encrypted: Always Encrypted allows clients to encrypt sensitive data inside client applications and never reveal the encryption keys to the Database Engine (SQL Database or SQL Server). Di conseguenza, Always Encrypted consente di separare i proprietari dei dati (che possono visualizzarli) e le persone incaricate della gestione dei dati (che però non devono poter accedere ai dati).As a result, Always Encrypted provides a separation between those who own the data (and can view it) and those who manage the data (but should have no access).
  • Uso della sicurezza a livello di riga: 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.Using Row-level security: 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.

Proteggere i dati in transitoProtect data in transit

La protezione dei dati in transito deve essere una parte essenziale della strategia di protezione dati.Protecting data in transit should be essential part of your data protection strategy. Visto che i dati transiteranno in modo bidirezionale tra molte posizioni, in generale si raccomanda di usare sempre i protocolli SSL/TLS per lo scambio di dati tra posizioni diverse.Since data will be moving back and forth from many locations, the general recommendation is that you always use SSL/TLS protocols to exchange data across different locations. In alcuni casi è consigliabile isolare l'intero canale di comunicazione tra l'infrastruttura locale e cloud con una rete privata virtuale (VPN).In some circumstances, you may want to isolate the entire communication channel between your on-premises and cloud infrastructure by using a virtual private network (VPN).

Per lo spostamento dei dati tra l'infrastruttura locale e Azure, è opportuno considerare le misure di protezione appropriate, ad esempio HTTPS o VPN.For data moving between your on-premises infrastructure and Azure, you should consider appropriate safeguards such as HTTPS or VPN.

Per le organizzazioni che devono proteggere l'accesso ad Azure da più workstation locali, usare una VPN da sito a sito di Azure.For organizations that need to secure access from multiple workstations located on-premises to Azure, use Azure site-to-site VPN.

Per le organizzazioni che devono proteggere l'accesso ad Azure da singole workstation locali o non locali, valutare l'uso di una VPN da punto a sito.For organizations that need to secure access from individual workstations located on-premises or off-premises to Azure, consider using Point-to-Site VPN.

Set di dati più grandi possono essere spostati su un collegamento WAN ad alta velocità dedicato, ad esempio ExpressRoute.Larger data sets can be moved over a dedicated high-speed WAN link such as ExpressRoute. Se si decide di usare ExpressRoute, è possibile anche crittografare i dati a livello di applicazione usando SSL/TLS o altri protocolli per una maggiore protezione.If you choose to use ExpressRoute, you can also encrypt the data at the application-level using SSL/TLS or other protocols for added protection.

Se si interagisce con Archiviazione di Azure tramite il portale di Azure, tutte le transazioni hanno luogo tramite HTTPS.If you are interacting with Azure Storage through the Azure Portal, all transactions occur via HTTPS. È possibile usare anche l'API REST di archiviazione su HTTPS per interagire con Archiviazione di Azure e il database SQL di Azure.Storage REST API over HTTPS can also be used to interact with Azure Storage and Azure SQL Database.

Le organizzazioni che non riescono a proteggere i dati in transito sono più vulnerabili agli attacchi man-in-the-middle, eavesdropping e hijack della sessione.Organizations that fail to protect data in transit are more susceptible for man-in-the-middle attacks, eavesdropping and session hijacking. Questi attacchi possono essere il primo passo per ottenere l'accesso ai dati riservati.These attacks can be the first step in gaining access to confidential data.

Per altre informazioni sull'opzione VPN di Azure, vedere l'articolo Pianificazione e progettazione per il gateway VPN.To learn more about Azure VPN option by reading the article Planning and design for VPN Gateway.

Abilitare il controllo del databaseEnable database auditing

Il controllo di un'istanza del motore di database di SQL Server o di un singolo database comporta il rilevamento e la registrazione degli eventi che si verificano nel motore di database.Auditing an instance of the SQL Server Database Engine or an individual database involves tracking and logging events that occur on the Database Engine. SQL Server Audit consente di creare controlli del server che possono contenere specifiche di controllo del server per gli eventi a livello di server e specifiche di controllo del database per gli eventi a livello di database.SQL Server audit lets you create server audits, which can contain server audit specifications for server level events, and database audit specifications for database level events. Gli eventi controllati possono essere scritti nei log eventi o in file di controllo.Audited events can be written to the event logs or to audit files.

Esistono numerosi livelli di controllo per SQL Server, in base ai requisiti legislativi o standard per l'installazione.There are several levels of auditing for SQL Server, depending on government or standards requirements for your installation. SQL Server Audit fornisce gli strumenti e i processi che sono necessari per abilitare, archiviare e visualizzare controlli in vari oggetti server e database.SQL Server Audit provides the tools and processes you must have to enable, store, and view audits on various server and database objects.

Il servizio di controllo del database SQL di Azure tiene traccia degli eventi che si verificano nel database e li registra in un log di controllo nell'account di Archiviazione di Azure dell'utente.Azure SQL Database Auditing tracks database events and writes them to an audit log in your Azure Storage account.

Il controllo consente di agevolare la conformità alle normative, comprendere le attività del database e ottenere informazioni su eventuali discrepanze e anomalie che potrebbero indicare problemi aziendali o sospette violazioni della sicurezza.Auditing can help you maintain regulatory compliance, understand database activity, and gain insight into discrepancies and anomalies that could indicate business concerns or suspected security violations.

Il controllo abilita e facilita il rispetto degli standard di conformità, ma non garantisce la conformità.Auditing enables and facilitates adherence to compliance standards but doesn't guarantee compliance.

Per altre informazioni sul controllo del database e su come abilitarlo, vedere l'articolo Abilitare il controllo e il rilevamento delle minacce sui server SQL nel Centro sicurezza di Azure.To learn more about database auditing and how to enable it, please read the article Enable auditing and threat detection on SQL servers in Azure Security Center.

Abilitare il rilevamento delle minacce per il databaseEnable database threat detection

Il rilevamento delle minacce di SQL consente ai clienti di rilevare e rispondere alle minacce potenziali non appena si verificano, fornendo avvisi di sicurezza sulle attività anomale.SQL Threat Detection enables you to detect and respond to potential threats as they occur by providing security alerts on anomalous activities. È possibile ricevere un avviso in caso di attività di database sospetta, potenziali vulnerabilità e attacchi SQL injection, nonché in caso di modelli di accesso ai database anomali.You will receive an alert upon suspicious database activities, potential vulnerabilities, and SQL injection attacks, as well as anomalous database access patterns. Gli avvisi di Rilevamento minacce di SQL forniscono i dettagli delle attività sospette e consigliano azioni per analizzare e ridurre la minaccia.SQL Threat Detection alerts provide details of suspicious activity and recommend action on how to investigate and mitigate the threat.

Ad esempio, l'attacco SQL injection è uno dei problemi di sicurezza comuni delle applicazioni Web su Internet, che viene usato per attaccare le applicazioni guidate dai dati.For example, SQL injection is one of the common Web application security issues on the Internet, used to attack data-driven applications. Gli autori degli attacchi sfruttano le vulnerabilità delle applicazioni per introdurre istruzioni SQL dannose nei campi di immissione dell'applicazione, con lo scopo di violare o modificare i dati del database.Attackers take advantage of application vulnerabilities to inject malicious SQL statements into application entry fields, breaching or modifying data in the database.

Per informazioni su come configurare le funzionalità di rilevamento delle minacce per il database nel portale di Azure, vedere Rilevamento delle minacce nel database SQL.To learn about how to set up threat detection for your database in the Azure portal see, SQL Database Threat Detection.

Gli avvisi per il rilevamento delle minacce di SQL sono integrati con il Centro sicurezza di Azure.In addition, SQL Threat Detection integrates alerts with Azure Security Center. Fai una prova gratuita di 60 giorni.We invite you to try it out for 60 days for free.

Per altre informazioni sul rilevamento delle minacce per il database e su come abilitarlo, vedere l'articolo Abilitare il controllo e il rilevamento delle minacce sui server SQL nel Centro sicurezza di Azure.To learn more about Database Threat Detection and how to enable it, please read the article Enable auditing and threat detection on SQL servers in Azure Security Center.

ConclusioneConclusion

Il database di Azure è una piattaforma di database affidabile, con una gamma completa di funzionalità di sicurezza che soddisfano molti requisiti normativi e aziendali.Azure Database is a robust database platform, with a full range of security features that meet many organizational and regulatory compliance requirements. È possibile proteggere i dati controllando l'accesso fisico e tramite un'ampia gamma di opzioni per la protezione dei dati a livello di file, di colonna o di riga con Transparent Data Encryption, crittografia a livello di cella o sicurezza a livello di riga.You can help protect data by controlling the physical access to your data, and using a variety of options for data security at the file-, column-, or row level with Transparent Data Encryption, Cell-Level Encryption, or Row-Level Security. Always Encrypted consente anche operazioni sui dati crittografati, semplificando il processo di aggiornamenti dell'applicazione.Always Encrypted also enables operations against encrypted data, simplifying the process of application updates. A sua volta, l'accesso ai log di controllo dell'attività del database SQL fornisce le informazioni necessarie, consentendo di sapere come e quando viene eseguito l'accesso ai dati.In turn, access to auditing logs of SQL Database activity provides you with the information you need, allowing you to know how and when data is accessed.

Passaggi successiviNext steps