Gestione delle chiavi estensibile (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 i dati e per la crittografia delle chiavi vengono create in contenitori di chiavi transitorie, e devi esportarle da un fornitore prima di memorizzarle nel database. Questo approccio permette a SQL Server di gestire la gestione delle chiavi, inclusa una gerarchia di chiavi di crittografia e un backup delle chiavi.

Con la crescente domanda di conformità normativa e la preoccupazione per la privacy dei dati, le organizzazioni stanno sfruttando la crittografia come modo per fornire una soluzione di difesa a più livelli. Questo approccio risulta spesso poco pratico se si utilizzano solo gli strumenti di gestione della crittografia dei database. I fornitori di hardware forniscono prodotti che affrontano la gestione delle chiavi aziendali utilizzando moduli di sicurezza hardware (HSM). I dispositivi HSM consentono di archiviare le chiavi di crittografia su moduli hardware o software. Questo approccio è più sicuro perché le chiavi di crittografia non risiedono con i dati criptati.

Diversi fornitori offrono HSM sia per la gestione delle chiavi che 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. MSCAPI spesso offre solo una sottoparte delle funzionalità che offre un HSM. I fornitori possono anche fornire software di gestione per HSM, configurazione delle chiavi e accesso alle chiavi.

Le implementazioni HSM variano da fornitore a fornitore e utilizzarle con SQL Server richiede un'interfaccia comune. Sebbene MSCAPI fornisca questa interfaccia, supporta solo una parte 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.

SQL Server Extensible Key Management permette ai fornitori terzi di EKM e HSM di registrare i loro moduli in SQL Server. Dopo la registrazione di un modulo, gli utenti di SQL Server possono utilizzare le chiavi di crittografia memorizzate su di esso. SQL Server può quindi accedere alle funzionalità avanzate di crittografia supportate da questi moduli, come la crittografia e la decrittografia in massa, e alle funzioni di gestione delle chiavi come l'invecchiamento delle chiavi e la rotazione delle chiavi.

Quando esegui SQL Server in una VM Azure, SQL Server può utilizzare chiavi memorizzate in Azure Key Vault. Per ulteriori informazioni, consulta Gestione estensibile delle chiavi utilizzando Azure Key Vault (SQL Server).

Configurazione EKM

La gestione delle chiavi estesibile non è disponibile in tutte le edizioni di SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedi Edizioni e funzionalità supportate di SQL Server 2025.

Per impostazione predefinita, Extensible Key Management è disattivato. Per abilitare questa funzione, utilizza la stored procedure sp_configure (Transact-SQL) con la seguente opzione e valore:

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

Nota

Se usi sp_configure per questa opzione su edizioni di SQL Server che non supportano EKM, ricevi un errore.

Per disabilitare la funzione, imposta il valore a 0. Per ulteriori informazioni sull'impostazione delle opzioni del server, vedere sp_configure (Transact-SQL).

Come usare l'EKM

SQL Server Extensible Key Management ti permette di memorizzare le chiavi di crittografia che proteggono i file del database in un dispositivo off-box come una smart card, un dispositivo USB o un modulo EKM/HSM. Protegge inoltre i dati dagli amministratori del database, ad eccezione dei membri del ruolo predefinito del server sysadmin. Puoi criptare i dati usando chiavi di crittografia a cui solo l'utente del database può accedere sul modulo EKM/HSM esterno.

Extensible Key Management fornisce anche i seguenti vantaggi:

  • Un controllo di autorizzazione aggiuntivo, che consente la separazione dei compiti.
  • Prestazioni superiori per la crittografia e la decrittazione basate su hardware.
  • Generazione della chiave di crittografia esterna.
  • Archiviazione esterna delle chiavi di crittografia, che separa fisicamente dati e chiavi.
  • Recupero della chiave di crittografia.
  • Ritenzione esterna delle chiavi di crittografia, che consente la rotazione delle chiavi 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. Ogni fornitore rende disponibile a SQL Server un solo tipo di autenticazione. Cioè, se il modulo supporta sia tipi di autenticazione di base che altri tipi di autenticazione, espone uno o l'altro, ma non entrambi.

Autenticazione di base specifica per dispositivo EKM tramite nome utente e password

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

Puoi creare una credenziale per un provider EKM e mapparla a un login, sia un account Windows che un account SQL Server, per accedere a un modulo EKM per ogni login. Il campo identità della credenziale contiene il nome utente, mentre il campo segreto contiene una password per connettersi a un modulo EKM.

Se non esiste alcuna credenziale associata all'accesso mappata per il provider EKM, SQL Server utilizza la credenziale mappata all'account del servizio.

Un login può avere più credenziali assegnate, purché ciascuna venga utilizzata per un fornitore EKM distinto. Deve esserci una sola credenziale associata per ogni provider EKM e per ogni login. Puoi mappare la stessa credenziale ad altri login.

Altri tipi di autenticazione EKM specifica per dispositivo

Per i moduli EKM che utilizzano un'autenticazione diversa da Windows o combinazioni di nome utente e password, è necessario effettuare l'autenticazione in modo indipendente rispetto a SQL Server.

Crittografia e decrittografia tramite un dispositivo EKM

Utilizzare le seguenti funzioni e caratteristiche per criptare e decriptare i dati utilizzando chiavi simmetriche e asimmetriche:

Funzione o funzionalità Riferimento
Crittografia con chiave simmetrica CREATE SYMMETRIC KEY (Transact-SQL)
Crittografia a 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 delle 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.

Il seguente esempio crea una chiave simmetrica del database e la cripta utilizzando una chiave su un modulo EKM.

CREATE SYMMETRIC KEY Key1
WITH ALGORITHM = AES_256
ENCRYPTION BY EKM_AKey1;
GO

-- Open the database key.
OPEN SYMMETRIC KEY Key1
DECRYPTION BY EKM_AKey1;

Per maggiori informazioni sulle chiavi di database e server in SQL Server, vedi SQL Server e chiavi di crittografia del database (motore di database).

Nota

Non puoi criptare una chiave EKM con un'altra chiave EKM.

SQL Server non supporta la firma dei moduli con chiavi asimmetriche generate da un provider EKM.