Abilitare TDE in SQL Server con EKM

Si applica a:SQL Server

Questo articolo descrive come abilitare Transparent Data Encryption (TDE) in SQL Server per proteggere una chiave di crittografia del database tramite una chiave asimmetrica archiviata in un modulo Extensible Key Management (EKM) con Transact-SQL.

TDE esegue la crittografia dello spazio di archiviazione di un intero database usando una chiave simmetrica detta "chiave di crittografia del database". È anche possibile proteggere la chiave di crittografia del database usando 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 Transparent Data Encryption (TDE). Per informazioni sulla configurazione di TDE quando SQL Server è in esecuzione in una VM di Azure, vedere Extensible Key Management con Azure Key Vault (SQL Server). Per informazioni sulla configurazione di Transparent Data Encryption usando una chiave nell'insieme di credenziali delle chiavi di Azure, vedere Usare Connettore SQL Server con le funzionalità di crittografia SQL.

Prima di iniziare

Limitazioni e restrizioni

  • 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.

  • All'avvio, il motore di database deve aprire il database. A tal fine, è necessario creare le credenziali che dovranno essere autenticate dal modulo EKM e aggiungerle a un account di accesso basato su una chiave asimmetrica. Gli utenti non possono eseguire l'accesso usando tale account, ma il motore di database sarà in grado di eseguire l'autenticazione con il dispositivo EKM.

  • 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 sicura.

  • Le opzioni e i parametri richiesti dal provider EKM possono differire da quanto indicato nell'esempio di codice seguente. Per altre informazioni, rivolgersi al provider EKM.

Sicurezza

Autorizzazioni

In questo articolo vengono usate 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 .

  • È richiesta l'autorizzazione ALTER ANY CREDENTIAL.

  • È richiesta l'autorizzazione ALTER ANY LOGIN.

  • È necessaria l'autorizzazione CREATE ASYMMETRIC KEY.

  • È necessaria l'autorizzazione CONTROL nel database per crittografare il database.

Utilizzo di Transact-SQL

Per abilitare Transparent Data Encryption tramite Extensible Key Management

  1. Copiare i file forniti dal provider EKM in una posizione appropriata nel computer con SQL Server. In questo esempio viene usata la cartella C:\EKM_Files.

  2. 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.

  3. In Esplora oggetti connettersi a un'istanza del motore di database.

  4. Sulla barra Standard fare clic su Nuova query.

  5. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.

    -- Enable advanced options.  
    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, which we have chosen to call "EKM_Prov," based on an EKM provider  
    
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov   
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;  
    GO  
    
    -- Create a credential that will be used by system administrators.  
    CREATE CREDENTIAL sa_ekm_tde_cred   
    WITH IDENTITY = 'Identity1',   
    SECRET = 'q*gtev$0u#D1v'   
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;  
    GO  
    
    -- Add the credential to a high privileged user such as your   
    -- own domain login in the format [DOMAIN\login].  
    ALTER LOGIN Contoso\Mary  
    ADD CREDENTIAL sa_ekm_tde_cred ;  
    GO  
    -- create an asymmetric key stored inside the EKM provider  
    USE master ;  
    GO  
    CREATE ASYMMETRIC KEY ekm_login_key   
    FROM PROVIDER [EKM_Prov]  
    WITH ALGORITHM = RSA_512,  
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;  
    GO  
    
    -- Create a credential that will be used by the Database Engine.  
    CREATE CREDENTIAL ekm_tde_cred   
    WITH IDENTITY = 'Identity2'   
    , SECRET = 'jeksi84&sLksi01@s'   
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;  
    
    -- Add a login used by TDE, and add the new credential to the login.  
    CREATE LOGIN EKM_Login   
    FROM ASYMMETRIC KEY ekm_login_key ;  
    GO  
    ALTER LOGIN EKM_Login   
    ADD CREDENTIAL ekm_tde_cred ;  
    GO  
    
    -- Create the database encryption key that will be used for TDE.  
    USE AdventureWorks2022;  
    GO  
    CREATE DATABASE ENCRYPTION KEY  
    WITH ALGORITHM  = AES_128  
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;  
    GO  
    
    -- Alter the database to enable transparent data encryption.  
    ALTER DATABASE AdventureWorks2022   
    SET ENCRYPTION ON ;  
    GO  
    

Per altre informazioni, vedere gli argomenti seguenti:

Vedi anche

Transparent Data Encryption con il database SQL di Azure