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.
Il connettore SQL Server per Microsoft Azure Key Vault consente alla crittografia di SQL Server di sfruttare il servizio Azure Key Vault come provider di EKM (Extensible Key Management).
Incluso in questo argomento:
Passaggio 1: Configurazione del Key Vault per l'uso da parte di SQL Server
Passaggio 3: Configurare SQL Server per utilizzare un provider EKM per il Key Vault
Esempio A: Transparent Data Encryption usando una chiave asimmetrica dall'Archivio delle chiavi
Esempio B: Crittografia dei backup utilizzando una chiave asimmetrica dal Key Vault
Esempio C: crittografia a livello di colonna utilizzando una chiave asimmetrica dal Key Vault
Utilizzi di EKM
Un'organizzazione può usare la crittografia di SQL Server per proteggere i dati sensibili. La crittografia SQL Server include TDE (Transparent Data Encryption), crittografia a livello di colonna (CLE) e crittografia del backup. In tutti questi casi i dati vengono crittografati usando una chiave di crittografia dei dati simmetrica. La chiave di crittografia dei dati simmetrica è ulteriormente protetta crittografandola con una gerarchia di chiavi archiviate in SQL Server. In alternativa, l'architettura del provider EKM consente a SQL Server di proteggere le chiavi di crittografia dei dati usando una chiave asimmetrica archiviata all'esterno di SQL Server in un provider di crittografia esterno. L'uso dell'architettura del provider EKM aggiunge un ulteriore livello di sicurezza e consente alle organizzazioni di separare la gestione delle chiavi e dei dati.
Il connettore SQL Server per Azure Key Vault consente a SQL Server di sfruttare il servizio di Azure Key Vault, scalabile, ad alta prestazione e altamente disponibile, come provider EKM per la protezione delle chiavi di crittografia. Il servizio key vault può essere usato con le installazioni di SQL Server in macchine virtuali di Microsoft Azure e per i server locali. Il servizio di gestione delle chiavi offre anche la possibilità di usare moduli hardware per la sicurezza strettamente controllati e monitorati per offrire un livello di protezione superiore alle chiavi di crittografia asimmetriche. Per ulteriori informazioni su Azure Key Vault, vedere Azure Key Vault.
L'immagine seguente riepiloga il flusso del processo di EKM usando il key vault. I numeri dei passaggi del processo nell'immagine non corrispondono ai numeri dei passaggi di installazione che seguono l'immagine.
Passaggio 1: Configurare il Key Vault da utilizzare con SQL Server
Usare la procedura seguente per configurare un contenitore di chiavi da usare con il motore di database SQL Server per la protezione delle chiavi di crittografia. Una cassaforte potrebbe essere già in uso per l'organizzazione. Quando non esiste un insieme di credenziali, l'amministratore di Azure nell'organizzazione designato per gestire le chiavi di crittografia può creare un insieme di credenziali, generare una chiave asimmetrica nell'insieme di credenziali e quindi autorizzare SQL Server a usare la chiave. Per familiarizzarti con la revisione del servizio Key Vault, consulta Introduzione ad Azure Key Vaulte il riferimento ai cmdlet di Azure Key Vault in PowerShell .
Importante
Se si dispone di più sottoscrizioni di Azure, è necessario usare la sottoscrizione che contiene SQL Server.
Creare un vault: Creare un vault utilizzando le istruzioni nella sezione Creare un vault di chiavi di Introduzione ad Azure Key Vault. Registrare il nome del caveau. Questo argomento usa ContosoKeyVault come nome dell'archivio chiavi.
Generare una chiave asimmetrica nell'archivio delle chiavi: La chiave asimmetrica nell'archivio delle chiavi viene usata per proteggere le chiavi di crittografia di SQL Server. Solo la parte pubblica della chiave asimmetrica lascia la cassaforte; la parte privata non viene mai esportata dalla cassaforte. Tutte le operazioni di crittografia che usano la chiave asimmetrica vengono delegate all'insieme di credenziali delle chiavi di Azure e sono protette dalla sicurezza dell'insieme di credenziali delle chiavi.
Esistono diversi modi per generare una chiave asimmetrica e archiviarla nell'archivio. È possibile generare esternamente una chiave e importare la chiave nell'archivio come file con estensione .pfx. In alternativa, creare la chiave direttamente nell'insieme di credenziali (key vault) usando le API dell'insieme di credenziali delle chiavi.
Il connettore SQL Server richiede che le chiavi asimmetriche siano RSA a 2048 bit e il nome della chiave possa usare solo i caratteri "a-z", "A-Z", "0-9" e "-". In questo documento il nome della chiave asimmetrica viene definito ContosoMasterKey. Sostituirlo con il nome univoco usato per la chiave.
Importante
L'importazione della chiave asimmetrica è altamente consigliata per gli scenari di produzione perché consente all'amministratore di depositare la chiave in un sistema di deposito delle chiavi. Se la chiave asimmetrica viene creata nell'archivio, non può essere depositata perché la chiave privata non può mai uscire dall'archivio. Le chiavi usate per proteggere i dati critici devono essere depositate. La perdita di una chiave asimmetrica comporterà dati irreversibili in modo permanente.
Importante
L'insieme di credenziali supporta più versioni della stessa chiave chiamata. Le chiavi da utilizzare con il connettore SQL Server non devono essere soggette a versionamento o rotazione. Se l'amministratore vuole sostituire la chiave usata per la crittografia di SQL Server, è necessario creare una nuova chiave con un nome diverso nell'insieme di credenziali e usarla per crittografare la chiave DEK.
Per altre informazioni su come importare una chiave nell'insieme di credenziali delle chiavi o per creare una chiave nell'insieme di credenziali delle chiavi (non consigliata per un ambiente di produzione), vedere la sezione Aggiungere una chiave o un segreto all'insieme di credenziali delle chiavi in Introduzione ad Azure Key Vault.
Ottenere i principali di servizio di Azure Active Directory da usare per SQL Server: Quando l'organizzazione si iscrive a un servizio cloud Microsoft, ottiene Azure Active Directory. Creare i principali del servizio in Azure Active Directory da utilizzare per SQL Server (per autenticarsi in Azure Active Directory) durante l'accesso al Key Vault.
Un Service Principal sarà necessario per un amministratore di SQL Server per accedere al vault durante la configurazione di SQL Server per l'uso della crittografia.
Un'altra entità servizio sarà necessaria per il motore del database SQL Server per accedere al vault e svolgere le chiavi usate nella crittografia di SQL Server.
Per altre informazioni su come registrare un'applicazione e generare un'entità servizio, vedere la sezione Registrare un'applicazione con Azure Active Directory in Introduzione ad Azure Key Vault. Il processo di registrazione restituisce un ID applicazione (anche noto come ID CLIENT) e una chiave di autenticazione (anche nota come segreto) per ogni entità servizio di Azure Active Directory . Se usato nell'istruzione
CREATE CREDENTIAL
, il trattino deve essere rimosso dall'ID CLIENT . Registrare questi elementi per l'uso negli script seguenti:dell'entità servizio per un login sysadmin: CLIENTID_sysadmin_login e SECRET_sysadmin_login
Entità Servizio per Motore di Database di SQL Server: CLIENTID_DBEngine e SECRET_DBEngine.
Concedere l'autorizzazione ai principali del servizio per accedere al Gestione Segreti: sia il CLIENTID_sysadmin_login che il principale di CLIENTID_DBEngineService richiedono le autorizzazioni ottenere, elenco, wrapKeye unwrapKey nel Gestione Segreti. Se si intende creare chiavi tramite SQL Server, è anche necessario concedere all'creare l'autorizzazione nell'insieme di credenziali delle chiavi.
Importante
Gli utenti devono avere almeno le operazioni wrapKey e unwrapKey per il vault delle chiavi.
Per ulteriori informazioni sulla concessione delle autorizzazioni al vault, consultare la sezione Autorizzare l'applicazione a usare la chiave o il segreto in Introduzione ad Azure Key Vault.
Collegamenti alla documentazione di Azure Key Vault
Passaggio 2: Installare il connettore SQL Server
Il connettore SQL Server viene scaricato e installato dall'amministratore del computer SQL Server. Il connettore SQL Server è disponibile come download dal Centro download Microsoft . Cercare connettore SQL Server per Microsoft Azure Key Vault, esaminare i dettagli, i requisiti di sistema e le istruzioni di installazione e scegliere di scaricare il connettore e avviare l'installazione usando Eseguire. Esaminare la licenza e accettare la licenza e continuare.
Per impostazione predefinita, il connettore viene installato in C:\Programmi\Connettore SQL Server per Microsoft Azure Key Vault. Questa posizione può essere modificata durante l'installazione. Se modificato, modificare gli script seguenti.
Al termine dell'installazione, nel computer vengono installati gli elementi seguenti:
Microsoft.AzureKeyVaultService.EKM.dll: si tratta della DLL del provider EKM crittografico che deve essere registrata con SQL Server tramite l'istruzione CREATE CRYPTOGRAPHIC PROVIDER.
Connettore SQL Server di Azure Key Vault: Questo è un servizio di Windows che consente al provider EKM di criptografia di comunicare con il Key Vault.
L'installazione del connettore SQL Server consente anche di scaricare facoltativamente script di esempio per la crittografia di SQL Server.
Passaggio 3: Configurare SQL Server per l'uso di un provider EKM per il Key Vault
Autorizzazioni
Per completare l'intero processo, è necessaria l'autorizzazione CONTROL SERVER o l'appartenenza al ruolo predefinito del server sysadmin. Per azioni specifiche sono necessarie le autorizzazioni seguenti:
Per creare un provider di crittografia è necessaria l'autorizzazione CONTROL SERVER oppure bisogna appartenere al ruolo predefinito del server sysadmin.
Per modificare un'opzione di configurazione ed eseguire l'istruzione RECONFIGURE, è necessario disporre dell'autorizzazione ALTER SETTINGS a livello di server. L'autorizzazione ALTER SETTINGS è detenuta in modo implicito dai ruoli predefiniti del server sysadmin e serveradmin.
Per creare credenziali, è necessaria l'autorizzazione ALTER ANY CREDENTIAL.
Per aggiungere credenziali a un account di accesso, è necessaria l'autorizzazione ALTER ANY LOGIN.
Per creare una chiave asimmetrica, è necessaria l'autorizzazione CREATE ASYMMETRIC KEY.
Per configurare SQL Server per l'uso di un provider di crittografia
Configurare il motore di database per usare EKM e registrare (creare) il provider di crittografia con SQL Server.
-- Enable advanced options. USE master; GO sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO -- Enable EKM provider sp_configure 'EKM provider enabled', 1 ; GO RECONFIGURE ; GO -- Create a cryptographic provider, using the SQL Server Connector -- which is an EKM provider for the Azure Key Vault. This example uses -- the name AzureKeyVault_EKM_Prov. CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GO
Configurare le credenziali di SQL Server per un login amministratore di SQL Server per utilizzare il Key Vault per configurare e gestire gli scenari di crittografia di SQL Server.
Importante
L'argomento IDENTITY di
CREATE CREDENTIAL
richiede il nome del Key Vault. L'argomento SECRET diCREATE CREDENTIAL
richiede che il Client ID <> (senza trattini) e il Secret <> vengano passati insieme senza uno spazio tra di essi.Nell'esempio seguente, l'ID client (
00001111-aaaa-2222-bbbb-3333cccc4444
) viene rimosso dai trattini e immesso come stringa00001111AAAA2222BBBB3333CCCC4444
e il segreto è rappresentato dalla stringa SECRET_sysadmin_login.USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_sysadmin_login' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ; -- Add the credential to the SQL Server administrators domain login ALTER LOGIN [<domain>/<login>] ADD CREDENTIAL sysadmin_ekm_cred;
Per un esempio di utilizzo di variabili per gli argomenti
CREATE CREDENTIAL
e la rimozione dei trattini a livello di codice dall'ID client, vedere CREATE CREDENTIAL (Transact-SQL).Se è stata importata una chiave asimmetrica come descritto in precedenza nel passaggio 1, sezione 3, aprire la chiave specificando il nome della chiave nell'esempio seguente.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH PROVIDER_KEY_NAME = 'ContosoMasterKey', CREATION_DISPOSITION = OPEN_EXISTING;
Anche se non è consigliabile per l'ambiente di produzione (perché la chiave non può essere esportata), è possibile creare una chiave asimmetrica direttamente nel vault da SQL Server. Se non hai importato una chiave in precedenza, devi creare una chiave asimmetrica nel key vault per il test usando lo script seguente. Eseguire lo script usando un account fornito con le credenziali sysadmin_ekm_cred.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH ALGORITHM = RSA_2048, PROVIDER_KEY_NAME = 'ContosoMasterKey';
Suggerimento
Gli utenti che ricevono l'errore Non è possibile esportare la chiave pubblica dal provider. Codice errore del provider: 2053. devono controllare le autorizzazioni accesso, elencare, wrapKeye unwrapKey nell'insieme di credenziali delle chiavi.
Per altre informazioni, vedere quanto segue:
Esempi
Esempio A: Crittografia trasparente dei dati utilizzando una chiave asimmetrica del Key Vault
Dopo aver completato i passaggi precedenti, creare una credenziale e un accesso, creare una chiave di crittografia del database protetta dalla chiave asimmetrica nel key vault. Usare la chiave di crittografia del database per crittografare un database con TDE.
Per crittografare un database è necessaria l'autorizzazione CONTROL per il database.
Per abilitare TDE tramite EKM e Key Vault
Creare una credenziale di SQL Server per il motore di database da usare quando si accede all'archivio chiavi EKM durante il caricamento del database.
Importante
L'argomento IDENTITY di
CREATE CREDENTIAL
richiede il nome del Key Vault. L'argomento SECRET diCREATE CREDENTIAL
richiede che il Client ID <> (senza trattini) e il Secret <> vengano passati insieme senza uno spazio tra di essi.Nell'esempio seguente, l'ID client (
00001111-aaaa-2222-bbbb-3333cccc4444
) viene rimosso dai trattini e immesso come stringa00001111AAAA2222BBBB3333CCCC4444
e il segreto è rappresentato dalla stringa SECRET_DBEngine.USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_DBEngine' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;
Creare un account di accesso di SQL Server da usare dal motore di database per TDE e aggiungervi le credenziali. In questo esempio viene usata la chiave asimmetrica CONTOSO_KEY archiviata nell'insieme di credenziali delle chiavi, importata o creata in precedenza per il database master, come descritto in passaggio 3, sezione 3 precedente.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GO
Creare la chiave di crittografia del database (DEK) che verrà usata per TDE. La chiave DEK può essere creata usando qualsiasi algoritmo o lunghezza della chiave supportata da SQL Server. La chiave DEK sarà protetta dalla chiave asimmetrica nel cassaforte delle chiavi.
In questo esempio viene usata la chiave asimmetrica CONTOSO_KEY archiviata nell'archivio delle chiavi, importata o creata in precedenza, come descritto sopra al passaggio 3, sezione 3 dei .
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON ; GO
Per altre informazioni, vedere quanto segue:
Esempio B: Crittografia dei backup utilizzando una chiave asimmetrica dalla cassaforte delle chiavi
I backup crittografati sono supportati a partire da SQL Server 2014. Nell'esempio seguente viene creato e ripristinato un backup crittografato di una chiave di crittografia dei dati protetta dalla chiave asimmetrica nel gestore di chiavi.
USE master;
BACKUP DATABASE [DATABASE_TO_BACKUP]
TO DISK = N'[PATH TO BACKUP FILE]'
WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,
ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY]);
GO
Codice di ripristino di esempio.
RESTORE DATABASE [DATABASE_TO_BACKUP]
FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE;
GO
Per altre informazioni sulle opzioni di backup, vedere BACKUP (Transact-SQL).
Esempio C: Crittografia a livello di colonna usando una chiave asimmetrica dal Key Vault
Nell'esempio seguente viene creata una chiave simmetrica protetta dalla chiave asimmetrica nell'archivio delle chiavi. La chiave simmetrica viene quindi usata per crittografare i dati nel database.
In questo esempio viene usata la chiave asimmetrica CONTOSO_KEY archiviata nell'archivio delle chiavi, importata o creata in precedenza, come descritto sopra al passaggio 3, sezione 3 dei . Per utilizzare questa chiave asimmetrica nel database ContosoDatabase
, è necessario eseguire di nuovo l'istruzione CREATE ASYMMETRIC KEY per fornire al database ContosoDatabase
un riferimento alla chiave.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY(KEY_GUID('DATA_ENCRYPTION_KEY'), CONVERT(VARBINARY,'Plain text data to encrypt'));
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;
Vedere anche
CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)CREATE CREDENTIAL (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)Extensible Key Management (EKM)Abilitare TDE tramite EKMCrittografia del BackupCreare un backup crittografato