Activer le chiffrement transparent des données à l’aide de la gestion de clés extensible (EKM)

S'applique à : SQL Server

Cet article décrit comment activer Transparent Data Encryption (TDE) dans SQL Server pour protéger une clé de chiffrement de base de données en utilisant une clé asymétrique stockée dans un module de gestion de clés extensible (EKM) avec Transact-SQL.

Le chiffrement transparent des données chiffre le stockage d’une base de données entière à l’aide d’une clé symétrique appelée clé de chiffrement de base de données. La clé de chiffrement de base de données peut aussi être protégée à l’aide d’un certificat qui est lui-même protégé par la clé principale de base de données de la base de données MASTER. Pour plus d’informations sur la protection de la clé de chiffrement de base de données à l’aide de la clé principale de base de données, consultez Transparent Data Encryption (TDE). Pour plus d’informations sur la configuration de TDE lorsque SQL Server est exécuté sur un ordinateur virtuel Azure, consultez Gestion de clés extensible à l’aide d’Azure Key Vault (SQL Server). Pour plus d’informations sur la configuration de TDE à l’aide d’une clé dans Azure Key Vault, consultez Utiliser le connecteur SQL Server avec les fonctionnalités de chiffrement SQL.

Avant de commencer

Limitations et restrictions

  • Vous devez être un utilisateur doté de privilèges élevés (comme un administrateur système) pour créer une clé de chiffrement de base de données et chiffrer une base de données. Cet utilisateur doit pouvoir être authentifié par le module EKM.

  • Au démarrage, le moteur de base de données doit ouvrir la base de données. Pour ce faire, vous devez créer des informations d'identification qui seront authentifiées par la gestion de clés extensible et les ajouter à un nom de connexion reposant sur une clé asymétrique. Les utilisateurs ne peuvent pas se connecter à l’aide de ce nom de connexion, mais le moteur de base de données sera en mesure de s’authentifier auprès du périphérique EKM.

  • En cas de perte de la clé asymétrique stockée dans le module EKM, la base de données ne peut pas être ouverte par SQL Server. Si le fournisseur EKM vous permet de sauvegarder la clé asymétrique, vous devez créer une sauvegarde et la stocker dans un endroit sûr.

  • Les options et les paramètres requis par votre fournisseur EKM peuvent différer de ce qui est indiqué dans l'exemple de code ci-dessous. Pour plus d'informations, consultez votre fournisseur EKM.

Sécurité

autorisations

Cet article utilise les autorisations suivantes :

  • Pour modifier une option de configuration et exécuter l'instruction RECONFIGURE, vous devez disposer de l'autorisation de niveau serveur ALTER SETTINGS. L'autorisation ALTER SETTINGS est implicitement détenue par les rôles serveur fixes sysadmin et serveradmin .

  • Requiert l'autorisation ALTER ANY CREDENTIAL.

  • Nécessite l'autorisation ALTER ANY LOGIN.

  • Requiert l'autorisation CREATE ASYMMETRIC KEY.

  • Requiert l'autorisation CONTROL sur la base de données pour chiffrer la base de données.

Utilisation de Transact-SQL

Pour activer le chiffrement transparent des données (TDE) à l'aide de la gestion de clés extensible (EKM)

  1. Copiez les fichiers fournis par le fournisseur EKM dans un emplacement approprié sur l’ordinateur SQL Server. Dans cet exemple, nous utilisons le dossier C:\EKM_Files.

  2. Installez les certificats requis par votre fournisseur EKM sur votre ordinateur.

    Remarque

    SQL Server ne propose pas de fournisseur EKM. Chaque fournisseur EKM peut utiliser des procédures différentes pour l’installation, la configuration et l’autorisation des utilisateurs. Consultez la documentation de votre fournisseur EKM pour effectuer cette étape.

  3. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  4. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  5. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

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

Pour plus d’informations, consultez les rubriques suivantes :

Voir aussi

Transparent Data Encryption avec Azure SQL Database