Configurer Transparent Data Encryption avec Azure Key Vault pour SQL Server

S'applique à :SQL Server

Dans cet article, vous installez et configurez le connecteur SQL Server pour Azure Key Vault, puis configurez Transparent Data Encryption (TDE) à l’aide d’une clé dans Azure Key Vault.

Prerequisites

Avant de commencer à utiliser Azure Key Vault avec votre instance de SQL Server, assurez-vous que vous remplissez les conditions préalables suivantes :

Note

Dans SQL Server 2022 (16.x) CU 12 et versions ultérieures, SQL Server sur Linux prend en charge TDE Extensible Key Management avec Azure Key Vault. Les étapes 3 et 4 de ce guide ne sont pas requises pour SQL Server sur Linux.

Flux rapide

  1. Sélectionnez un modèle d’authentification à l’étape 1 : configurez le modèle d’authentification.
  2. Créez un coffre de clés et une clé dans Étape 2 : créer un coffre de clés.
  3. Installez le connecteur à l’étape 3 : installez le connecteur SQL Server.
  4. Configurez le prérequis du registre dans l’étape 4 : ajoutez la clé de registre pour prendre en charge le fournisseur EKM.
  5. Configurez SQL Server et validez le chiffrement à l’étape 5 : Configurer SQL Server.

Étape 1 : Configurer le modèle d’authentification

Important

Choisissez votre modèle d’authentification avant de continuer :

  • Utilisez l’onglet Principal du service pour SQL Server localement.
  • Utilisez l’onglet Identité managée pour SQL Server sur les machines virtuelles Azure ou les SQL Server activés par Azure Arc, où l’identité managée est prise en charge.

Matrice de prise en charge du modèle d’authentification :

Modèle d’authentification Version de SQL Server Où SQL Server s’exécute Soutenu
Service Principal Versions prises en charge couvertes par cet article Machine virtuelle Azure locale, SQL Server activée par Azure Arc Oui
Identité gérée SQL Server 2022 CU17 et versions ultérieures La machine virtuelle Azure Oui
Identité gérée SQL Server 2025 et versions ultérieures SQL Server activé par Azure Arc Oui
Identité gérée Any On-premises Non

Pour accorder à votre instance SQL Server des autorisations d'accès à votre coffre de clés Azure, vous avez besoin d'un compte de principal de service dans Microsoft Entra ID.

  1. Connectez-vous au portail Azure et effectuez l’une des étapes suivantes :

    • Sélectionnez le bouton Microsoft Entra ID.

      Capture d'écran du volet services Azure.

    • Sélectionnez Plus de services, puis, dans le volet Tous les services, saisissez Microsoft Entra ID.

  2. Inscrivez une application auprès de Microsoft Entra ID en procédant comme suit. Pour obtenir des instructions étape par étape, consultez la section Obtenir une identité pour l’application du billet de blog Azure Key Vault, Azure Key Vault – Étape par étape.

    1. Dans la section Gestion de votre ressource Microsoft Entra ID, sélectionnez Inscriptions d’applications.

      Capture d'écran de la page de présentation de Microsoft Entra ID dans le portail Azure.

    2. Sur la page Inscriptions d’applications, sélectionnez Nouvelle inscription.

      Capture d’écran du volet des inscriptions d’applications dans le portail Azure.

    3. Dans le volet Inscrire une application, entrez le nom de l'application pour l'utilisateur, puis sélectionnez Inscrire.

      Capture d'écran du volet « Inscrire une application ».

    4. Dans le volet gauche, sélectionnez Certificats et secrets>Secrets client>Nouveau secret client.

      Capture d’écran du volet Certificats et secrets pour l’application dans le portail Azure.

    5. Sous Ajoutez une clé secrète client, entrez une description et une date d’expiration appropriée, puis sélectionnez Ajouter. Vous ne pouvez pas choisir une période d'expiration supérieure à 24 mois. Pour plus d’informations, consultez Ajouter une clé secrète client.

      Capture d’écran de la section Ajouter une clé secrète client pour l’application dans le portail Azure.

    6. Dans le volet Certificats et secrets, sous Valeur, sélectionnez le bouton Copier en regard de la valeur de la clé secrète client pour l’utiliser pour créer une clé asymétrique dans SQL Server.

      Capture d’écran de la valeur d’un secret dans le portail Azure.

    7. Dans le volet gauche, sélectionnez Vue d’ensemble, puis, dans la zone ID d’application (client), copiez la valeur à utiliser pour créer une clé asymétrique dans SQL Server.

      Capture d'écran de l'« ID de l'application (client) » dans le volet Vue d'ensemble.

Étape 2 : créer un coffre de clés

Sélectionnez la méthode que vous souhaitez utiliser pour créer un coffre de clés.

Note

Seuls Azure Key Vault et Azure Key Vault Managed HSM sont pris en charge. Azure Cloud HSM n’est pas pris en charge.

Créez un coffre de clés à l’aide du Portail Azure

Pour créer un coffre de clés à l’aide du portail Azure, consultez Démarrage rapide : Créer un coffre de clés à l’aide du portail Azure.

Azure contrôle d’accès en fonction du rôle

Utilisez Azure contrôle d’accès en fonction du rôle (RBAC) pour gérer l’accès au Azure Key Vault. N’utilisez pas de stratégies d’accès héritées. Les stratégies d'accès héritées présentent des vulnérabilités de sécurité connues, ne prennent pas en charge Privileged Identity Management (PIM) et ne doivent pas être utilisées pour les données et charges de travail critiques. Pour plus d’informations sur les autorisations RBAC d’Azure Key Vault, consultez Rôles intégrés Azure pour les opérations du plan de données de Key Vault.

  1. Accédez à la ressource du coffre de clés que vous avez créée, puis sélectionnez le paramètre Contrôle d’accès (IAM).

  2. Sélectionnez Ajouter>Ajouter une attribution de rôle.

    Capture d’écran du bouton Ajouter une attribution de rôle dans le volet Contrôle d’accès (IAM) du portail Azure.

  3. L’application EKM ou l’identité managée doit disposer du rôle Utilisateur du chiffrement du service de chiffrement Key Vault pour effectuer des opérations d’encapsulation et de désencapsulation. Rechercher Utilisateur du service de chiffrement Key Vault et sélectionnez le rôle. Sélectionnez Suivant.

    Capture d’écran de la sélection d’une attribution de rôle dans le portail Azure.

  4. Dans l’onglet Membres, sélectionnez l’option Sélectionner les membres, puis recherchez l’application Microsoft Entra ou l’identité managée que vous avez créée à l’étape 1. Sélectionnez l’application ou l’identité managée, puis le bouton Sélectionner .

    Capture d’écran du volet Sélectionner des membres pour l’ajout d’une attribution de rôle dans le portail Azure.

  5. Sélectionnez Vérifier + attribuer deux fois pour terminer l’attribution de rôle.

Créer une clé

L’utilisateur qui crée la clé a besoin du rôle Administrateur de coffre de clés. Comme pour les étapes précédentes, ajoutez le membre qui crée la clé et attribuez-lui le rôle.

  1. Dans le volet Coffre de clés, sélectionnez Clés, puis l’option Générer/Importer. Cette action ouvre le volet Créer une clé . Sélectionnez l’option Générer et entrez un nom pour la clé. Le connecteur SQL Server exige que le nom de clé utilise uniquement les caractères « a-z », « A-Z », « 0-9 » et « - », avec une limite de 26 caractères.

  2. Utilisez le type de clé RSA et la taille de clé RSA2048. Actuellement, EKM ne prend en charge que les clés RSA. Définissez les dates d’activation et d’expiration comme il convient et définissez Activé sur Oui.

    Capture d'écran du volet « Créer une clé ».

Configurer un HSM managé Azure Key Vault (facultatif)

Azure Key Vault Managed HSM (module de sécurité matérielle) prend en charge SQL Server et SQL Server sur Azure Virtual Machines (VM) lorsque vous utilisez la dernière version du connecteur SQL Server, ainsi qu’Azure SQL. Le HSM géré est un service HSM entièrement géré, hautement disponible et monolocataire. Le HSM managé offre une base sécurisée pour les opérations de chiffrement et le stockage de clés. Le HSM managé est conçu pour répondre aux exigences de sécurité et de conformité les plus strictes.

L’étape 2 montre comment créer un coffre de clés et une clé dans Azure Key Vault. Vous pouvez éventuellement utiliser un HSM managé Azure Key Vault pour stocker ou créer une clé pour le connecteur SQL Server. Suivez ces étapes :

  1. Créez un HSM managé Azure Key Vault à l’aide du portail Azure, de l’Azure CLI, de PowerShell ou d’un modèle ARM.

  2. Activez le HSM managé. Seuls les administrateurs désignés affectés pendant la création peuvent l’activer. Dans le portail Azure, sélectionnez la ressource HSM managée, puis téléchargez le domaine de sécurité dans le menu Vue d’ensemble. Suivez l’un des guides de démarrage rapide pour activer votre HSM managé.

  3. Accordez au principal de service Microsoft Entra ou à l’identité managée les autorisations nécessaires pour accéder au HSM managé. Le rôle Administrateur du HSM managé ne donne pas d’autorisations pour créer une clé. Comme à l’étape 2, l’application EKM ou l’identité managée a besoin du rôle Utilisateur de chiffrement HSM managé ou utilisateur de chiffrement du service de chiffrement HSM managé pour effectuer des opérations de wrap et de décompressage. Pour plus d’informations, consultez Rôles RBAC locaux intégrés pour HSM managé.

  4. Dans le menu du service HSM managé par Azure Key Vault, sous Paramètre, sélectionnez Clés. Dans la fenêtre Clés, sélectionnez Générer/Importer/Restaurer la sauvegarde pour créer une clé ou importer une clé existante.

    Note

    Les algorithmes RSA-HSM_2048 et RSA-HSM_3072 sont pris en charge à partir de SQL Server 2022 (16.x) Mise à jour cumulative 13.

    Azure Key Vault HSM managé prend en charge la rotation automatique des clés. Pour plus d’informations, consultez Configurer la rotation automatique des clés dans Azure Managed HSM.

    HSM géré prend en charge les connexions à des points de terminaison privés. Si vous souhaitez obtenir plus d’informations, consultez Intégrer HSM managé avec Azure Private Link. Dans cette configuration, vous devez activer l’option de contournement de service approuvé Microsoft dans le paramètre de mise en réseau HSM managée Azure Key Vault.

Étape 3 : Installer le connecteur SQL Server

Demandez à un administrateur SQL Server de télécharger la dernière version du connecteur SQL Server pour Microsoft Azure Key Vault depuis le Centre de téléchargement Microsoft et d’exécuter le programme d’installation.

Capture d'écran de l'assistant d'installation du connecteur SQL Server.

Par défaut, le connecteur est installé sur C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Vous pouvez modifier cet emplacement lors de l’installation. Si vous la modifiez, ajustez les scripts dans la section suivante.

Une installation réussie place Microsoft.AzureKeyVaultService.EKM.dll sur l’ordinateur. Ce composant est la DLL du fournisseur EKM cryptographique. Inscrivez-la avec SQL Server à l’aide de l’instructionCREATE CRYPTOGRAPHIC PROVIDER.

Le programme d’installation propose également des exemples de scripts pour le chiffrement SQL Server.

Pour obtenir des explications de code d’erreur, des paramètres de configuration ou des tâches de maintenance, consultez :

Étape 4 : Ajouter une clé de Registre pour prendre en charge le fournisseur EKM

Warning

Seul un administrateur SQL Server qui sait exactement ce qu'il fait doit modifier le Registre. Des modifications incorrectes peuvent entraîner des problèmes graves. Sauvegardez le Registre avant d’apporter des modifications afin de pouvoir le restaurer en cas de problème.

  1. Exécutez regedit pour ouvrir l'éditeur du Registre.

  2. Créez une SQL Server Cryptographic Provider clé de Registre à l’adresse HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  3. Cliquez avec le bouton droit sur la clé de Registre SQL Server Cryptographic Provider, puis sélectionnez Autorisations.

  4. Accordez un contrôle total sur la SQL Server Cryptographic Provider clé au compte d’utilisateur exécutant le service SQL Server.

    Capture d'écran de la clé de Registre EKM dans l'« Éditeur du Registre ».

  5. Sélectionnez Apply (Appliquer), puis OK.

  6. Fermez l'Éditeur du Registre et redémarrez le service SQL Server.

    Note

    Si vous utilisez TDE avec EKM ou Azure Key Vault sur une instance de cluster de basculement, ajoutez également HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider à la routine de point de contrôle du registre de cluster afin que le registre soit synchronisé entre les nœuds, ce qui facilite la récupération de la base de données après le basculement et la rotation des clés.

    Exécutez la commande PowerShell suivante pour ajouter la clé de Registre à la routine de point de contrôle :

    Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
    

Étape 5 : Configurer SQL Server

Pour une remarque sur les niveaux d’autorisation minimaux nécessaires pour chaque action de cette section, voir B. Questions fréquentes.

Phase 1 : Configurer le fournisseur de chiffrement et les informations d’identification dans master

Choisissez votre modèle d’authentification et suivez les étapes correspondantes.

  1. Exécutez sqlcmd ou ouvrez SQL Server Management Studio.

  2. Configurez SQL Server pour utiliser EKM en exécutant le script Transact-SQL suivant :

    -- Enable advanced options.
    USE master;
    GO
    
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXEC sp_configure 'EKM provider enabled', 1;
    GO
    RECONFIGURE;
    
  3. Enregistrez le connecteur SQL Server en tant que fournisseur EKM avec SQL Server.

    Créez un fournisseur de services de chiffrement à l’aide du connecteur SQL Server, qui est un fournisseur EKM pour Azure Key Vault. Dans cet exemple, le nom du fournisseur est AzureKeyVault_EKM.

    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM
    FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
    GO
    

    Note

    Le chemin d’accès ne peut pas dépasser 256 caractères.

  4. Configurez des identifiants SQL Server pour un compte de connexion SQL Server afin d'utiliser le coffre de clés.

    Ajoutez des informations d’identification à chaque connexion qui effectue le chiffrement à l’aide d’une clé à partir du coffre de clés. Il existe un mappage un-à-un entre les informations d’identification et les connexions. Chaque connexion doit avoir des informations d’identification uniques.

    Modifiez ce script Transact-SQL de la manière suivante :

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

    • Remplacez la première partie de l’argument SECRET par l’ID client Microsoft Entra de l’étape 1 : configurez le modèle d’authentification. Dans cet exemple, l’ID client est d956f6b9xxxxxxx.

      Important

      Supprimez les traits d’union de l’ID d’application (client).

    • Terminez la deuxième partie de l’argument SECRET avec le secret client de l’étape 1. La chaîne finale est une longue séquence de lettres et de chiffres sans traits d’union (à l’exception des traits d’union dans la clé secrète client elle-même).

    USE master;
    CREATE CREDENTIAL sysadmin_ekm_cred
       -- Set IDENTITY to the vault name (public Azure) or full vault hostname without https:// (sovereign clouds / Managed HSM)
       -- See https://dotnet.territoriali.olinfo.it/azure/key-vault/general/about-keys-secrets-certificates#dns-suffixes-for-base-url
       WITH IDENTITY = 'DocsSampleEKMKeyVault',
             --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret-->
       SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
    -- Add the credential to the SQL Server administrator's domain login
    ALTER LOGIN [<domain>\<login>]
        ADD CREDENTIAL sysadmin_ekm_cred;
    

    Pour obtenir un exemple d’utilisation de variables et de suppression programmatique des traits d’union de l’ID client, consultez CREATE CREDENTIAL.

  5. Ouvrez la clé Azure Key Vault dans votre instance de SQL Server.

    Que vous ayez créé une clé ou importé une clé asymétrique à l’étape 2 : Créez un coffre de clés, ouvrez la clé dans SQL Server à l’aide CREATE ASYMMETRIC KEYde .

    Important

    Remplissez les conditions préalables au Registre avant d’effectuer cette étape.

    Dans les exemples suivants :

    • Remplacez EKMSampleASYKey par le nom que vous souhaitez utiliser dans SQL Server.
    • Remplacez ContosoRSAKey0 par le nom de votre clé dans Azure Key Vault ou le HSM managé.

    Utilisez un nom de clé sans version (recommandé pour la plupart des scénarios) :

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    Utilisez une version spécifique d’une clé lorsque vous devez épingler des opérations à une version :

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    Dans cet exemple, 1a4d3b9b393c4678831ccc60def75379 est la version de clé spécifique que SQL Server utilise pour les opérations de base de données.

  6. Créez une connexion à l'aide de la clé asymétrique dans SQL Server que vous avez créée à l'étape précédente.

    -- Create a login that associates the asymmetric key with this login
    CREATE LOGIN TDE_Login
        FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Déplacez le mappage des informations d’identification de la connexion administrateur d’origine vers la connexion créée à partir de la clé asymétrique.

    SQL Server utilise la connexion créée à partir de la clé asymétrique (TDE_Login) pour les opérations EKM. Pour vous assurer que SQL Server puisse accéder à Azure Key Vault pendant les opérations de chiffrement et de récupération, associez les informations d’identification à TDE_Login au lieu du compte de connexion d’installation d’origine.

    -- Remove the service principal credential from the original setup login
    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL sysadmin_ekm_cred;
    
    -- Map the service principal credential to the login created from the asymmetric key
    ALTER LOGIN TDE_Login
       ADD CREDENTIAL sysadmin_ekm_cred;
    

Phase 2 : Chiffrer et valider la base de données utilisateur

Configurer la base de données utilisateur à chiffrer

  1. Créez une base de données de test à chiffrer à l’aide de la clé Azure Key Vault.

    -- Create a test database for the TDE example.
    CREATE DATABASE TestTDE;
    
  2. Créez une clé de chiffrement de base de données à l’aide de la clé asymétrique du serveur (EKMSampleASYKey).

    USE TestTDE;
    -- Create a DEK protected by the EKM asymmetric key.
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
    
  3. Activez TDE sur la base de données en définissant ENCRYPTION ON.

    -- Enable TDE for the database.
    ALTER DATABASE TestTDE
        SET ENCRYPTION ON;
    

Vérifier l’utilisation des clés et l’état du chiffrement

  1. Dans la master base de données, exécutez la requête Transact-SQL suivante pour vérifier que la clé asymétrique EKM existe et capturez son empreinte numérique.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys;
    

    L’instruction retourne une sortie similaire à ce qui suit :

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. Dans la base de données utilisateur (TestTDE), exécutez la requête Transact-SQL suivante pour vérifier que TDE est activé et que la clé de chiffrement de base de données est protégée par une clé asymétrique.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('TestTDE');
    

    L’instruction retourne une sortie similaire à ce qui suit :

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

    Vérifiez que encryptor_thumbprint correspond à l’empreinte renvoyée par sys.asymmetric_keys. Une incompatibilité indique généralement que la clé de chiffrement de base de données est protégée par une clé différente de celle attendue.

Nettoyage

Utilisez les étapes de nettoyage qui correspondent au modèle d’authentification que vous avez configuré.

  1. Nettoyez les objets de test que vous avez créés dans cette procédure.

    -- CLEAN UP: shared objects + service principal credential
    USE master;
    GO
    ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE [TestTDE];
    GO
    
    DROP LOGIN [TDE_Login];
    GO
    
    DROP ASYMMETRIC KEY [EKMSampleASYKey];
    DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM];
    GO
    
    DROP CREDENTIAL [sysadmin_ekm_cred];
    GO
    
  2. Vérifiez si vous devez supprimer la clé de SQL Server Cryptographic Provider Registre.

    Important

    La SQL Server Cryptographic Provider clé de Registre n'est pas supprimée automatiquement après la suppression des clés EKM.

    Supprimez cette clé de Registre uniquement lorsque vous n’avez plus besoin d’EKM sur l’instance. Le supprimer trop tôt peut perturber le fonctionnement d’EKM et les opérations de récupération.

    Chemin du registre : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider

Faire pivoter des clés asymétriques pour TDE avec Azure Key Vault

Utilisez un guide opérationnel dédié pour les étapes de rotation clés, notamment les scripts spécifiques à l’authentification, la vérification et les vérifications de sécurité :

Important

Ne supprimez pas les versions précédentes de la clé après une rotation. Les versions antérieures peuvent toujours être requises pour restaurer des sauvegardes, des fichiers journaux et des artefacts de récupération plus anciens.