Procedura: Abilitazione di Transparent Data Encryption tramite Extensible Key Management
Transparent Data Encryption (TDE) consente di crittografare l'archiviazione di un intero database. Transparent Data Encryption crittografa i dati utilizzando una chiave simmetrica denominata chiave di crittografia del database. In questo argomento viene descritto come proteggere la chiave di crittografia del database utilizzando una chiave asimmetrica archiviata in un modulo Extensible Key Management (EKM).
È inoltre possibile proteggere la chiave di crittografia del database utilizzando un certificato protetto dalla chiave master del database master. Per ulteriori informazioni sulla protezione della chiave di crittografia del database tramite la chiave master del database, vedere Informazioni sulla crittografia trasparente dei dati (TDE, Transparent Data Encryption).
Di seguito vengono indicati i passaggi di base per abilitare Transparent Data Encryption tramite Extensible Key Management:
Installare un provider EKM. Le procedure per questo passaggio varieranno a seconda dei requisiti del provider EKM, ma possono includere l'installazione di un certificato dal provider EKM nell'archivio certificati locale e la copia di file DLL EKM nel computer SQL Server.
Configurare SQL Server per l'utilizzo del provider EKM.
Se il modulo EKM utilizza l'autenticazione di base, creare credenziali e aggiungerle a un utente.
Creare una chiave asimmetrica protetta dal provider EKM.
Se il modulo EKM utilizza l'autenticazione di base, creare credenziali protette dalla chiave asimmetrica per l'utilizzo da parte del Motore di database.
Creare una chiave di crittografia del database simmetrica.
Abilitare Transparent Data Encryption utilizzando la chiave di crittografia del database.
Per completare i passaggi inclusi in questo argomento, connettersi a SQL Server utilizzando una finestra dell'editor di query in SQL Server Management Studio.
Per installare e configurare il provider del servizio di crittografia
Copiare i file forniti dal provider EKM in un percorso appropriato nel computer SQL Server. In questo esempio verrà utilizzata la cartella C:\EKM.
Installare i certificati nel computer in base a quanto richiesto dal provider EKM.
[!NOTA]
SQL Server non fornisce un provider EKM. Ogni provider EKM può richiedere procedure diverse per l'installazione, la configurazione e l'autorizzazione degli utenti. Per completare questo passaggio, consultare la documentazione del provider EKM.
Per configurare SQL Server per l'utilizzo di un provider EKM e creare il provider in SQL Server
L'abilitazione di un provider EKM è un'opzione avanzata. Eseguire innanzitutto le istruzioni seguenti per visualizzare le opzioni avanzate.
sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO
Eseguire l'istruzione seguente per abilitare i provider EKM:
sp_configure 'EKM provider enabled', 1 ; GO RECONFIGURE ; GO
Eseguire l'istruzione seguente per creare un provider di servizi di crittografia, denominato EKM_Prov nell'esempio, basato su un provider EKM:
CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ; GO
[!NOTA]
Il file DLL EKM deve includere una firma digitale.
Creazione di credenziali da utilizzare per la crittografia del database
Per creare una chiave di crittografia del database e crittografare un database, è necessario essere un utente con privilegi elevati, ad esempio un amministratore di sistema, che possa essere autenticato dal modulo EKM. La procedura seguente consente di creare credenziali che utilizzano l'identità EKM e di aggiungere le credenziali a un utente con privilegi elevati. Nella procedura si presuppone che il modulo EKM possa autenticare un utente denominato "Identity1". Al posto degli asterischi inclusi nella procedura, è necessario fornire una password. Questi passaggi sono necessari quando il provider EKM utilizza l'autenticazione di base, ma possono essere ignorati quando il modulo EKM utilizza un altro tipo di autenticazione.
Per creare credenziali e aggiungerle all'account di accesso di un utente con privilegi elevati
Eseguire l'istruzione seguente per creare credenziali che verranno utilizzate dagli amministratori di sistema:
CREATE CREDENTIAL sa_ekm_tde_cred WITH IDENTITY = 'Identity1', SECRET = '*************' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ; GO
Eseguire l'istruzione seguente per aggiungere le credenziali degli amministratori di sistema a un utente con privilegi elevati, ad esempio il proprio account di accesso al dominio in formato [DOMAIN\login]:
ALTER LOGIN [DOMAIN\login] ADD CREDENTIAL sa_ekm_tde_cred ; GO
Creazione di una chiave asimmetrica
Creare una chiave asimmetrica per proteggere l'accesso alla chiave di crittografia del database. Questa chiave viene utilizzata da SQL Server per accedere alla chiave di crittografia del database.
Per creare una chiave di crittografia del database
Eseguire l'istruzione seguente per creare una chiave asimmetrica archiviata nel provider EKM. In questo esempio SQL Server identificherà la chiave in base al nome ekm_login_key. Nel dispositivo EKM il nome della chiave sarà SQL_Server_Key.
[!NOTA]
Le opzioni e i parametri richiesti dal provider EKM possono differire da questa istruzione. Per ulteriori informazioni, rivolgersi al provider EKM.
USE master ; GO CREATE ASYMMETRIC KEY ekm_login_key FROM PROVIDER [EKM_Prov] WITH ALGORITHM = RSA_512, PROVIDER_KEY_NAME = 'SQL_Server_Key' ; GO
[!NOTA]
In caso di perdita della chiave asimmetrica archiviata nel modulo EKM, il database non potrà essere aperto in SQL Server. Se il provider EKM consente di eseguire il backup della chiave asimmetrica, è consigliabile creare una copia di backup e archiviarla in una posizione protetta.
Creazione di credenziali per l'utilizzo da parte del Motore di database
All'avvio il Motore di database deve aprire il database. La procedura seguente consente di creare credenziali che dovranno essere autenticate dal modulo EKM e di aggiungerle a un account di accesso basato su una chiave asimmetrica. Gli utenti non possono eseguire l'accesso utilizzando tale account, ma il Motore di database sarà in grado di effettuare l'autenticazione con il dispositivo EKM. Nella procedura si presuppone che il modulo EKM possa autenticare un utente denominato "Identity2". Al posto degli asterischi inclusi di seguito, è necessario fornire una password. Questi passaggi sono necessari quando il provider EKM utilizza l'autenticazione di base, ma possono essere ignorati quando il modulo EKM utilizza un altro tipo di autenticazione.
Per creare credenziali e aggiungerle agli account di accesso
Eseguire l'istruzione seguente per creare credenziali che verranno utilizzate dal Motore di database:
CREATE CREDENTIAL ekm_tde_cred WITH IDENTITY = 'Identity2' , SECRET = '*************' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
Eseguire l'istruzione seguente per aggiungere un account di accesso utilizzato da Transparent Data Encryption e per aggiungere le nuove credenziali all'account di accesso:
CREATE LOGIN EKM_Login FROM ASYMMETRIC KEY ekm_login_key ; GO ALTER LOGIN EKM_Login ADD CREDENTIAL ekm_tde_cred ; GO
Creazione della chiave di crittografia del database
La chiave di crittografia del database è una chiave simmetrica. Creare la chiave di crittografia del database nel database master.
Per creare una chiave di crittografia del database
Passare al database che verrà crittografato:
USE AdventureWorks ; GO
Eseguire il codice seguente per creare la chiave di crittografia del database che verrà utilizzata per Transparent Data Encryption:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ; GO
Eseguire il codice seguente per modificare il database per l'abilitazione di Transparent Data Encryption:
ALTER DATABASE AdventureWorks SET ENCRYPTION ON ; GO
Il database è ora archiviato in un formato crittografato.
Protezione
In questo argomento vengono utilizzate le autorizzazioni seguenti:
Per modificare un'opzione di configurazione ed eseguire l'istruzione RECONFIGURE, è necessario disporre dell'autorizzazione a livello di server ALTER SETTINGS. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del server sysadmin e serveradmin.
È necessaria l'autorizzazione ALTER ANY CREDENTIAL.
È necessaria l'autorizzazione ALTER ANY LOGIN.
È necessaria l'autorizzazione CREATE ASYMMETRIC KEY.
È necessaria l'autorizzazione CONTROL nel database per crittografare il database.