Transparent Data Encryption (TDE)Transparent Data Encryption (TDE)

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzureSìAzure SQL Data Warehouse Sì Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Per il contenuto relativo alle versioni precedenti di SQL Server, vedere Transparent Data Encryption (TDE).For content related to previous versions of SQL Server, see Transparent Data Encryption (TDE).

Transparent Data Encryption (TDE) consente di crittografare file di dati di SQL ServerSQL Server, Database SQL di AzureAzure SQL Databasee Azure SQL Data WarehouseAzure SQL Data Warehouse con un'operazione nota come crittografia dei dati inattivi.Transparent Data Encryption (TDE) encrypts SQL ServerSQL Server, Database SQL di AzureAzure SQL Database, and Azure SQL Data WarehouseAzure SQL Data Warehouse data files, known as encrypting data at rest. Per proteggere il database è possibile adottare alcune accortezze, tra cui la progettazione di un sistema sicuro, la crittografia dei dati riservati e la compilazione di un firewall attorno ai server di database.You can take several precautions to help secure the database such as designing a secure system, encrypting confidential assets, and building a firewall around the database servers. Tuttavia, nel caso in cui i supporti fisici (ad esempio unità o nastri di backup) venissero rubati, un malintenzionato potrebbe ripristinare o collegare il database e accedere ai dati.However, in a scenario where the physical media (such as drives or backup tapes) are stolen, a malicious party can just restore or attach the database and browse the data. Una soluzione per ovviare al problema consiste nel crittografare i dati sensibili nel database e proteggere con un certificato le chiavi usate per la crittografia.One solution is to encrypt the sensitive data in the database and protect the keys that are used to encrypt the data with a certificate. In questo modo si impedisce a chi è sprovvisto delle chiavi di usare i dati; tuttavia, questo tipo di protezione deve essere pianificato in anticipo.This prevents anyone without the keys from using the data, but this kind of protection must be planned in advance.

TDE consente di eseguire la crittografia e la decrittografia I/O in tempo reale dei file di dati e di log.TDE performs real-time I/O encryption and decryption of the data and log files. Per la crittografia viene usata una chiave di crittografia del database (DEK), archiviata nel record di avvio del database affinché sia disponibile durante le operazioni di recupero.The encryption uses a database encryption key (DEK), which is stored in the database boot record for availability during recovery. La chiave di crittografia del database è una chiave simmetrica protetta tramite un certificato archiviato nel database master del server o una chiave asimmetrica protetta da un modulo EKM.The DEK is a symmetric key secured by using a certificate stored in the master database of the server or an asymmetric key protected by an EKM module. TDE consente di proteggere i dati "non operativi", ovvero i file di dati e di log,TDE protects data "at rest", meaning the data and log files. e assicura la conformità a numerose leggi, normative e linee guida stabilite in vari settori.It provides the ability to comply with many laws, regulations, and guidelines established in various industries. Gli sviluppatori software possono ora crittografare i dati usando gli algoritmi di crittografia AES e 3DES senza modificare applicazioni esistenti.This enables software developers to encrypt data by using AES and 3DES encryption algorithms without changing existing applications.

Informazioni su TDEAbout TDE

La crittografia del file di database viene eseguita a livello di pagina.Encryption of the database file is performed at the page level. Le pagine di un database crittografato sono crittografate prima di essere scritte sul disco e decrittografate quando vengono lette in memoria.The pages in an encrypted database are encrypted before they are written to disk and decrypted when read into memory. L'uso di TDE non comporta un aumento delle dimensioni del database crittografato.TDE does not increase the size of the encrypted database.

Informazioni applicabili a Database SQLSQL DatabaseInformation applicable to Database SQLSQL Database

Quando si usa TDE con Database SQLSQL Database V12 il certificato a livello di server archiviato nel database master viene creato automaticamente da Database SQLSQL Database.When using TDE with Database SQLSQL Database V12 the server-level certificate stored in the master database is automatically created for you by Database SQLSQL Database. Per spostare un database TDE nel Database SQLSQL Database , è necessario decrittografare il database, spostarlo e quindi abilitare nuovamente TDE nel Database SQLSQL Databasedi destinazione.To move a TDE database on Database SQLSQL Database you must decrypt the database, move the database, and then re-enable TDE on the destination Database SQLSQL Database. Per istruzioni dettagliate su TDE nel Database SQLSQL Database, vedere Transparent Data Encryption with Azure SQL Database.For step-by-step instructions for TDE on Database SQLSQL Database, see Transparent Data Encryption with Azure SQL Database.

Informazioni applicabili a SQL ServerSQL ServerInformation applicable to SQL ServerSQL Server

Una volta protetto, il database può essere ripristinato usando il certificato corretto.After it is secured, the database can be restored by using the correct certificate. Per altre informazioni sui certificati, vedere SQL Server Certificates and Asymmetric Keys.For more information about certificates, see SQL Server Certificates and Asymmetric Keys.

Quando si abilita TDE, è consigliabile eseguire immediatamente il backup del certificato e della chiave privata associata al certificato.When enabling TDE, you should immediately back up the certificate and the private key associated with the certificate. Se il certificato non è più disponibile o se è necessario ripristinare o collegare il database a un altro server, è necessario disporre di copie di backup del certificato e della chiave privata, altrimenti non sarà possibile aprire il database.If the certificate ever becomes unavailable or if you must restore or attach the database on another server, you must have backups of both the certificate and the private key or you will not be able to open the database. Il certificato di crittografia deve essere mantenuto anche se la funzionalità TDE non è più abilitata nel database.The encrypting certificate should be retained even if TDE is no longer enabled on the database. Anche se il database non è crittografato, è possibile che parti del log delle transazioni restino comunque protette e che il certificato sia necessario per alcune operazioni per l'esecuzione del backup completo del database.Even though the database is not encrypted, parts of the transaction log may still remain protected, and the certificate may be needed for some operations until the full backup of the database is performed. Un certificato che ha superato la data di scadenza può ancora essere usato per crittografare e decrittografare dati con TDE.A certificate that has exceeded its expiration date can still be used to encrypt and decrypt data with TDE.

Gerarchia di crittografiaEncryption Hierarchy

La figura seguente illustra l'architettura della crittografia TDE:The following illustration shows the architecture of TDE encryption. Solo gli elementi a livello di database, la chiave di crittografia del database e le parti ALTER DATABASE sono configurabili dall'utente quando si usa TDE nel Database SQLSQL Database.Only the database level items (the database encryption key and ALTER DATABASE portions are user-configurable when using TDE on Database SQLSQL Database.

Visualizza la gerarchia descritta nell'argomento.Displays the hierarchy described in the topic.

Uso della crittografia trasparente dei datiUsing Transparent Data Encryption

Per usare TDE, eseguire le operazioni seguenti:To use TDE, follow these steps.

Si applica a: SQL ServerSQL Server.Applies to: SQL ServerSQL Server.

  • Creare una chiave masterCreate a master key

  • Creare o ottenere un certificato protetto dalla chiave masterCreate or obtain a certificate protected by the master key

  • Creare una chiave di crittografia del database e proteggerla mediante il certificatoCreate a database encryption key and protect it by the certificate

  • Impostare il database per l'uso della crittografiaSet the database to use encryption

    L'esempio seguente illustra come crittografare e decrittografare il database AdventureWorks2012 usando un certificato installato nel server denominato MyServerCert.The following example illustrates encrypting and decrypting the AdventureWorks2012 database using a certificate installed on the server named MyServerCert.

USE master;  
GO  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';  
go  
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';  
go  
USE AdventureWorks2012;  
GO  
CREATE DATABASE ENCRYPTION KEY  
WITH ALGORITHM = AES_128  
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;  
GO  
ALTER DATABASE AdventureWorks2012  
SET ENCRYPTION ON;  
GO  

Le operazioni di crittografia e decrittografia sono pianificate sui thread di background da SQL ServerSQL Server.The encryption and decryption operations are scheduled on background threads by SQL ServerSQL Server. Per visualizzare lo stato di queste operazioni, è possibile usare le viste del catalogo e le viste a gestione dinamica nell'elenco illustrato di seguito in questo argomento.You can view the status of these operations using the catalog views and dynamic management views in the list that appears later in this topic.

Attenzione

I file di backup dei database in cui è abilitata la funzionalità TDE vengono crittografati anche tramite la chiave di crittografia del database.Backup files of databases that have TDE enabled are also encrypted by using the database encryption key. Di conseguenza, quando questi backup vengono ripristinati, è necessario disporre del certificato che protegge la chiave di crittografia del database.As a result, when you restore these backups, the certificate protecting the database encryption key must be available. Pertanto, oltre ad eseguire il backup del database, è necessario assicurarsi di conservare un backup dei certificati server per impedire la perdita di dati.This means that in addition to backing up the database, you have to make sure that you maintain backups of the server certificates to prevent data loss. Se il certificato non è più disponibile, si verificherà la perdita di dati.Data loss will result if the certificate is no longer available. Per altre informazioni, vedere SQL Server Certificates and Asymmetric Keys.For more information, see SQL Server Certificates and Asymmetric Keys.

Comandi e funzioniCommands and Functions

Affinché vengano accettati dalle istruzioni indicate di seguito, è necessario che i certificati TDE siano crittografati mediante la chiave master del database.The TDE certificates must be encrypted by the database master key to be accepted by the following statements. Se sono crittografati solo tramite password, verranno rifiutati dalle istruzioni come componenti di crittografia.If they are encrypted by password only, the statements will reject them as encryptors.

Importante

Se si modificano i certificati per abilitarne la protezione tramite password quando vengono usati da TDE, il database diventerà inaccessibile dopo un riavvio.Altering the certificates to be password-protected after they are used by TDE will cause the database to become inaccessible after a restart.

Nella tabella seguente sono inclusi collegamenti e spiegazioni delle funzioni e dei comandi correlati a TDE.The following table provides links and explanations of TDE commands and functions.

Comando o funzioneCommand or function ScopoPurpose
CREATE DATABASE ENCRYPTION KEY (Transact-SQL)CREATE DATABASE ENCRYPTION KEY (Transact-SQL) Consente di creare una chiave usata per crittografare un database.Creates a key that is used to encrypt a database.
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)ALTER DATABASE ENCRYPTION KEY (Transact-SQL) Consente di modificare la chiave usata per crittografare un database.Changes the key that is used to encrypt a database.
DROP DATABASE ENCRYPTION KEY (Transact-SQL)DROP DATABASE ENCRYPTION KEY (Transact-SQL) Consente di rimuovere la chiave usata per crittografare un database.Removes the key that was used to encrypt a database.
Opzioni di ALTER DATABASE SET (Transact-SQL)ALTER DATABASE SET Options (Transact-SQL) Descrive l'opzione ALTER DATABASE , usata per abilitare TDE.Explains the ALTER DATABASE option that is used to enable TDE.

Viste del catalogo e viste a gestione dinamicaCatalog Views and Dynamic Management Views

Nella tabella seguente vengono illustrate le viste del catalogo e le viste a gestione dinamica di TDE.The following table shows TDE catalog views and dynamic management views.

Vista del catalogo e vista a gestione dinamicaCatalog view or dynamic management view ScopoPurpose
sys.databases (Transact-SQL)sys.databases (Transact-SQL) Vista del catalogo che consente di visualizzare le informazioni del database.Catalog view that displays database information.
sys.certificates (Transact-SQL)sys.certificates (Transact-SQL) Vista del catalogo che consente di visualizzare i certificati di un database.Catalog view that shows the certificates in a database.
sys.dm_database_encryption_keys (Transact-SQL)sys.dm_database_encryption_keys (Transact-SQL) Tramite la vista a gestione dinamica vengono fornite informazioni relative alle chiavi di crittografia usate in un database e allo stato di crittografia di un database.Dynamic management view that provides information about the encryption keys used in a database, and the state of encryption of a database.

AutorizzazioniPermissions

Ogni funzionalità e comando di TDE ha requisiti specifici relativi alle autorizzazioni, descritti nelle tabelle precedenti.Each TDE feature and command has individual permission requirements, described in the tables shown earlier.

La visualizzazione dei metadati interessati da TDE richiede l'autorizzazione VIEW DEFINITION per il certificato.Viewing the metadata involved with TDE requires the VIEW DEFINITION permission on the certificate.

ConsiderazioniConsiderations

Durante un'analisi di una nuova crittografia di un database, le operazioni di manutenzione per il database sono disabilitate.While a re-encryption scan for a database encryption operation is in progress, maintenance operations to the database are disabled. È possibile usare l'impostazione modalità utente singolo per il database per eseguire operazioni di manutenzione.You can use the single user mode setting for the database to perform the maintenance operation. Per altre informazioni, vedere Impostare un database in modalità utente singolo.For more information, see Set a Database to Single-user Mode.

È possibile determinare lo stato della crittografia del database utilizzando la vista a gestione dinamica sys.dm_database_encryption_keys.You can find the state of the database encryption using the sys.dm_database_encryption_keys dynamic management view. Per altre informazioni, vedere la sezione "Viste del catalogo e viste a gestione dinamica" più indietro in questo argomento.For more information, see the "Catalog Views and Dynamic Management Views"section earlier in this topic).

In TDE vengono crittografati tutti i file e i filegroup del database.In TDE, all files and filegroups in the database are encrypted. Se un database include filegroup contrassegnati come READ ONLY, l'operazione di crittografia del database avrà esito negativo.If any filegroups in a database are marked READ ONLY, the database encryption operation will fail.

Se un database viene usato per il mirroring del database o il log shipping, entrambi i database saranno crittografati.If a database is being used in database mirroring or log shipping, both databases will be encrypted. Le transazioni del log verranno crittografate quando vengono inviate tra i database.The log transactions will be encrypted when sent between them.

Importante

Gli indici full-text vengono crittografati quando un database viene impostato per la crittografia.Full-text indexes will be encrypted when a database is set for encryption. Gli indici full-text creati prima di SQL Server 2008 verranno importati nel database durante l'aggiornamento a SQL Server 2008 o versione successiva e verranno crittografati con TDE.Full-text indexes created prior to SQL Server 2008 will be imported into the database during upgrade to SQL Server 2008 or greater and they will be encrypted by TDE.

Suggerimento

Per monitorare le modifiche nello stato TDE di un database, usare SQL Server Audit o il servizio di controllo del database SQL.To monitor changes in the TDE status of a database, use SQL Server Audit or SQL Database Auditing. Per SQL Server, lo stato TDE è registrato nel gruppo di azioni di controllo DATABASE_CHANGE_GROUP, disponibile in Azioni e gruppi di azioni di SQL Server Audit.For SQL Server, TDE is tracked under the audit action group DATABASE_CHANGE_GROUP which can be found in SQL Server Audit Action Groups and Actions.

RestrizioniRestrictions

Durante le operazioni di crittografia del database iniziale, modifica della chiave o decrittografia del database, non sono consentite le azioni seguenti:The following operations are not allowed during initial database encryption, key change, or database decryption:

  • Eliminazione di un file da un filegroup del databaseDropping a file from a filegroup in the database

  • Eliminazione del databaseDropping the database

  • Attivazione della modalità offline per il databaseTaking the database offline

  • Scollegamento di un databaseDetaching a database

  • Transizione di un database o filegroup in un stato READ ONLYTransitioning a database or filegroup into a READ ONLY state

    Le operazioni indicate di seguito non sono consentite durante l'esecuzione delle istruzioni CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY e ALTER DATABASE...SET ENCRYPTION.The following operations are not allowed during the CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, or ALTER DATABASE...SET ENCRYPTION statements.

  • Eliminazione di un file da un filegroup del database.Dropping a file from a filegroup in the database.

  • Eliminazione del database.Dropping the database.

  • Attivazione della modalità offline per il database.Taking the database offline.

  • Scollegamento di un database.Detaching a database.

  • Transizione di un database o filegroup in un stato READ ONLY.Transitioning a database or filegroup into a READ ONLY state.

  • Uso di un comando ALTER DATABASE.Using an ALTER DATABASE command.

  • Avvio del backup di un database o di un file di database.Starting a database or database file backup.

  • Avvio del ripristino di un database o di un file di database.Starting a database or database file restore.

  • Creazione di uno snapshotCreating a snapshot.

    Le operazioni o condizioni indicate di seguito impediscono l'esecuzione delle istruzioni CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY e ALTER DATABASE...SET ENCRYPTION.The following operations or conditions will prevent the CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, or ALTER DATABASE...SET ENCRYPTION statements.

  • Il database è di sola lettura o ha gruppi di file di sola lettura.The database is read-only or has any read-only file groups.

  • È in corso l'esecuzione di un comando ALTER DATABASE.An ALTER DATABASE command is executing.

  • Un backup dei dati è in corso di esecuzione.Any data backup is running.

  • Il database è offline o è in corso di ripristino.The database is in an offline or restore condition.

  • Uno snapshot è in corso.A snapshot is in progress.

  • Attività di manutenzione del database.Database maintenance tasks.

    Durante la creazione dei file di database, l'inizializzazione immediata dei file non è disponibile se è abilitata la crittografia TDE.When creating database files, instant file initialization is not available when TDE is enabled.

    Per crittografare la chiave di crittografia del database con una chiave asimmetrica, è necessario che quest'ultima risieda in un provider EKM (Extensible Key Management).In order to encrypt the database encryption key with an asymmetric key, the asymmetric key must reside on an extensible key management provider.

Crittografia trasparente dei dati e log delle transazioniTransparent Data Encryption and Transaction Logs

Se si abilita TDE per un database, la parte rimanente del log delle transazioni virtuale viene "azzerata" in modo da forzare l'uso del log delle transazioni virtuale successivo.Enabling a database to use TDE has the effect of "zeroing out" the remaining part of the virtual transaction log to force the next virtual transaction log. Ciò garantisce che non rimanga alcun testo non crittografato nei log delle transazioni dopo che il database viene impostato per la crittografia.This guarantees that no clear text is left in the transaction logs after the database is set for encryption. È possibile determinare lo stato di crittografia dei file di log visualizzando la colonna encryption_state nella vista sys.dm_database_encryption_keys, come illustrato nell'esempio seguente:You can find the status of the log file encryption by viewing the encryption_state column in the sys.dm_database_encryption_keys view, as in this example:

USE AdventureWorks2012;  
GO  
/* The value 3 represents an encrypted state   
   on the database and transaction logs. */  
SELECT *  
FROM sys.dm_database_encryption_keys  
WHERE encryption_state = 3;  
GO  

Per altre informazioni sull'architettura del file di log di SQL ServerSQL Server, vedere Log delle transazioni (SQL Server).For more information about the SQL ServerSQL Server log file architecture, see The Transaction Log (SQL Server).

Tutti i dati scritti nel log delle transazioni prima di una modifica della chiave di crittografia del database saranno crittografati usando la chiave di crittografia del database precedente.All data written to the transaction log before a change in the database encryption key will be encrypted by using the previous database encryption key.

Dopo che una chiave di crittografia del database è stata modificata due volte, è necessario eseguire un backup del log prima che sia possibile modificare nuovamente la chiave di crittografia del database.After a database encryption key has been modified twice, a log backup must be performed before the database encryption key can be modified again.

Transparent Data Encryption e database di sistema tempdbTransparent Data Encryption and the tempdb System Database

Il database di sistema tempdb verrà crittografato se altri database nell'istanza di SQL ServerSQL Server vengono crittografati tramite Transparent Data Encryption.The tempdb system database will be encrypted if any other database on the instance of SQL ServerSQL Server is encrypted by using TDE. Ciò potrebbe influire sulla prestazione dei database non crittografati presenti nella stessa istanza di SQL ServerSQL Server.This might have a performance effect for unencrypted databases on the same instance of SQL ServerSQL Server. Per altre informazioni sul database di sistema tempdb, vedere Database tempdb.For more information about the tempdb system database, see tempdb Database.

Transparent Data Encryption e replicaTransparent Data Encryption and Replication

La replica non consente di replicare automaticamente dati da un database abilitato per TDE in un formato crittografato.Replication does not automatically replicate data from a TDE-enabled database in an encrypted form. Per proteggere i database di distribuzione e del Sottoscrittore, è necessario abilitare separatamente TDE.You must separately enable TDE if you want to protect the distribution and subscriber databases. La replica snapshot, nonché la distribuzione iniziale dei dati per la replica transazionale e di tipo merge, può archiviare dati in file intermedi non crittografati, ad esempio i file con estensione bcp.Snapshot replication, as well as the initial distribution of data for transactional and merge replication, can store data in unencrypted intermediate files; for example, the bcp files. Durante la replica transazionale o di tipo merge è possibile abilitare la crittografia per proteggere il canale di comunicazione.During transactional or merge replication, encryption can be enabled to protect the communication channel. Per altre informazioni, vedere Abilitare le connessioni crittografate al motore di database (Gestione configurazione SQL Server).For more information, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

Transparent Data Encryption e dati FILESTREAMTransparent Data Encryption and FILESTREAM DATA

Anche se si abilita TDE, i dati FILESTREAM non vengono crittografati.FILESTREAM data is not encrypted even when TDE is enabled.

Transparent Data Encryption ed estensione del pool di bufferTransparent Data Encryption and Buffer Pool Extension

I file correlati all'estensione del pool di buffer non vengono crittografati quando il database viene crittografato con TDE.Files related to buffer pool extension (BPE) are not encrypted when database is encrypted using TDE. Per tali file è necessario usare strumenti di crittografia a livello di file system, come Bitlocker o EFS.You must use file system level encryption tools like Bitlocker or EFS for BPE related files.

Transparent Data Encryption e OLTP in memoriaTransparent Data Encryption and In-Memory OLTP

È possibile abilitare TDE in un database contenente oggetti di OLTP in memoria.TDE can be enabled on a database that has In-Memory OLTP objects. In SQL Server 2016SQL Server 2016 e Database SQL di AzureAzure SQL Database , se la funzionalità TDE è abilitata, i dati e i record del log di OLTP in memoria vengono crittografati.In SQL Server 2016SQL Server 2016 and Database SQL di AzureAzure SQL Database In-Memory OLTP log records and data are encrypted if TDE is enabled. In SQL Server 2014SQL Server 2014 i record di log OLTP in memoria vengono crittografati se è abilitata la crittografia TDE, ma non vengono crittografati i file del filegroup MEMORY_OPTIMIZED_DATA.In SQL Server 2014SQL Server 2014 In-Memory OLTP log records are encrypted if TDE is enabled, but files in the MEMORY_OPTIMIZED_DATA filegroup are not encrypted.

Spostare un database protetto da TDE in un'altra istanza di SQL ServerMove a TDE Protected Database to Another SQL Server
Abilitare TDE in SQL Server con EKMEnable TDE on SQL Server Using EKM
Extensible Key Management tramite l'insieme di credenziali delle chiavi di Azure (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)

Transparent Data Encryption con il database SQL di AzureTransparent Data Encryption with Azure SQL Database
Introduzione a Transparent Data Encryption (TDE) in SQL Data WarehouseGet started with Transparent Data Encryption (TDE) on SQL Data Warehouse
Crittografia di SQL ServerSQL Server Encryption
Chiavi di crittografia del database e di SQL Server (Motore di database)SQL Server and Database Encryption Keys (Database Engine)

Vedere ancheSee Also

Centro di sicurezza per il motore di database di SQL Server e il database SQL di Azure Security Center for SQL Server Database Engine and Azure SQL Database
FILESTREAM (SQL Server)FILESTREAM (SQL Server)