Utilisez SQL Server Connector avec des fonctionnalités de chiffrement SQL

S'applique à :SQL Server

Les activités courantes de chiffrement SQL Server utilisant une clé asymétrique protégée par Azure Key Vault se répartissent dans les trois domaines suivants :

  • Chiffrement transparent des données (TDE) en utilisant une clé asymétrique d’Azure Key Vault.
  • Chiffrer les sauvegardes en utilisant une clé asymétrique issue du coffre-fort des clés.
  • Chiffrement au niveau colonne en utilisant une clé asymétrique provenant du coffre-fort des clés.

Terminez les étapes 1 à 4 de Configurer Transparent Data Encryption avec Azure Key Vault pour SQL Server avant de suivre les étapes de cet article.

Remarque

Les versions 1.0.0.440 et antérieures ont été remplacées et ne sont plus prises en charge dans les environnements de production. Passez à la version 1.0.1.0 ou ultérieure. Téléchargez la version actuelle depuis le Centre de téléchargement Microsoft, et suivez les instructions dans la section « Mise à niveau du SQL Server Connector » de maintenance et résolution des problèmes de SQL Server Connector.

Remarque

Microsoft Entra ID était anciennement appelé Azure Active Directory (Azure AD).

Chiffrement transparent des données en utilisant une clé asymétrique d’Azure Key Vault

Après avoir terminé les étapes 1 à 4 de configurer Transparent Data Encryption avec Azure Key Vault pour SQL Server, utilisez la clé Azure Key Vault pour chiffrer la clé de chiffrement de la base de données avec TDE. Pour plus d’informations sur la rotation des clés avec PowerShell, voir Faire pivoter le protecteur Transparent Data Encryption (TDE) à l’aide de PowerShell.

Important

Ne supprimez pas les versions précédentes de la clé après une rotation. Lors de la rotation des clés, certaines données sont encore chiffrées avec les clés précédentes, comme les anciennes sauvegardes de base de données, les fichiers journaux sauvegardés et les fichiers journaux de transactions.

Vous devez créer des informations d’identification et un nom de connexion, puis créer une clé de chiffrement de base de données qui chiffre les données et les journaux dans la base de données. Chiffrer une base de données nécessite l’autorisation CONTROL sur la base de données. Le graphique suivant montre la hiérarchie de la clé de chiffrement lorsque vous utilisez Azure Key Vault.

Diagramme montrant la hiérarchie de la clé de chiffrement lors de l’utilisation de Azure Key Vault.

  1. Créer des informations d’identification SQL Server pour le moteur de base de données à utiliser pour le chiffrement TDE

    Le Moteur de base de données utilise les identifiants de l’application Microsoft Entra pour accéder au coffre-fort des clés lors du chargement de la base de données. Pour limiter les autorisations du coffre de clés que vous accordez, créez un autre ID client et un autre secret, comme décrit à l’étape 1 : Configurez le modèle d’authentification, pour le Moteur de base de données.

    Modifiez le script Transact-SQL ci-dessous comme suit :

    • Modifiez l’argument IDENTITY (ContosoDevKeyVault) de sorte qu’il pointe vers votre coffre Azure Key Vault.

      • Si vous utilisez Azure global, remplacez l’argument IDENTITY par le nom de votre Azure Key Vault de l’Étape 2 : Créer un coffre de clés.
      • Si vous utilisez un cloud Azure privé, par exemple Azure Government, Azure exploité par 21Vianet, ou Azure Allemagne, remplacez l'IDENTITYargument par l'URI Vault retourné dans Create a Key Vault and Key by PowerShell. N’incluez pas https:// dans l’URI du coffre de clés.
    • Remplacez la première partie de l’argument SECRET par l’ID client de l’application Microsoft Entra de l’étape 1 : Configurez le modèle d’authentification. Dans cet exemple, l’ID client est EF5C8E094D2A4A769998D93440D8115D.

      Important

      Vous devez supprimer les tirets de l’ ID client.

    • Complétez la deuxième partie de l’argument SECRET avec le Secret du Client de l’étape 1. Dans cet exemple, le Secret client est ReplaceWithAADClientSecret.

    • La dernière chaîne de l’argument SECRET est une longue séquence de lettres et de chiffres, sans traits d’union.

    USE master;  
    CREATE CREDENTIAL Azure_EKM_TDE_cred   
        WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;  
    
  2. Créer un compte de connexion SQL Server pour le moteur de base de données pour TDE

    Créez un compte de connexion SQL Server et ajoutez-lui les identifiants mentionnés à l'étape 1. Cet exemple Transact-SQL utilise la même clé que celle importée précédemment.

    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  
    
  3. Créer la clé de chiffrement de la base de données (DEK)

    Le DEK chiffre vos données et fichiers journaux dans l’instance de la base de données, et est à son tour chiffré par la clé asymétrique Azure Key Vault. Vous pouvez créer le DEK en utilisant n’importe quel algorithme ou longueur de clé que SQL Server supporte.

    USE ContosoDatabase;  
    GO  
    
    CREATE DATABASE ENCRYPTION KEY   
    WITH ALGORITHM = AES_256   
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;  
    GO  
    
  4. Activez le TDE

    -- Alter the database to enable transparent data encryption.  
    ALTER DATABASE ContosoDatabase   
    SET ENCRYPTION ON;  
    GO  
    

    Avec Management Studio, vérifiez que TDE est activé en vous connectant à votre base de données avec Explorateur d'objets. Faites un clic droit sur votre base de données, pointez vers Tâches, puis sélectionnez Gérer le chiffrement de la base de données.

    Capture d’écran montrant l’Explorateur d’objets avec l’option Tâches > Gérer le chiffrement de base de données sélectionnée.

    Dans la boîte de dialogue Gérer le chiffrement de base de données , vérifiez que le chiffrement TDE est activé et quelle clé asymétrique chiffre la clé DEK.

    Capture d’écran de la boîte de dialogue Gérer le chiffrement de base de données avec l’option Définir le chiffrement de la base de données sur sélectionnée et une bannière jaune indiquant que TDE est à présent activé.

    Vous pouvez aussi exécuter le script Transact-SQL suivant. Un état de chiffrement de 3 indique une base de données chiffrée.

    USE MASTER  
    SELECT * FROM sys.asymmetric_keys  
    
    -- Check which databases are encrypted using TDE  
    SELECT d.name, dek.encryption_state   
    FROM sys.dm_database_encryption_keys AS dek  
    JOIN sys.databases AS d  
         ON dek.database_id = d.database_id;  
    

    Remarque

    La base de données tempdb est chiffrée automatiquement chaque fois qu’une base de données permet le chiffrement TDE.

Chiffrer des sauvegardes en utilisant une clé asymétrique du coffre à clés

Les sauvegardes chiffrées sont prises en charge à partir de SQL Server 2014 (12.x). L’exemple suivant crée et restaure une sauvegarde chiffrée avec une clé de chiffrement de données que la clé asymétrique dans le coffre-fort protège.

Le Moteur de base de données utilise les identifiants de l’application Microsoft Entra pour accéder au coffre de clés lors du chargement de la base de données. Pour limiter les autorisations de coffre de clés que vous accordez, créez un autre ID client et un autre secret, comme décrit à l’étape 1 : Configurez le modèle d’authentification, pour le Moteur de base de données.

  1. Créez des informations d’identification SQL Server pour que le Moteur de base de données puisse les utiliser pour le chiffrement des sauvegardes

    Modifiez le script Transact-SQL ci-dessous comme suit :

    • Modifiez l’argument IDENTITY (ContosoDevKeyVault) de sorte qu’il pointe vers votre coffre Azure Key Vault.

      • Si vous utilisez Azure global, remplacez l’argument IDENTITY par le nom de votre Azure Key Vault de l’Étape 2 : Créer un coffre de clés.
      • Si vous utilisez un cloud Azure privé, par exemple Azure Government, Microsoft Azure exploité par 21Vianet, ou Azure Allemagne, remplacez l'IDENTITYargument par l'URI du Vault retourné dans Create a key vault and key by using PowerShell. N’incluez pas https:// dans l’URI du coffre de clés.
    • Remplacez la première partie de l’argument SECRET par l’ID client de l’application Microsoft Entra indiqué dans l’étape 1 : Configurez le modèle d’authentification. Dans cet exemple, l’ID client est EF5C8E094D2A4A769998D93440D8115D.

      Important

      Vous devez supprimer les tirets de l’ ID client.

    • Complétez la deuxième partie de l’argument SECRET avec le Secret du Client de l’étape 1. Dans cet exemple, le secret client est Replace-With-AAD-Client-Secret. La dernière chaîne de l’argument SECRET est une longue séquence de lettres et de chiffres, sans traits d’union.

      USE master;  
      
      CREATE CREDENTIAL Azure_EKM_Backup_cred   
          WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
          SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
      FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;    
      
  2. Créez un identifiant de connexion SQL Server pour le Moteur de base de données pour le chiffrement des sauvegardes

    Créez une connexion SQL Server à utiliser par le moteur de base de données pour les sauvegardes de chiffrement et ajoutez les informations d’identification de l’étape 1 à celle-ci. Cet exemple Transact-SQL utilise la même clé que celle importée précédemment.

    Important

    Vous ne pouvez pas utiliser la même clé asymétrique pour le chiffrement de sauvegarde si vous avez déjà utilisé cette clé pour le TDE (l’exemple précédent), ou le chiffrement au niveau colonne (l’exemple suivant).

    Cet exemple utilise la CONTOSO_KEY_BACKUP clé asymétrique stockée dans le coffre à clés, que vous pouvez importer ou créer déjà pour la master base de données, comme décrit à l’étape 2 : Créer un coffre à clés.

    USE master;  
    
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it is encrypting the backup.  
    CREATE LOGIN Backup_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP;  
    GO   
    
    -- Alter the Encrypted Backup Login to add the credential for use by   
    -- the Database Engine to access the key vault  
    ALTER LOGIN Backup_Login   
    ADD CREDENTIAL Azure_EKM_Backup_cred ;  
    GO  
    
  3. Sauvegardez la base de données

    Sauvegardez la base de données en spécifiant le chiffrement avec la clé asymétrique stockée dans le coffre de clés.

    Dans l’exemple suivant, notez que si la base de données était déjà chiffrée avec TDE, et que la clé CONTOSO_KEY_BACKUP asymétrique est différente de la clé asymétrique TDE, la sauvegarde est chiffrée à la fois par la clé asymétrique TDE et CONTOSO_KEY_BACKUP. L’instance SQL Server cible a besoin des deux clés pour déchiffrer la sauvegarde.

    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_BACKUP]);  
    GO  
    
  4. Restaurer la base de données

    Pour restaurer une sauvegarde de base de données chiffrée avec TDE, l’instance SQL Server cible doit d’abord posséder une copie de la clé asymétrique de Key Vault utilisée pour le chiffrement. Pour fournir cette copie :

    • Si la clé asymétrique d’origine utilisée pour le TDE n’est plus dans le coffre de clés, restaurez la sauvegarde de la clé du coffre ou réimportez la clé depuis un HSM local. Pour que l’empreinte digitale de la clé corresponde à celle enregistrée sur la sauvegarde de la base de données, la clé doit utiliser le même nom de clé du coffre de clés qu’elle avait à l’origine.

    • Appliquez les étapes 1 et 2 sur l’instance cible de SQL Server.

    • Après que l’instance SQL Server cible ait accès aux clés asymétriques utilisées pour chiffrer la sauvegarde, restaurez la base de données sur le serveur.

    Exemple de code de restauration :

    RESTORE DATABASE [DATABASE_TO_BACKUP]  
    FROM DISK = N'[PATH TO BACKUP FILE]'   
        WITH FILE = 1, NOUNLOAD, REPLACE;  
    GO  
    

    Pour plus d’informations sur les options de sauvegarde, consultez BACKUP (Transact-SQL).

Chiffrement au niveau de la colonne en utilisant une clé asymétrique provenant de Key Vault

L'exemple suivant crée une clé symétrique protégée par la clé asymétrique dans le coffre de clés. La clé symétrique chiffre ensuite les données dans la base de données.

Important

Vous ne pouvez pas utiliser la même clé asymétrique pour le chiffrement au niveau colonne si vous avez déjà utilisé cette clé pour le chiffrement de sauvegarde.

Cet exemple utilise la CONTOSO_KEY_COLUMNS clé asymétrique stockée dans le coffre de clés, que vous pouvez importer ou créer plus tôt, comme décrit à l’étape 2 : Créer un coffre de clés. Pour utiliser cette clé asymétrique dans la ContosoDatabase base de données, exécutez à nouveau l’instruction CREATE ASYMMETRIC KEY afin de donner à la ContosoDatabase base de données une référence à la clé.

USE [ContosoDatabase];  
GO  
  
-- Create a reference to the key in the key vault  
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS   
FROM PROVIDER [AzureKeyVault_EKM_Prov]  
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',  
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_COLUMNS;  
  
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_COLUMNS;  
  
--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;