Utiliser le connecteur SQL Server avec les fonctionnalités de chiffrement SQLUse SQL Server Connector with SQL Encryption Features

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Les activités de chiffrement SQL ServerSQL Server courantes à l’aide d’une clé asymétrique protégée par le coffre Azure Key Vault incluent les trois domaines suivants.Common SQL ServerSQL Server encryption activities using an asymmetric key protected by the Azure Key Vault include the following three areas.

  • Chiffrement TDE (Transparent Data Encryption) à l’aide d’une clé asymétrique dans Azure Key VaultTransparent Data Encryption by using an Asymmetric Key from Azure Key Vault

  • Chiffrement des sauvegardes à l'aide d'une clé asymétrique du coffre de clésEncrypting Backups by Using an Asymmetric Key from the Key Vault

  • Chiffrement au niveau colonne à l’aide d’une clé asymétrique dans le coffre de clésColumn Level Encryption by Using an Asymmetric Key from the Key Vault

Exécutez les parties I à IV de la rubrique Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vaultavant de suivre les étapes de cette rubrique.Complete parts I through IV of the topic Setup Steps for Extensible Key Management Using the Azure Key Vault, before following the steps on this topic.

Notes

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.Versions 1.0.0.440 and older have been replaced and are no longer supported in production environments. Effectuez la mise à niveau vers la version 1.0.1.0 ou ultérieure en accédant au Centre de téléchargement Microsoft et en utilisant les instructions fournies dans la page Résolution des problèmes et maintenance du connecteur SQL Server sous « Mise à niveau du connecteur SQL Server ».Upgrade to version 1.0.1.0 or later by visiting the Microsoft Download Center and using the instructions on the SQL Server Connector Maintenance & Troubleshooting page under "Upgrade of SQL Server Connector."

Chiffrement TDE (Transparent Data Encryption) à l’aide d’une clé asymétrique dans Azure Key VaultTransparent Data Encryption by using an Asymmetric Key from Azure Key Vault

Une fois les parties I à IV de la rubrique Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vault terminées, utilisez la clé Azure Key Vault pour chiffrer la clé de chiffrement de base de données à l’aide du chiffrement TDE.After completing Parts I through IV of the topic Setup Steps for Extensible Key Management Using the Azure Key Vault, use the Azure Key Vault key to encrypt the database encryption key using TDE. Pour plus d’informations sur la rotation des clés à l’aide de PowerShell, consultez Effectuer une rotation du protecteur TDE (Transparent Data Encryption) à l’aide de PowerShell.For more information about rotating keys using PowerShell, see Rotate the Transparent Data Encryption (TDE) protector using PowerShell.

Vous devez créer des informations d’identification et une 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.You will need to create a credential and a login, and create a database encryption key which will encrypt the data and logs in the database. Pour chiffrer une base de données, l’autorisation CONTROL sur la base de données est exigée.To encrypt a database requires CONTROL permission on the database. Le graphique suivant montre la hiérarchie de la clé de chiffrement lors de l’utilisation du coffre Azure Key Vault.The following graphic shows the hierarchy of the encryption key when using the Azure Key Vault.

ekm-key-hierarchy-with-akvekm-key-hierarchy-with-akv

  1. Créer des informations d’identification SQL ServerSQL Server pour le moteur de base de données à utiliser pour le chiffrement TDECreate a SQL ServerSQL Server credential for the Database Engine to use for TDE

    Le moteur de base de données utilise les informations d’identification pour accéder au coffre de clés pendant le chargement de la base de données.The Database Engine uses the credential to access the Key Vault during database load. Nous vous recommandons de créer un autre ID client et une autre clé secrète Azure Active Directory dans la Partie I pour le Moteur de base de donnéesDatabase Engine, afin de limiter les autorisations de coffre de clés accordées.We recommend creating another Azure Active Directory Client ID and Secret in Part I for the Moteur de base de donnéesDatabase Engine, to limit the Key Vault permissions that are granted.

    Modifiez le script Transact-SQLTransact-SQL ci-dessous comme suit :Modify the Transact-SQLTransact-SQL script below in the following ways:

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

      • Si vous utilisez Azure global, remplacez l’argument IDENTITY par le nom de votre coffre Azure Key Vault de la Partie II.If you're using global Azure, replace the IDENTITY argument with the name of your Azure Key Vault from Part II.
      • Si vous utilisez un cloud privé Azure (par exemple,If you're using a private Azure cloud (ex. Azure Government, Azure Chine 21Vianet ou Azure Allemagne), remplacez l’argument IDENTITY par l’URI du coffre renvoyée à l’étape 3 de la Partie II.Azure Government, Azure China 21Vianet, or Azure Germany), replace the IDENTITY argument with the Vault URI that is returned in Part II, step 3. N’incluez pas « https:// » dans l’URI du coffre.Do not include "https://" in the Vault URI.
    • Remplacez la première partie de l’argument SECRET par l’ ID client Azure Active Directory mentionné dans la Partie I. Dans cet exemple, l’ ID client est EF5C8E094D2A4A769998D93440D8115D.Replace the first part of the SECRET argument with the Azure Active Directory Client ID from Part I. In this example, the Client ID is EF5C8E094D2A4A769998D93440D8115D.

      Important

      Vous devez supprimer les tirets de l’ ID client.You must remove the hyphens from the Client ID.

    • Complétez la deuxième partie de l’argument SECRET avec la clé secrète client mentionnée dans la Partie I. Dans cet exemple, la clé secrète client de la Partie I est Replace-With-AAD-Client-Secret.Complete the second part of the SECRET argument with Client Secret from Part I. In this example the Client Secret from Part 1 is Replace-With-AAD-Client-Secret. La chaîne finale pour l’argument SECRET est une longue séquence de lettres et de chiffres, sans tirets.The final string for the SECRET argument will be a long sequence of letters and numbers, with no hyphens.

    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 Azure China 21Vianet
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;  
    
  2. Créer une connexion SQL ServerSQL Server pour le Moteur de base de donnéesDatabase Engine pour le chiffrement TDECreate a SQL ServerSQL Server login for the Moteur de base de donnéesDatabase Engine for TDE

    Créez une connexion SQL ServerSQL Server et ajoutez les informations d’identification mentionnées à l’étape 1.Create a SQL ServerSQL Server login and add the credential from Step 1 to it. Cet exemple Transact-SQLTransact-SQL utilise la même clé que celle importée précédemment.This Transact-SQLTransact-SQL example uses the same key that was imported earlier.

    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 base de données (DEK)Create the Database Encryption Key (DEK)

    La clé DEK chiffre vos données et vos fichiers journaux dans l’instance de base de données et est, à son tour, chiffrée par la clé asymétrique Azure Key Vault.The DEK will encrypt your data and log files in the database instance, and in turn be encrypted by the Azure Key Vault asymmetric key. Elle peut être créée à l’aide de n’importe quel algorithme ou longueur de clé pris en charge par SQL ServerSQL Server .The DEK can be created using any SQL ServerSQL Server supported algorithm or key length.

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

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

    À l’aide de Management StudioManagement Studio, vérifiez que le chiffrement TDE a été activé en vous connectant à votre base de données avec l’Explorateur d’objets.Using Management StudioManagement Studio, verify that TDE has been turned on by connecting to your database with Object Explorer. Cliquez avec le bouton droit sur votre base de données, pointez sur Tâches, puis cliquez sur Gérer le chiffrement de base de données.Right-click your database, point to Tasks, and then click Manage Database Encryption.

    ekm-tde-object-explorerekm-tde-object-explorer

    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.In the Manage Database Encryption dialog box, confirm that TDE is on, and what asymmetric key is encrypting the DEK.

    ekm-tde-dialog-boxekm-tde-dialog-box

    Vous pouvez aussi exécuter le script Transact-SQLTransact-SQL suivant.Alternatively, you can execute the following Transact-SQLTransact-SQL script. Un état de chiffrement de 3 indique une base de données.An encryption state of 3 indicates an encrypted database.

    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;  
    

    Notes

    La base de données tempdb est chiffrée automatiquement chaque fois qu’une base de données permet le chiffrement TDE.The tempdb database is automatically encrypted whenever any database enables TDE.

Chiffrement des sauvegardes à l'aide d'une clé asymétrique du coffre de clésEncrypting Backups by Using an Asymmetric Key from the Key Vault

Les sauvegardes chiffrées sont prises en charge à partir de SQL Server 2014 (12.x)SQL Server 2014 (12.x).Encrypted backups are supported starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x). L'exemple suivant crée et restaure une sauvegarde chiffrée avec une clé de chiffrement de données protégée par la clé asymétrique dans le coffre de clés.The following example creates and restores a backup encrypted a data encryption key protected by the asymmetric key in the key vault.
Le Moteur de base de donnéesDatabase Engine a besoin des informations d’identification lors de l’accès au coffre de clés pendant le chargement de la base de données.The Moteur de base de donnéesDatabase Engine needs the credential when accessing the Key Vault during database load. Nous vous recommandons de créer un autre ID client et une autre clé secrète Azure Active Directory dans la Partie I pour le moteur de base de données, afin de limiter les autorisations de coffre de clés accordées.We recommend creating another Azure Active Directory Client ID and Secret in Part I for the Database Engine, to limit the Key Vault permissions that are granted.

  1. Créer des informations d’identification SQL Server pour le moteur de base de données à utiliser pour le chiffrement de sauvegardeCreate a SQL Server credential for the Database Engine to use for Backup Encryption

    Modifiez le script Transact-SQLTransact-SQL ci-dessous comme suit :Modify the Transact-SQLTransact-SQL script below in the following ways:

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

      • Si vous utilisez Azure global, remplacez l’argument IDENTITY par le nom de votre coffre Azure Key Vault de la Partie II.If you're using global Azure, replace the IDENTITY argument with the name of your Azure Key Vault from Part II.
      • Si vous utilisez un cloud privé Azure (par exemple,If you're using a private Azure cloud (ex. Azure Government, Azure Chine 21Vianet ou Azure Allemagne), remplacez l’argument IDENTITY par l’URI du coffre renvoyée à l’étape 3 de la Partie II.Azure Government, Azure China 21Vianet, or Azure Germany), replace the IDENTITY argument with the Vault URI that is returned in Part II, step 3. N’incluez pas « https:// » dans l’URI du coffre.Do not include "https://" in the Vault URI.
    • Remplacez la première partie de l’argument SECRET par l’ ID client Azure Active Directory mentionné dans la Partie I. Dans cet exemple, l’ ID client est EF5C8E094D2A4A769998D93440D8115D.Replace the first part of the SECRET argument with the Azure Active Directory Client ID from Part I. In this example, the Client ID is EF5C8E094D2A4A769998D93440D8115D.

      Important

      Vous devez supprimer les tirets de l’ ID client.You must remove the hyphens from the Client ID.

    • Complétez la deuxième partie de l’argument SECRET avec la clé secrète client mentionnée dans la Partie I. Dans cet exemple, la clé secrète client de la Partie I est Replace-With-AAD-Client-Secret.Complete the second part of the SECRET argument with Client Secret from Part I. In this example the Client Secret from Part I is Replace-With-AAD-Client-Secret. La chaîne finale pour l’argument SECRET est une longue séquence de lettres et de chiffres, sans tirets.The final string for the SECRET argument will be a long sequence of letters and numbers, with no hyphens.

      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 Azure China 21Vianet
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
          SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
      FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;    
      
  2. Créer une connexion SQL ServerSQL Server pour le Moteur de base de donnéesDatabase Engine pour le chiffrement de sauvegardeCreate a SQL ServerSQL Server login for the Moteur de base de donnéesDatabase Engine for Backup Encryption

    Créez une connexion SQL ServerSQL Server à utiliser par le Moteur de base de donnéesDatabase Enginepour les sauvegardes de chiffrement, puis ajoutez les informations d’identification mentionnées à l’étape 1.Create a SQL ServerSQL Server login to be used by the Moteur de base de donnéesDatabase Enginee for encryption backups, and add the credential from Step 1 to it. Cet exemple Transact-SQLTransact-SQL utilise la même clé que celle importée précédemment.This Transact-SQLTransact-SQL example uses the same key that was imported earlier.

    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 chiffrement TDE (l’exemple ci-dessus) ou pour le chiffrement au niveau des colonnes (l’exemple suivant).You cannot use the same asymmetric key for backup encryption if you've already used that key for TDE (the above example) or column level Encryption (the following example).

    Cet exemple utilise la clé asymétrique CONTOSO_KEY_BACKUP stockée dans le coffre de clés, qui peut être préalablement importée ou créée pour la base de données MASTER, comme décrit à l’étape 5 de la Partie IV.This example uses the CONTOSO_KEY_BACKUP asymmetric key stored in the key vault, which can be imported or created earlier for the master database, as Part IV, Step 5 earlier.

    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. Sauvegarder la base de donnéesBackup the Database

    Sauvegardez la base de données en spécifiant le chiffrement avec la clé asymétrique stockée dans le coffre de clés.Backup the database specifying encryption with the asymmetric key stored in the key vault.

    Dans l’exemple ci-dessous, notez que si la base de données a déjà été chiffrée avec TDE et que la clé asymétrique CONTOSO_KEY_BACKUP est différente de la clé asymétrique TDE, la sauvegarde sera chiffrée à la fois par la clé asymétrique TDE et par CONTOSO_KEY_BACKUP.In the below example, note that if the database was already encrypted with TDE, and the asymmetric key CONTOSO_KEY_BACKUP is different from the TDE asymmetric key, the backup will be encrypted by both the TDE asymmetric key and CONTOSO_KEY_BACKUP. L’instance de SQL ServerSQL Server cible aura besoin des deux clés pour déchiffrer la sauvegarde.The target SQL ServerSQL Server instance will need both keys in order to decrypt the backup.

    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éesRestore the Database

    Pour restaurer une sauvegarde de base de données chiffrée avec TDE, l’instance de SQL ServerSQL Server cible doit tout d’abord avoir une copie de la clé Key Vault asymétrique utilisée pour le chiffrement.To restore a database backup that is encrypted with TDE, the target SQL ServerSQL Server instance must first have a copy of the asymmetric Key Vault key used for encryption. Voici comment procéder :This is how this would be achieved:

    • Si la clé asymétrique d’origine utilisée pour le chiffrement TDE n’est plus dans Key Vault, restaurez la sauvegarde de clé Key Vault ou réimportez la clé à partir d’un module HSM local.If the original asymmetric key used for TDE is no longer in Key Vault, restore the Key Vault key backup or reimport the key from a local HSM. Important : Pour que l’empreinte numérique de la clé corresponde à celle enregistrée dans la sauvegarde de base de données, la clé doit avoir le même nom que la clé Key Vault, comme c’était le cas initialement.Important: In order to have the key's thumbprint match the thumbprint recorded on the database backup, the key must be named the same Key Vault key name as it was originally named before.

    • Appliquez les étapes 1 et 2 sur l’instance de SQL ServerSQL Server cible.Apply Steps 1 and 2 on the target SQL ServerSQL Server instance.

    • Une fois que l’instance de SQL ServerSQL Server cible a accès aux clés asymétriques utilisées pour chiffrer la sauvegarde, restaurez la base de données sur le serveur.Once the target SQL ServerSQL Server instance has access to the asymmetric key(s) used to encrypt the backup, restore the database on the server.

    Exemple de code de restauration :Sample restore code:

    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).For more information about backup options, see BACKUP (Transact-SQL).

Chiffrement au niveau colonne à l’aide d’une clé asymétrique dans le coffre de clésColumn Level Encryption by Using an Asymmetric Key from the 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.The following example creates a symmetric key protected by the asymmetric key in the key vault. La clé symétrique est ensuite utilisée pour chiffrer les données de la base de données.Then the symmetric key is used to encrypt data in the database.

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 chiffrement TDE ou pour le chiffrement de sauvegarde (les exemples précédents).You cannot use the same asymmetric key for backup encryption if you've already used that key for TDE or backup encryption (the preceding examples).

Cet exemple utilise la clé asymétrique CONTOSO_KEY_COLUMNS stockée dans le coffre de clés, qui peut être préalablement importée ou créée, comme décrit à l’étape 3 de la Partie II de la rubrique Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vault.This example uses the CONTOSO_KEY_COLUMNS asymmetric key stored in the key vault, which can be imported or created earlier, as described in Step 3, section 3 of Setup Steps for Extensible Key Management Using the Azure Key Vault. Pour utiliser cette clé asymétrique dans la base de données ContosoDatabase , vous devez réexécuter l’instruction CREATE ASYMMETRIC KEY pour fournir à la base de données ContosoDatabase avec une référence à la clé.To use this asymmetric key in the ContosoDatabase database, you must execute the CREATE ASYMMETRIC KEY statement again, to provide the ContosoDatabase database with a reference to the key.

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;  

Voir aussiSee Also

Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vault Setup Steps for Extensible Key Management Using the Azure Key Vault
Gestion de clés extensible à l'aide d'Azure Key VaultExtensible Key Management Using Azure Key Vault
Fournisseur EKM activé (option de configuration de serveur) EKM provider enabled Server Configuration Option
Résolution des problèmes et maintenance du connecteur SQL ServerSQL Server Connector Maintenance & Troubleshooting