Extensible Key Management (EKM)

Si applica a:SQL Server

SQL Server fornisce funzionalità di crittografia dei dati insieme a Extensible Key Management (EKM) con l'uso del provider di API di crittografia Microsoft (MSCAPI) per la crittografia e la generazione di chiavi. 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. 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 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". Questo approccio risulta spesso poco pratico se si utilizzano solo gli strumenti di gestione della crittografia dei database. I produttori di hardware forniscono prodotti che consentono la gestione aziendale delle chiavi usando i Moduli di sicurezza hardware (HSM, Hardware Security Modules). I dispositivi HSM consentono di archiviare le chiavi di crittografia su moduli hardware o software. Questa soluzione è più sicura poiché le chiavi di crittografia non risiedono insieme ai dati di crittografia.

Alcuni fornitori offrono tali dispositivi sia per la gestione delle chiavi sia per l'accelerazione della crittografia. I dispositivi HSM utilizzano interfacce hardware con un processo server come intermediario tra un'applicazione e un dispositivo HSM. I fornitori implementano anche i provider MSCAPI sui moduli, che possono essere hardware o software. Spesso MSCAPI offre solo un subset delle funzionalità offerte dai dispositivi HSM. I fornitori possono anche offrire software di gestione per dispositivi HSM, configurazione delle chiavi e accesso alle chiavi.

Le implementazioni del modulo di protezione hardware variano da fornitore a fornitore e il loro uso con SQL Server richiede un'interfaccia comune. Anche se questa interfaccia è fornita da MSCAPI, supporta solo un subset delle funzionalità HSM. 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.

Extensible Key Management di SQL Server consente ai fornitori di EKM/HSM di terze parti di registrare i propri moduli in SQL Server. Quando registrati, gli utenti di SQL Server possono usare le chiavi di crittografia archiviate nei moduli EKM. Ciò consente a SQL Server di accedere alle funzionalità di crittografia avanzate supportate da tali moduli, quali la crittografia e decrittazione di massa e le funzioni di gestione delle chiavi quali il periodo di permanenza e la rotazione delle chiavi.

Quando si esegue SQL Server in una VM di Azure, SQL Server può usare le chiavi archiviate in Azure Key Vault. Per altre informazioni, vedere Extensible Key Management tramite Azure Key Vault (SQL Server).

Configurazione EKM

Extensible Key Management non è disponibile in tutte le edizioni di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2016.

Per impostazione predefinita, Extensible Key Management è disattivato. Per attivare questa caratteristica, utilizzare il comando sp_configure con l'opzione e il valore indicati di seguito, come nell'esempio seguente:

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 Server che non supportano EKM, verrà restituito un errore.

Per disabilitare la funzionalità, impostare il valore su 0. Per ulteriori informazioni sull'impostazione delle opzioni del server, vedere sp_configure (Transact-SQL).

Utilizzo di EKM

Extensible Key Management di SQL Server consente di archiviare le chiavi di crittografia che proteggono i file di database in un dispositivo off-box, ad esempio una smart card, un dispositivo USB o un modulo EKM/HSM. Consente anche la protezione dei dati da parte degli amministratori del database (tranne i membri del gruppo sysadmin). I dati possono essere crittografati utilizzando le chiavi di crittografia a cui hanno accesso solo gli utenti del database nel modulo esterno EKM/HSM.

Extensible Key Management fornisce anche i seguenti vantaggi:

  • Controllo delle autorizzazioni aggiuntivo (abilitazione della separazione dei compiti).

  • Prestazioni più elevate per crittografia/decrittografia basata su hardware.

  • Generazione della chiave di crittografia esterna.

  • Archiviazione della chiave di crittografia esterna (separazione fisica di dati e chiavi).

  • Recupero della chiave di crittografia.

  • Memorizzazione della chiave di crittografia esterna (consente di abilitare la rotazione della chiave di crittografia).

  • Recupero della chiave di crittografia più facile.

  • Distribuzione della chiave di crittografia più facile da gestire.

  • Eliminazione sicura della chiave di crittografia.

È possibile usare Extensible Key Management per una combinazione di nome utente e password o altri metodi definiti dal driver EKM.

Attenzione

Per la risoluzione di problemi, il supporto tecnico di Microsoft potrebbe richiedere la chiave di crittografia al provider di EKM. Potrebbe anche essere necessario accedere a strumenti o processi del fornitore per risolvere un problema.

Autenticazione con un dispositivo EKM

Un modulo EKM può supportare più di un tipo di autenticazione. Ciascun provider espone solo un tipo di autenticazione a SQL 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.

Autenticazione di base specifica del dispositivo EKM utilizzando nome utente/password

Per i moduli EKM che supportano l'autenticazione di base usando una coppia nome utente/password, SQL Server fornisce l'autenticazione trasparente usando le credenziali. Per ulteriori informazioni sulle credenziali, vedere Credenziali (Motore di database).

Una credenziale può essere creata per un provider EKM e sottoposta al mapping di un accesso (sia account Windows che account SQL Server) per accedere a un modulo EKM in base agli accessi. Il campo identity della credenziale contiene il nome utente, il campo secret contiene una password per la connessione a un modulo EKM.

Se non sono presenti credenziali di cui viene eseguito il mapping a un account accesso per il provider EKM, vengono usate le credenziali di cui viene eseguito il mapping all'account del servizio SQL Server.

Un accesso può disporre di più credenziali di cui è stato eseguito il mapping all'accesso stesso, se vengono utilizzate per provider EKM distinti. È possibile eseguire il mapping di una sola credenziale per provider EKM per accesso. Sulla stessa credenziale è possibile eseguire il mapping ad altri account di accesso.

Altri tipi di autenticazione specifica del dispositivo EKM

Per i moduli EKM con autenticazione diversa da Windows o combinazioni nome utente/password, l'autenticazione deve essere eseguita indipendentemente da SQL Server.

Crittografia e decrittografia da un dispositivo EKM

È possibile utilizzare le seguenti funzioni e funzionalità per crittografare e decrittografare i dati utilizzando chiavi simmetriche e asimmetriche:

Funzione o funzionalità Riferimento
Crittografia con chiave simmetrica CREATE SYMMETRIC KEY (Transact-SQL)
Crittografia con chiave asimmetrica CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', ...) ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, ...) DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY (Transact-SQL)

Crittografia di chiavi del database tramite chiavi EKM

SQL Server può usare le chiavi EKM per crittografare altre chiavi in un database. In un dispositivo EKM è possibile creare e utilizzare sia chiavi simmetriche che asimmetriche. È possibile crittografare chiavi simmetriche native (non EKM) con chiavi asimmetriche EKM.

Nel seguente esempio viene creata una chiave simmetrica del database e viene crittografata utilizzando una chiave in un modulo EKM.

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 ulteriori informazioni sulle chiavi del server e del database in SQL Server, vedere Chiavi di crittografia del database e di SQL Server (Motore di database).

Nota

Non è possibile crittografare una chiave EKM con un'altra chiave EKM.

SQL Server non supporta la firma di moduli con chiavi asimmetriche generate dal provider EKM.

Opzione di configurazione del server EKM provider enabled

Abilitare TDE in SQL Server con EKM

Extensible Key Management con Azure Key Vault (SQL Server)

Vedi anche

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
sys.cryptographic_providers (Transact-SQL)
sys.dm_cryptographic_provider_sessions (Transact-SQL)
sys.dm_cryptographic_provider_properties (Transact-SQL)
sys.dm_cryptographic_provider_algorithms (Transact-SQL)
sys.dm_cryptographic_provider_keys (Transact-SQL)
sys.credentials (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL)
ALTER LOGIN (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY (Transact-SQL)
Eseguire il backup e il ripristino delle chiavi di crittografia di Reporting Services
Eliminare e ricreare chiavi di crittografia (Gestione configurazione SSRS)
Aggiungere e rimuovere le chiavi di crittografia per una distribuzione scale-out (Gestione configurazione SSRS)
Backup della chiave master del servizio
Ripristino della chiave master del servizio
Creazione della chiave master di un database
Backup della chiave master di un database
Ripristino di una chiave master del database
Creare chiavi simmetriche identiche su due server