Extensible Key Management (EKM)Extensible Key Management (EKM)

SQL ServerSQL Server fornisce funzionalità di crittografia dei dati insieme a Extensible Key Management (EKM), l'uso del provider di API di crittografia Microsoft (MSCAPI) per la crittografia e la generazione di chiavi. provides data encryption capabilities together with Extensible Key Management (EKM), using the Microsoft Cryptographic API (MSCAPI) provider for encryption and key generation. Le chiavi di crittografia per dati e la crittografia delle chiavi vengono create nei contenitori di chiave temporanei e devono essere esportate da un provider prima di essere archiviate nel database.Encryption keys for data and key encryption are created in transient key containers, and they must be exported from a provider before they are stored in the database. Questo approccio consente la gestione delle chiavi che include una gerarchia delle chiavi di crittografia e un backup delle chiavi, che devono essere gestiti da SQL ServerSQL Server.This approach enables key management that includes an encryption key hierarchy and key backup, to be handled by SQL ServerSQL Server.

Con la crescente richiesta di conformità con le normative e il problema della privacy dei dati, le organizzazioni sfruttano la crittografia come modalità per fornire una soluzione di "difesa approfondita".With the growing demand for regulatory compliance and concern for data privacy, organizations are taking advantage of encryption as a way to provide a "defense in depth" solution. Questo approccio risulta spesso poco pratico se si utilizzano solo gli strumenti di gestione della crittografia dei database.This approach is often impractical using only database encryption management tools. I produttori di hardware forniscono prodotti che consentono la gestione aziendale delle chiavi usando i Moduli di sicurezza hardware (HSM, Hardware Security Modules).Hardware vendors provide products that address enterprise key management by using Hardware Security Modules (HSM). I dispositivi HSM consentono di archiviare le chiavi di crittografia su moduli hardware o software.HSM devices store encryption keys on hardware or software modules. Questa soluzione è più sicura poiché le chiavi di crittografia non risiedono insieme ai dati di crittografia.This is a more secure solution because the encryption keys do not reside with encryption data.

Alcuni fornitori offrono tali dispositivi sia per la gestione delle chiavi sia per l'accelerazione della crittografia.A number of vendors offer HSM for both key management and encryption acceleration. I dispositivi HSM utilizzano interfacce hardware con un processo server come intermediario tra un'applicazione e un dispositivo HSM.HSM devices use hardware interfaces with a server process as an intermediary between an application and an HSM. I fornitori implementano anche i provider MSCAPI sui moduli, che possono essere hardware o software.Vendors also implement MSCAPI providers over their modules, which might be hardware or software. Spesso MSCAPI offre solo un subset delle funzionalità offerte dai dispositivi HSM.MSCAPI often offers only a subset of the functionality that is offered by an HSM. I fornitori possono anche offrire software di gestione per dispositivi HSM, configurazione delle chiavi e accesso alle chiavi.Vendors can also provide management software for HSM, key configuration, and key access.

Le implementazioni HSM variano da fornitore a fornitore e il loro uso con SQL ServerSQL Server richiede un'interfaccia comune.HSM implementations vary from vendor to vendor, and to use them with SQL ServerSQL Server requires a common interface. Anche se questa interfaccia è fornita da MSCAPI, supporta solo un subset delle funzionalità HSM.Although the MSCAPI provides this interface, it supports only a subset of the HSM features. Sono presenti inoltre altre limitazioni, ad esempio l'impossibilità di mantenere a livello nativo le chiavi simmetriche e la mancanza di supporto orientato alla sessione.It also has other limitations, such as the inability to natively persist symmetric keys, and a lack of session-oriented support.

SQL ServerSQL Server Extensible Key Management consente ai fornitori di EKM/HSM di terze parti di registrare i propri moduli in SQL ServerSQL Server.The SQL ServerSQL Server Extensible Key Management enables third-party EKM/HSM vendors to register their modules in SQL ServerSQL Server. Quando registrati, gli utenti di SQL ServerSQL Server possono usare le chiavi di crittografia archiviate nei moduli EKM.When registered, SQL ServerSQL Server users can use the encryption keys stored on EKM modules. Ciò consente a SQL ServerSQL Server di accedere alle funzionalità di crittografia avanzate supportate da tali moduli, quali la crittografia e decrittografia bulk e le funzioni di gestione delle chiavi quali il periodo di permanenza e la rotazione delle chiavi.This enables SQL ServerSQL Server to access the advanced encryption features these modules support such as bulk encryption and decryption, and key management functions such as key aging and key rotation.

Quando si esegue SQL ServerSQL Server in una macchina virtuale di Azure, SQL ServerSQL Server può usare le chiavi archiviate nell' insieme di credenziali chiave di Azure.When running SQL ServerSQL Server in an Azure VM, SQL ServerSQL Server can use keys stored in the Azure Key Vault. Per altre informazioni, vedere Extensible Key Management con l'insieme di credenziali delle chiavi di Azure (SQL Server).For more information, see Extensible Key Management Using Azure Key Vault (SQL Server).

Configurazione EKMEKM Configuration

Extensible Key Management non è disponibile in tutte le edizioni di MicrosoftMicrosoft SQL ServerSQL Server.Extensible Key Management is not available in every edition of MicrosoftMicrosoft SQL ServerSQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL ServerSQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

Per impostazione predefinita, Extensible Key Management è disattivato.By default, Extensible Key Management is off. Per attivare questa caratteristica, utilizzare il comando sp_configure con l'opzione e il valore indicati di seguito, come nell'esempio seguente:To enable this feature, use the sp_configure command that has the following option and value, as in the following example:

sp_configure 'show advanced', 1  
GO  
RECONFIGURE  
GO  
sp_configure 'EKM provider enabled', 1  
GO  
RECONFIGURE  
GO  

Nota

Se si usa il comando sp_configure per questa opzione su edizioni di SQL ServerSQL Server che non supportano EKM, verrà restituito un errore.If you use the sp_configure command for this option on editions of SQL ServerSQL Server that do not support EKM, you will receive an error.

Per disabilitare la funzionalità, impostare il valore su 0.To disable the feature, set the value to 0. Per altre informazioni sull'impostazione delle opzioni del server, vedere sp_configure (Transact-SQL).For more information about how to set server options, see sp_configure (Transact-SQL).

Utilizzo di EKMHow to Use EKM

SQL ServerSQL Server Extensible Key Management consente di abilitare le chiavi di crittografia che proteggono i file del database da archiviare in un dispositivo esterno come una smartcard, un dispositivo USB o un modulo EKM/HSM. Extensible Key Management enables the encryption keys that protect the database files to be stored in an off-box device such as a smartcard, USB device, or EKM/HSM module. Consente anche la protezione dei dati da parte degli amministratori del database (tranne i membri del gruppo sysadmin).This also enables data protection from database administrators (except members of the sysadmin group). I dati possono essere crittografati utilizzando le chiavi di crittografia a cui hanno accesso solo gli utenti del database nel modulo esterno EKM/HSM.Data can be encrypted by using encryption keys that only the database user has access to on the external EKM/HSM module.

Extensible Key Management fornisce anche i seguenti vantaggi:Extensible Key Management also provides the following benefits:

  • Controllo delle autorizzazioni aggiuntivo (abilitazione della separazione dei compiti).Additional authorization check (enabling separation of duties).

  • Prestazioni più elevate per crittografia/decrittografia basata su hardware.Higher performance for hardware-based encryption/decryption.

  • Generazione della chiave di crittografia esterna.External encryption key generation.

  • Archiviazione della chiave di crittografia esterna (separazione fisica di dati e chiavi).External encryption key storage (physical separation of data and keys).

  • Recupero della chiave di crittografia.Encryption key retrieval.

  • Memorizzazione della chiave di crittografia esterna (consente di abilitare la rotazione della chiave di crittografia).External encryption key retention (enables encryption key rotation).

  • Recupero della chiave di crittografia più facile.Easier encryption key recovery.

  • Distribuzione della chiave di crittografia più facile da gestire.Manageable encryption key distribution.

  • Eliminazione sicura della chiave di crittografia.Secure encryption key disposal.

    È possibile usare Extensible Key Management per una combinazione di nome utente e password o altri metodi definiti dal driver EKM.You can use Extensible Key Management for a username and password combination or other methods defined by the EKM driver.

Attenzione

Per la risoluzione di problemi, il supporto tecnico di MicrosoftMicrosoft potrebbe richiedere la chiave di crittografia al provider di EKM.For troubleshooting, MicrosoftMicrosoft technical support might require the encryption key from the EKM provider. Potrebbe anche essere necessario accedere a strumenti o processi del fornitore per risolvere un problema.You might also need to access vendor tools or processes to help resolve an issue.

Autenticazione con un dispositivo EKMAuthentication with an EKM Device

Un modulo EKM può supportare più di un tipo di autenticazione.An EKM module can support more than one type of authentication. Ciascun provider espone solo un tipo di autenticazione a SQL ServerSQL Server, ovvero se il modulo supporta i tipi di autenticazione di base o di altro tipo esporrà l'uno o l'altro, ma non entrambi.Each provider exposes only one type of authentication to SQL ServerSQL Server, that is if the module supports Basic or Other authentication types, it exposes one or the other, but not both.

Autenticazione di base specifica del dispositivo EKM utilizzando nome utente/passwordEKM Device-Specific Basic Authentication Using username/password

Per i moduli EKM che supportano l'autenticazione di base usando una coppia nome utente/password, SQL ServerSQL Server fornisce l'autenticazione trasparente usando le credenziali.For those EKM modules that support Basic authentication using a username/password pair, SQL ServerSQL Server provides transparent authentication using credentials. Per altre informazioni sulle credenziali, vedere Credenziali (Motore di database).For more information about credentials, see Credentials (Database Engine).

Una credenziale può essere creata per un provider EKM e sottoposta al mapping a un accesso (sia account Windows che account SQL ServerSQL Server) per accedere a un modulo EKM in base agli accessi.A credential can be created for an EKM provider and mapped to a login (both Windows and SQL ServerSQL Server accounts) to access an EKM module on per-login basis. Il campo Identify della credenziale contiene il nome utente, il campo secret contiene una password per la connessione a un modulo EKM.The Identify field of the credential contains the username; the secret field contains a password to connect to an EKM module.

Se non è presente una credenziale su cui eseguire il mapping a un accesso per il provider EKM, viene usata la credenziale su cui è stato eseguito il mapping all'account di servizio SQL ServerSQL Server .If there is no login mapped credential for the EKM provider, the credential mapped to the SQL ServerSQL Server service account is used.

Un accesso può disporre di più credenziali di cui è stato eseguito il mapping all'accesso stesso, se vengono utilizzate per provider EKM distinti.A login can have multiple credentials mapped to it, as long as they are used for distinctive EKM providers. È possibile eseguire il mapping di una sola credenziale per provider EKM per accesso.There must be only one mapped credential per EKM provider per login. Sulla stessa credenziale è possibile eseguire il mapping ad altri account di accesso.The same credential can be mapped to other logins.

Altri tipi di autenticazione specifica del dispositivo EKMOther Types of EKM Device-Specific Authentication

Per i moduli EKM con autenticazione diversa da Windows o combinazioni nome utente/password , l'autenticazione deve essere eseguita indipendentemente da SQL ServerSQL Server.For EKM modules that have authentication other than Windows or user/password combinations, authentication must be performed independently from SQL ServerSQL Server.

Crittografia e decrittografia da un dispositivo EKMEncryption and Decryption by an EKM Device

È possibile utilizzare le seguenti funzioni e funzionalità per crittografare e decrittografare i dati utilizzando chiavi simmetriche e asimmetriche:You can use the following functions and features to encrypt and decrypt data by using symmetric and asymmetric keys:

Funzione o funzionalitàFunction or feature RiferimentoReference
Crittografia con chiave simmetricaSymmetric key encryption CREATE SYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)
Crittografia con chiave asimmetricaAsymmetric Key encryption CREATE ASYMMETRIC KEY (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', …)EncryptByKey(key_guid, 'cleartext', …) ENCRYPTBYKEY (Transact-SQL)ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, …)DecryptByKey(ciphertext, …) DECRYPTBYKEY (Transact-SQL)DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext')EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY (Transact-SQL)ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext)DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY (Transact-SQL)DECRYPTBYASYMKEY (Transact-SQL)

Crittografia di chiavi del database tramite chiavi EKMDatabase Keys Encryption by EKM Keys

SQL ServerSQL Server può usare le chiavi EKM per crittografare altre chiavi in un database. can use EKM keys to encrypt other keys in a database. In un dispositivo EKM è possibile creare e utilizzare sia chiavi simmetriche che asimmetriche.You can create and use both symmetric and asymmetric keys on an EKM device. È possibile crittografare chiavi simmetriche native (non EKM) con chiavi asimmetriche EKM.You can encrypt native (non-EKM) symmetric keys with EKM asymmetric keys.

Nel seguente esempio viene creata una chiave simmetrica del database e viene crittografata utilizzando una chiave in un modulo EKM.The following example creates a database symmetric key and encrypts it using a key on an EKM module.

CREATE SYMMETRIC KEY Key1  
WITH ALGORITHM = AES_256  
ENCRYPTION BY EKM_AKey1;  
GO  
--Open database key  
OPEN SYMMETRIC KEY Key1  
DECRYPTION BY EKM_AKey1  

Per altre informazioni sulle chiavi del server e del database in SQL ServerSQL Server, vedere Chiavi di crittografia del database e di SQL Server (Motore di database).For more information about Database and Server Keys in SQL ServerSQL Server, see SQL Server and Database Encryption Keys (Database Engine).

Nota

Non è possibile crittografare una chiave EKM con un'altra chiave EKM.You cannot encrypt one EKM key with another EKM key.

SQL ServerSQL Server non supporta la firma di moduli con chiavi asimmetriche generate dal provider EKM. does not support signing modules with asymmetric keys generated from EKM provider.

Opzione di configurazione del server EKM provider enabledEKM provider enabled Server Configuration Option

Abilitare TDE in SQL Server con EKMEnable TDE on SQL Server Using EKM

Extensible Key Management con l'insieme di credenziali delle chiavi di Azure (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)

Vedere ancheSee Also

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL) CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL) DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL) ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
sys.cryptographic_providers (Transact-SQL) sys.cryptographic_providers (Transact-SQL)
sys.dm_cryptographic_provider_sessions (Transact-SQL) sys.dm_cryptographic_provider_sessions (Transact-SQL)
sys.dm_cryptographic_provider_properties (Transact-SQL) sys.dm_cryptographic_provider_properties (Transact-SQL)
sys.dm_cryptographic_provider_algorithms (Transact-SQL) sys.dm_cryptographic_provider_algorithms (Transact-SQL)
sys.dm_cryptographic_provider_keys (Transact-SQL) sys.dm_cryptographic_provider_keys (Transact-SQL)
sys.credentials (Transact-SQL) sys.credentials (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL) CREATE CREDENTIAL (Transact-SQL)
ALTER LOGIN (Transact-SQL) ALTER LOGIN (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL) CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL) ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL) DROP ASYMMETRIC KEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL) CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL) ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL) DROP SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY (Transact-SQL) OPEN SYMMETRIC KEY (Transact-SQL)
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)
Backup della chiave master del servizio Back Up the Service Master Key
Ripristino della chiave master del servizio Restore the Service Master Key
Creazione della chiave master di un database Create a Database Master Key
Backup della chiave master di un database Back Up a Database Master Key
Ripristino di una chiave master del database Restore a Database Master Key
Creare chiavi simmetriche identiche su due serverCreate Identical Symmetric Keys on Two Servers