Chiavi di crittografia del database e di SQL Server (Motore di database)SQL Server and Database Encryption Keys (Database Engine)

SQL ServerSQL Server usa le chiavi di crittografia per la protezione di dati, credenziali e informazioni di connessione archiviate in un database del server. uses encryption keys to help secure data, credentials, and connection information that is stored in a server database. SQL ServerSQL Server dispone di due tipi di chiavi: simmetrica e asimmetrica. has two kinds of keys: symmetric and asymmetric. Le chiavi simmetriche utilizzano la stessa password per crittografare e decrittografare i dati.Symmetric keys use the same password to encrypt and decrypt data. Le chiavi asimmetriche usano una password per crittografare i dati (chiave pubblica ) e un'altra per decrittografare i dati (chiave privata ).Asymmetric keys use one password to encrypt data (called the public key) and another to decrypt data (called the private key).

In SQL ServerSQL Server, le chiavi di crittografia sono costituite da una combinazione di chiavi pubbliche, private e simmetriche utilizzate per proteggere dati riservati.In SQL ServerSQL Server, encryption keys include a combination of public, private, and symmetric keys that are used to protect sensitive data. La chiave simmetrica viene creata durante l'inizializzazione SQL ServerSQL Server quando si avvia per la prima volta l'istanza SQL ServerSQL Server .The symmetric key is created during SQL ServerSQL Server initialization when you first start the SQL ServerSQL Server instance. La chiave è utilizzata da SQL ServerSQL Server per crittografare dati riservati archiviati in SQL ServerSQL Server.The key is used by SQL ServerSQL Server to encrypt sensitive data that is stored in SQL ServerSQL Server. Le chiavi pubblica e privata vengono create dal sistema operativo e sono utilizzate per proteggere la chiave simmetrica.Public and private keys are created by the operating system and they are used to protect the symmetric key. Per ogni istanza SQL ServerSQL Server che contiene dati riservati in un database viene creata una coppia di chiavi pubblica e privata.A public and private key pair is created for each SQL ServerSQL Server instance that stores sensitive data in a database.

Applicazioni per chiavi del SQL Server e del databaseApplications for SQL Server and Database Keys

SQL ServerSQL Server contiene due applicazioni principali per le chiavi: una chiave master del servizio (SMK) generata per un'istanza di SQL ServerSQL Server e una chiave master del database (DMK) usata per un database. has two primary applications for keys: a service master key (SMK) generated on and for a SQL ServerSQL Server instance, and a database master key (DMK) used for a database.

La SMK viene generata automaticamente la prima volta che viene avviata e usata l'istanza SQL ServerSQL Server per crittografare la password, le credenziali o la chiave master del database di un server collegato.The SMK is automatically generated the first time the SQL ServerSQL Server instance is started and is used to encrypt a linked server password, credentials, and the database master key. La SMK viene crittografata usando la chiave locale del computer che utilizza l'API Windows Data Protection (DPAPI).The SMK is encrypted by using the local computer key using the Windows Data Protection API (DPAPI). Il DPAPI usa una chiave derivata dalle credenziali Windows dell'account di servizio SQL ServerSQL Server e le credenziali del computer.The DPAPI uses a key that is derived from the Windows credentials of the SQL ServerSQL Server service account and the computer's credentials. La chiave master del servizio può essere decrittografata solo dall'account del servizio con cui è stata creata o da un'entità autorizzata ad accedere alle credenziali della macchina.The service master key can only be decrypted by the service account under which it was created or by a principal that has access to the machine's credentials.

La chiave master del database è una chiave simmetrica utilizzata per proteggere le chiavi private dei certificati e le chiavi asimmetriche presenti nel database.The database master key is a symmetric key that is used to protect the private keys of certificates and asymmetric keys that are present in the database. Si può utilizzare anche per crittografare dati, ma ha limitazioni di lunghezza che la rendono meno pratica per i dati rispetto all'utilizzo di una chiave simmetrica.It can also be used to encrypt data, but it has length limitations that make it less practical for data than using a symmetric key.

Al momento della creazione, la chiave master viene crittografata con l'algoritmo Triple DES e una password specificata dall'utente.When it is created, the master key is encrypted by using the Triple DES algorithm and a user-supplied password. Per attivare la decrittografia automatica della chiave master, viene crittografata una copia della chiave utilizzando la SMK.To enable the automatic decryption of the master key, a copy of the key is encrypted by using the SMK. Viene archiviata in entrambi i database dove è usata e nel database master di sistema.It is stored in both the database where it is used and in the master system database.

La copia della DMK archiviata nel database master di sistema viene aggiornata automaticamente ogni qualvolta la DMK è modificata.The copy of the DMK stored in the master system database is silently updated whenever the DMK is changed. È possibile modificare questa impostazione predefinita usando l'opzione DROP ENCRYPTION BY SERVICE MASTER KEY dell'istruzione ALTER MASTER KEY .However, this default can be changed by using the DROP ENCRYPTION BY SERVICE MASTER KEY option of the ALTER MASTER KEY statement. Per aprire una chiave master non crittografata con la chiave master del servizio, è necessario usare l'istruzione OPEN MASTER KEY e una password.A DMK that is not encrypted by the service master key must be opened by using the OPEN MASTER KEY statement and a password.

Gestione delle chiavi del SQL Server e del databaseManaging SQL Server and Database Keys

La gestione delle chiavi di crittografia comprende la creazione di nuove chiavi di database, la creazione di un backup delle chiavi server e del database e informazioni su quando e come ripristinare, eliminare o modificare le chiavi.Managing encryption keys consists of creating new database keys, creating a backup of the server and database keys, and knowing when and how to restore, delete, or change the keys.

Per la gestione delle chiavi simmetriche è possibile utilizzare gli strumenti inclusi in SQL ServerSQL Server per eseguire le operazioni seguenti:To manage symmetric keys, you can use the tools included in SQL ServerSQL Server to do the following:

  • Backup di una copia delle chiavi del server e del database per poterle utilizzare per il recupero dell'installazione di un server di report o come parte di una migrazione pianificata.Back up a copy of the server and database keys so that you can use them to recover a server installation, or as part of a planned migration.

  • Ripristino di una chiave precedentemente salvata in un database.Restore a previously saved key to a database. Consente a una nuova istanza del server l'accesso a dati esistenti che non erano stati crittografati in origine.This enables a new server instance to access existing data that it did not originally encrypt.

  • Eliminazione dei dati crittografati in un database nel caso molto improbabile in cui non sia più possibile accedere a tali dati.Delete the encrypted data in a database in the unlikely event that you can no longer access encrypted data.

  • Ricreazione delle chiavi e riesecuzione della crittografia dei dati nel caso molto improbabile in cui la chiave risulti compromessa.Re-create keys and re-encrypt data in the unlikely event that the key is compromised. Come procedura di sicurezza consigliata, ricreare le chiavi periodicamente, ad esempio dopo qualche mese, per proteggere il server da attacchi informatici mirati alla decrittazione delle chiavi.As a security best practice, you should re-create the keys periodically (for example, every few months) to protect the server from attacks that try to decipher the keys.

  • Aggiunta o rimozione di un'istanza del server da una distribuzione del server con scalabilità orizzontale in cui più server condividono sia un unico database sia la chiave che consente la crittografia reversibile per quel database.Add or remove a server instance from a server scale-out deployment where multiple servers share both a single database and the key that provides reversible encryption for that database.

Importanti informazioni relative alla sicurezzaImportant Security Information

L'accesso a oggetti protetti dalla chiave master del servizio richiede l'account di servizio SQL ServerSQL Server utilizzato per creare la chiave o l'account del computer.Accessing objects secured by the service master key requires either the SQL ServerSQL Server Service account that was used to create the key or the computer (machine) account. In altre parole, il computer è legato al sistema sul quale la chiave è stata creata.That is, the computer is tied to the system where the key was created. È possibile modificare l'account del servizio SQL ServerSQL Server o l'account del computer senza perdere l'accesso alla chiave.You can change the SQL ServerSQL Server Service account or the computer account without losing access to the key. Tuttavia, se si modificano entrambi, si perderà l'accesso alla chiave master del servizio.However, if you change both, you will lose access to the service master key. Se si verifica tale perdita senza disporre di uno di questi due elementi, non sarà possibile decrittografare i dati e gli oggetti crittografati usando la chiave originale.If you lose access to the service master key without one of these two elements, you be unable to decrypt data and objects encrypted by using the original key.

Non è possibile ripristinare connessioni protette con la chiave master del servizio se non si dispone della stessa.Connections secured with the service master key cannot be restored without the service master key.

L'accesso a oggetti e dati protetti con la chiave master del database richiede solo la password utilizzata per proteggere la chiave.Access to objects and data secured with the database master key require only the password that is used to help secure the key.

Attenzione

Se si perde ogni accesso alle chiavi descritte in precedenza, si perderà l'accesso agli oggetti, alle connessioni e ai dati protetti da quelle chiavi.If you lose all access to the keys described earlier, you will lose access to the objects, connections, and data secured by those keys. È possibile ripristinare la chiave master del servizio, come viene descritto nei collegamenti qui riportati, oppure è possibile ritornare al sistema di crittografa originale per recuperare l'accesso.You can restore the service master key, as described in the links that are shown here, or you can go back to the original encrypting system to recover the access. Non è possibile recuperare l'accesso in altro modo.There is no "back-door" to recover the access.

Argomenti della sezioneIn This Section

Service Master KeyService Master Key
Viene fornita una breve spiegazione della chiave master del servizio e delle procedure consigliate.Provides a brief explanation for the service master key and its best practices.

Extensible Key Management (EKM)Extensible Key Management (EKM)
Viene illustrata la modalità di utilizzo dei sistemi di gestione delle chiavi di terze parti con SQL ServerSQL Server.Explains how to use third-party key management systems with SQL ServerSQL Server.

Backup della chiave master del servizioBack Up the Service Master Key

Ripristino della chiave master del servizioRestore the Service Master Key

Creazione della chiave master di un databaseCreate a Database Master Key

Backup della chiave master di un databaseBack Up a Database Master Key

Ripristino di una chiave master del databaseRestore a Database Master Key

Creare chiavi simmetriche identiche su due serverCreate Identical Symmetric Keys on Two Servers

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)

Crittografia di una colonna di datiEncrypt a Column of Data

CREATE MASTER KEY (Transact-SQL)CREATE MASTER KEY (Transact-SQL)

ALTER SERVICE MASTER KEY (Transact-SQL)ALTER SERVICE MASTER KEY (Transact-SQL)

Ripristino di una chiave master del databaseRestore a Database Master Key

Vedere ancheSee Also

Eseguire il backup e il ripristino delle chiavi di crittografia di Reporting Services Back Up and Restore Reporting Services Encryption Keys
Eliminare e ricreare chiavi di crittografia (Gestione configurazione SSRS) Delete and Re-create Encryption Keys (SSRS Configuration Manager)
Aggiungere e rimuovere le chiavi di crittografia per una distribuzione con scalabilità orizzontale (Gestione configurazione SSRS) Add and Remove Encryption Keys for Scale-Out Deployment (SSRS Configuration Manager)
Transparent Data Encryption (TDE)Transparent Data Encryption (TDE)