Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
si applica a:SQL Server
In questo articolo viene installato e configurato SQL Server Connector per Azure Key Vault e quindi viene configurato Transparent Data Encryption (TDE) usando una chiave in Azure Key Vault.
Prerequisiti
Prima di iniziare a usare Azure Key Vault con l'istanza di SQL Server, assicurarsi di soddisfare i prerequisiti seguenti:
È necessario disporre di una sottoscrizione di Azure.
Installare Azure PowerShell versione 5.2.0 o successiva.
Creare un tenant di Microsoft Entra.
Esaminare i principi dell'archiviazione EKM (Extensible Key Management) con Azure Key Vault. Vedere Extensible Key Management Using Azure Key Vault (SQL Server).
È possibile modificare il Registro di sistema nel computer SQL Server.
Installare la versione di Visual Studio C++ Redistributable basata sulla versione di SQL Server in esecuzione:
Versione di SQL Server Versione di Visual Studio C++ Redistributable 2008, 2008 R2, 2012, 2014 Pacchetti Visual C++ Redistributable per Visual Studio 2013 2016, 2017, 2019, 2022, 2025 Visual C++ Redistributable per Visual Studio 2015 Leggere Accedere ad Azure Key Vault dietro un firewall se si intende usare SQL Server Connector per Azure Key Vault dietro un firewall o tramite un server proxy.
Note
In SQL Server 2022 (16.x) CU 12 e versioni successive, SQL Server in Linux supporta TDE Extensible Key Management con Azure Key Vault. I passaggi 3 e 4 di questa guida non sono necessari per SQL Server in Linux.
Flusso rapido
- Selezionare un modello di autenticazione nel passaggio 1: Configurare il modello di autenticazione.
- Creare un insieme di credenziali delle chiavi e una chiave nel passaggio 2: Creare un insieme di credenziali delle chiavi.
- Installare il connettore nel passaggio 3: Installare il connettore SQL Server.
- Configurare il prerequisito del Registro di sistema nel passaggio 4: Aggiungere la chiave del Registro di sistema per supportare il provider EKM.
- Configurare SQL Server e convalidare la crittografia nel passaggio 5: Configurare SQL Server.
Passaggio 1: Configurare il modello di autenticazione
Importante
Scegliere il modello di autenticazione prima di continuare:
- Usa la scheda Service principal per SQL Server locale.
- Usare la scheda Identità gestita per SQL Server nelle macchine virtuali Azure o SQL Server abilitate da Azure Arc, in cui è supportata l'identità gestita.
Matrice di supporto del modello di autenticazione:
| Modello di autenticazione | Versione di SQL Server | Posizione in cui viene eseguito SQL Server | Supportato |
|---|---|---|---|
| Service Principal | Versioni supportate descritte in questo articolo | In locale, VM di Azure, SQL Server abilitato da Azure Arc | Sì |
| Identità gestita | SQL Server 2022 CU17 e versioni successive | Macchina virtuale di Azure | Sì |
| Identità gestita | SQL Server 2025 e versioni successive | SQL Server abilitato da Azure Arc | Sì |
| Identità gestita | Qualunque | On-premises | No |
Per concedere all’istanza di SQL Server i permessi di accesso al tuo Azure Key Vault, è necessario un account di entità del servizio in Microsoft Entra ID.
Accedere al portale di Azure ed eseguire una delle operazioni seguenti:
Selezionare il pulsante Microsoft Entra ID.
Selezionare Altri servizi e quindi nella finestra Tutti i servizi digitare Microsoft Entra ID.
Registrare un'applicazione con Microsoft Entra ID seguendo questa procedura. Per istruzioni dettagliate, vedere la sezione Ottenere un'identità per l'applicazione del post di blog di Azure Key Vault, Azure Key Vault – Procedura dettagliata.
Nella sezione Gestisci della risorsa Microsoft Entra ID selezionare Registrazioni app.
Nella pagina Registrazioni app seleziona Nuova registrazione.
Nel riquadro Registra un'applicazione immettere il nome dell'app visualizzato agli utenti e quindi selezionare Registra.
Nel riquadro sinistro, selezionare Certificati e segreti>Segreti client>Nuovo segreto client.
In Aggiungi un segreto client immettere una descrizione e una scadenza appropriata e quindi selezionare Aggiungi. Non è possibile scegliere un periodo di scadenza maggiore di 24 mesi. Per ulteriori informazioni, vedi Aggiungere un segreto del client.
Nel riquadro Certificati e segreti, in Valore, selezionare il pulsante Copia accanto al valore del segreto client per usarlo per creare una chiave asimmetrica in SQL Server.
Nel riquadro sinistro selezionare Panoramica e quindi, nella casella ID applicazione (client) copiare il valore da usare per creare una chiave asimmetrica in SQL Server.
Passaggio 2: Creare un Key Vault
Selezionare il metodo che si vuole usare per creare un insieme di credenziali.
Note
Sono supportati solo Azure Key Vault e il modulo di protezione hardware gestito di Azure Key Vault. HSM cloud di Azure non è supportato.
Crea un Key Vault usando il portale di Azure
Per creare un insieme di credenziali delle chiavi usando il portale di Azure, vedere Avvio rapido: Creare un insieme di credenziali delle chiavi usando il portale di Azure.
Controllo dell'accesso basato sui ruoli di Azure
Usa il controllo degli accessi in base al ruolo di Azure (RBAC) per gestire l'accesso ad Azure Key Vault. Non usare i criteri di accesso legacy. I criteri di accesso legacy hanno vulnerabilità di sicurezza note, non supportano Privileged Identity Management (PIM) e non devono essere usati per i dati e i carichi di lavoro critici. Per ulteriori informazioni sulle autorizzazioni RBAC di Azure Key Vault, vedere Ruoli predefiniti di Azure per le operazioni del piano dati di Key Vault.
Passare alla risorsa di Key Vault creata e selezionare l'impostazione Controllo di accesso (IAM).
Selezionare Aggiungi>Aggiungi assegnazione di ruolo.
L'applicazione EKM o l'identità gestita necessita del ruolo Key Vault Crypto Service Encryption User per eseguire operazioni di wrapping e unwrapping. Cercare Utente di crittografia del servizio di crittografia di Key Vault e selezionare il ruolo. Seleziona Avanti.
Nella scheda Membri, seleziona l'opzione Seleziona membri e quindi cerca l'applicazione Microsoft Entra o l'identità gestita che hai creato nel Passaggio 1. Selezionare l'applicazione o l'identità gestita e quindi il pulsante Seleziona .
Selezionare Rivedi e assegna due volte per completare l'assegnazione di ruolo.
Creazione di una chiave
L'utente che crea la chiave richiede il ruolo di Amministratore di Key Vault. Analogamente ai passaggi precedenti, aggiungere il membro che crea la chiave e assegnare il ruolo.
Nel riquadro Key Vault, selezionare Chiavi e poi selezionare l'opzione Genera/Importa. Questa azione apre il riquadro Crea una chiave . Selezionare l’opzione Genera e immettere un nome per la chiave. Connettore SQL Server richiede che il nome della chiave usi solo i caratteri "a-z", "A-Z", "0-9" e "-", con un limite di 26 caratteri.
Usare il tipo di chiave RSA e le dimensioni della chiave RSA pari a 2048. EKM supporta attualmente solo una chiave RSA. Impostare le date di attivazione e di scadenza in base alle esigenze e impostare Abilitato su Sì.
Configurare un HSM gestito di Azure Key Vault (facoltativo)
Azure Key Vault Managed HSM (modulo di protezione hardware) supporta SQL Server e SQL Server in Macchine virtuali di Azure (VMs) quando si utilizza la versione più recente del SQL Server Connector, e Azure SQL. Il Managed HSM è un servizio HSM completamente gestito, altamente disponibile e a tenant singolo. Il modulo di protezione hardware HSM gestito offre una base sicura per le operazioni di crittografia e l'archiviazione delle chiavi. L'HSM gestito è progettato per soddisfare i requisiti di sicurezza e conformità più rigorosi.
Passaggio 2 illustra come creare un insieme di credenziali e una chiave in Azure Key Vault. Facoltativamente, è possibile usare un modulo di protezione hardware gestito Azure Key Vault per archiviare o creare una chiave per il connettore SQL Server. Segui questi passaggi:
Creare un HSM gestito di Azure Key Vault usando il portale di Azure, interfaccia della riga di comando di Azure, PowerShell o un modello ARM.
Attivare l'HSM gestito. Solo gli amministratori designati assegnati durante la creazione possono attivarlo. Nel portale di Azure, seleziona la risorsa Managed HSM, quindi seleziona Scarica dominio di sicurezza nel menu Panoramica. Segui una delle guide introduttive per attivare il tuo Managed HSM.
Concedi le autorizzazioni all'entità servizio Microsoft Entra o all'identità gestita per accedere al Managed HSM. Il ruolo di Amministratore HSM gestito non concede le autorizzazioni per creare una chiave. Analogamente al passaggio 2, l'applicazione EKM o l'identità gestita necessita del ruolo Managed HSM Crypto User o Managed HSM Crypto Service Encryption User per eseguire operazioni di wrap e unwrap. Per ulteriori informazioni, consultare i ruoli predefiniti RBAC locali per HSM gestito.
Nel menu del servizio HSM gestito di Azure Key Vault, in Impostazioni selezionare Chiavi. Nella finestra Chiavi selezionare Genera/Importa/Ripristina backup per creare una chiave o importare una chiave esistente.
Note
Gli algoritmi RSA-HSM_2048 e RSA-HSM_3072 sono supportati a partire dall'aggiornamento cumulativo 13 SQL Server 2022 (16.x).
Azure Key Vault Managed HSM supporta la rotazione automatica delle chiavi. Per altre informazioni, si veda Configurare la rotazione automatica delle chiavi nel modulo HSM gestito di Azure.
Gli HSM gestiti supportano le connessioni agli endpoint privati. Per altre informazioni, vedere Integrrare HSM gestito con collegamento privato di Azure. In questa configurazione, è necessario abilitare l'opzione Bypass dei servizi attendibili Microsoft nell'impostazione Rete di Azure Key Vault Managed HSM.
Passaggio 3: Installare SQL Server Connector
Chiedere a un amministratore di SQL Server di scaricare la versione più recente del connettore di SQL Server per Microsoft Azure Key Vault dal Area download Microsoft ed eseguire il programma di installazione.
Per impostazione predefinita, il Connettore viene installato in C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. È possibile modificare questo percorso durante l'installazione. Se lo modifichi, modifica gli script nella sezione successiva.
Un'installazione riuscita installa Microsoft.AzureKeyVaultService.EKM.dll sul computer. Questo assembly è la DLL del provider di crittografia EKM. Registrarlo con SQL Server usando l'istruzione CREATE CRYPTOGRAPHIC PROVIDER .
Il programma di installazione offre anche script di esempio per la crittografia SQL Server.
Per le spiegazioni del codice di errore, le impostazioni di configurazione o le attività di manutenzione, vedere:
- Istruzioni di manutenzione per il connettore SQL Server
- Spiegazioni del codice di errore per il connettore SQL Server
Passaggio 4: Aggiungere la chiave del Registro di sistema per supportare il provider EKM
Avvertimento
Solo un amministratore SQL Server che sa esattamente cosa sta facendo dovrebbe modificare il Registro di sistema. Le modifiche non corrette possono causare gravi problemi. Eseguire il backup del Registro di sistema prima di apportare modifiche in modo da poterlo ripristinare se si verifica un problema.
Eseguire regedit per aprire il Registro di sistema.
Creare una
SQL Server Cryptographic Providerchiave del Registro di sistema inHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.Fare clic con il pulsante destro del mouse sulla chiave del Registro di sistema, quindi selezionare
SQL Server Cryptographic ProviderAutorizzazioni.Concedere il controllo completo sulla
SQL Server Cryptographic Providerchiave all'account utente che esegue il servizio SQL Server.
Selezionare Applica e quindi OK.
Chiudere l'editor del Registro di sistema e riavviare il servizio SQL Server.
Note
Se si utilizza TDE con EKM o Azure Key Vault in un'istanza del cluster di failover, aggiungere anche
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provideralla routine di Checkpoint del Registro di sistema del cluster, così che il registro venga sincronizzato tra i nodi, agevolando il ripristino del database dopo il failover e la rotazione delle chiavi.Eseguire il comando di PowerShell seguente per aggiungere la chiave del Registro di sistema alla routine del checkpoint:
Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
Passaggio 5: Configurazione di SQL Server
Per visualizzare una nota sui livelli minimi di autorizzazione necessari per ogni azione in questa sezione, vedere B. Domande frequenti.
Fase 1: Configurare il provider di crittografia e le credenziali in master
Scegliere il modello di autenticazione e seguire i passaggi corrispondenti.
Eseguire sqlcmd o aprire SQL Server Management Studio.
Configurare SQL Server per usare EKM eseguendo lo script Transact-SQL seguente:
-- Enable advanced options. USE master; GO EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO -- Enable EKM provider EXEC sp_configure 'EKM provider enabled', 1; GO RECONFIGURE;Registrare il Connettore SQL Server come provider EKM con SQL Server.
Creare un provider di crittografia usando il Connettore SQL Server che rappresenta un provider EKM per Azure Key Vault. In questo esempio il nome del provider è
AzureKeyVault_EKM.CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GONote
La lunghezza del percorso file non può superare i 256 caratteri.
Impostare una credenziale SQL Server per un nome utente di SQL Server per utilizzare il Key Vault.
Aggiungere una credenziale a ogni accesso che esegue la crittografia utilizzando una chiave dell'insieme di credenziali. Esiste un mapping uno-a-uno tra le credenziali e gli account di accesso. Ogni account di accesso deve avere credenziali univoche.
Modificare lo script Transact-SQL nei modi seguenti:
Modificare l'argomento
IDENTITY(DocsSampleEKMKeyVault) in modo che punti all'Azure Key Vault.- Se si usa Azure globale, sostituire l'argomento
IDENTITYcon il nome del proprio Azure Key Vault specificato in Passaggio 2: Creare un insieme di credenziali delle chiavi di Azure. - Se si usa un cloud Azure privato (ad esempio Azure per enti pubblici, Microsoft Azure gestito da 21Vianet o Azure Germania), sostituire l'argomento
IDENTITYcon l'URI dell'insieme di credenziali delle chiavi restituito in Creare un insieme di credenziali delle chiavi e una chiave tramite PowerShell. Non includerehttps://nell'URI dell'archivio di chiavi.
- Se si usa Azure globale, sostituire l'argomento
Sostituire la prima parte dell'argomento
SECRETcon l'ID client di Microsoft Entra indicato in Passaggio 1: Configurare il modello di autenticazione. In questo esempio l'ID client èd956f6b9xxxxxxx.Importante
Rimuovere i trattini dall'ID app (client).
Completare la seconda parte dell'argomento
SECRETcon il segreto client del passaggio 1. La stringa finale è una lunga sequenza di lettere e numeri senza trattini (ad eccezione di tutti i trattini nel segreto client stesso).
USE master; CREATE CREDENTIAL sysadmin_ekm_cred -- Set IDENTITY to the vault name (public Azure) or full vault hostname without https:// (sovereign clouds / Managed HSM) -- See https://dotnet.territoriali.olinfo.it/azure/key-vault/general/about-keys-secrets-certificates#dns-suffixes-for-base-url WITH IDENTITY = 'DocsSampleEKMKeyVault', --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret--> SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM; -- Add the credential to the SQL Server administrator's domain login ALTER LOGIN [<domain>\<login>] ADD CREDENTIAL sysadmin_ekm_cred;Per un esempio di uso di variabili e rimozione di trattini a livello di codice dall'ID client, vedere CREATE CREDENTIAL.
Aprire la chiave Azure Key Vault nell'istanza di SQL Server.
Indipendentemente dal fatto che sia stata creata una nuova chiave o importata una chiave asimmetrica nel passaggio 2: Creare un insieme di credenziali delle chiavi, aprire la chiave in SQL Server usando
CREATE ASYMMETRIC KEY.Importante
Completare i prerequisiti del Registro di sistema prima di eseguire questo passaggio.
Negli esempi seguenti:
- Sostituire
EKMSampleASYKeycon il nome da usare in SQL Server. - Sostituire
ContosoRSAKey0con il nome della chiave in Azure Key Vault o in Managed HSM.
Usare un nome di chiave senza versione (consigliato per la maggior parte degli scenari):
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0', CREATION_DISPOSITION = OPEN_EXISTING;Usa una versione specifica della chiave quando devi vincolare le operazioni a una versione:
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379', CREATION_DISPOSITION = OPEN_EXISTING;In questo esempio è
1a4d3b9b393c4678831ccc60def75379la versione chiave specifica usata SQL Server per le operazioni del database.- Sostituire
Creare un nuovo account di accesso usando la chiave asimmetrica in SQL Server creata nel passaggio precedente.
-- Create a login that associates the asymmetric key with this login CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY EKMSampleASYKey;Spostare la mappatura delle credenziali dal login amministratore originale al login creato dalla chiave asimmetrica.
SQL Server usa l'account di accesso creato dalla chiave asimmetrica (
TDE_Login) per le operazioni EKM. Per assicurarsi che SQL Server possa accedere ad Azure Key Vault durante le operazioni di crittografia e ripristino, associare la credenziale aTDE_Loginanziché all'accesso di configurazione originale.-- Remove the service principal credential from the original setup login ALTER LOGIN [<domain>\<login>] DROP CREDENTIAL sysadmin_ekm_cred; -- Map the service principal credential to the login created from the asymmetric key ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
Fase 2: Crittografare e convalidare il database utente
Configurare il database utente da crittografare
Creare un database di test per crittografare usando la chiave Azure Key Vault.
-- Create a test database for the TDE example. CREATE DATABASE TestTDE;Creare una chiave di crittografia del database usando la chiave asimmetrica del server (
EKMSampleASYKey).USE TestTDE; -- Create a DEK protected by the EKM asymmetric key. CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;Abilitare TDE nel database impostando
ENCRYPTION ON.-- Enable TDE for the database. ALTER DATABASE TestTDE SET ENCRYPTION ON;
Verificare l'utilizzo della chiave e lo stato di crittografia
Nel database
master, eseguire la query Transact-SQL seguente per verificare che la chiave asimmetrica EKM esista e acquisirne l'impronta digitale.SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys;L'istruzione restituisce un output simile al seguente:
name algorithm_desc thumbprint EKMSampleASYKey RSA_2048 <key thumbprint>Nel database utente (
TestTDE) eseguire la query seguente Transact-SQL per verificare che TDE sia abilitato e che la chiave di crittografia del database sia protetta da una chiave asimmetrica.SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('TestTDE');L'istruzione restituisce un output simile al seguente:
encryptor_type encryption_state_desc encryptor_thumbprint ASYMMETRIC KEY ENCRYPTED <key thumbprint>Confermare che
encryptor_thumbprintcorrisponda all'impronta digitale restituita dasys.asymmetric_keys. Una mancata corrispondenza indica in genere che la chiave di crittografia del database è protetta da una chiave diversa rispetto al previsto.
Pulizia
Usare i passaggi di pulizia che corrispondono al modello di autenticazione configurato.
Pulire gli oggetti di test creati in questa procedura.
-- CLEAN UP: shared objects + service principal credential USE master; GO ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [TestTDE]; GO DROP LOGIN [TDE_Login]; GO DROP ASYMMETRIC KEY [EKMSampleASYKey]; DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM]; GO DROP CREDENTIAL [sysadmin_ekm_cred]; GOVerificare se è necessario rimuovere la chiave di registro
SQL Server Cryptographic Provider.Importante
La
SQL Server Cryptographic Providerchiave del Registro di sistema non viene rimossa automaticamente dopo l'eliminazione delle chiavi EKM.Eliminare questa chiave del Registro di sistema solo quando EKM non è più necessario nell'istanza. Eliminarlo troppo presto può compromettere la funzionalità di EKM e le operazioni di ripristino.
Percorso del Registro di sistema:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
Ruotare le chiavi asimmetriche per TDE con Azure Key Vault
Utilizzare una guida operativa dedicata per le fasi della rotazione delle chiavi, inclusi script specifici per l'autenticazione, la verifica e i controlli di sicurezza:
Importante
Non eliminare le versioni precedenti della chiave dopo la rotazione. Le versioni precedenti potrebbero essere ancora necessarie per il ripristino di backup, file di log e artefatti di ripristino meno recenti.