SQL Server et clés de chiffrement de base de données (moteur de base de données)

SQL Server utilise des clés de chiffrement pour mieux sécuriser les données, les informations d'identification et les informations de connexion qui sont stockées dans une base de données du serveur. SQL Server a deux types de clés : des clés symétriques et asymétriques. Les clés symétriques utilisent le même mot de passe pour chiffrer et déchiffrer des données. Les clés asymétriques utilisent un premier mot de passe pour chiffrer des données (appelé clé publique) et un second mot de passe pour déchiffrer les données (appelé clé privée).

Dans SQL Server, les clés de chiffrement incluent une combinaison d'une clé publique, d'une clé privée et d'une clé symétrique, dont le but est de protéger les données sensibles. La clé symétrique est créée pendant l'initialisation de SQL Server, lorsque vous démarrez pour la première fois l'instance de SQL Server. Cette clé est utilisée par SQL Server pour chiffrer les données sensibles stockées dans SQL Server. Les clés publique et privée sont créées par le système d'exploitation et servent à protéger la clé symétrique. Une paire de clés privée et publique est créée pour chaque instance de SQL Server qui stocke des données sensibles dans une base de données.

Applications pour les clés SQL Server et de base de données

SQL Server a deux applications principales pour les clés : une clé principale de service (SMK) générée sur et pour une instance de SQL Server, et une clé principale de base de données (DMK) utilisée pour une base de données.

La clé SMK est générée automatiquement la première fois que l'instance de SQL Server est démarrée et utilisée pour chiffrer un mot de passe de serveur lié, des informations d'identification et la clé principale de base de données. La clé SMK est chiffrée en utilisant la clé de l'ordinateur local à l'aide de l'API de protection des données Windows (DPAPI). L'interface DPAPI utilise une clé dérivée des informations d'identification Windows du compte de service SQL Server et des informations d'identification de l'ordinateur. La clé principale de service peut être déchiffrée uniquement par le compte de service sous lequel elle a été créée ou par une entité de sécurité qui a accès aux informations d'identification de l'ordinateur.

La clé principale de base de données est une clé symétrique qui permet de protéger les clés privées des certificats et des clés asymétriques présentes dans la base de données. Elle peut également être utilisée pour chiffrer des données, mais elle présente des limitations de longueur qui la rendent moins pratique pour les données que l'utilisation d'une clé symétrique.

Lors de sa création, la clé principale est chiffrée à l'aide de l'algorithme Triple DES et d'un mot de passe fourni par l'utilisateur. Pour activer le déchiffrement automatique de la clé principale, une copie de la clé est chiffrée au moyen de la clé SMK. Elle est stockée à la fois dans la base de données où elle est utilisée et dans la base de données système master.

La copie de la clé DMK stockée dans la base de données système master est mise à jour silencieusement chaque fois que la clé DMK est modifiée. Toutefois, cette valeur par défaut peut être modifiée en utilisant l'option DROP ENCRYPTION BY SERVICE MASTER KEY de l'instruction ALTER MASTER KEY. Une clé DMK qui n'est pas chiffrée par la clé principale de service doit être ouverte à l'aide de l'instruction OPEN MASTER KEY et d'un mot de passe.

Gestion des clés SQL Server et de base de données

La gestion des clés de chiffrement consiste à créer de nouvelles clés de base de données, à créer une sauvegarde des clés de serveur et de base de données et à savoir quand et comment restaurer, supprimer et modifier les clés.

Pour gérer des clés symétriques, vous pouvez utiliser les outils inclus dans SQL Server pour effectuer les opérations suivantes :

  • Sauvegarde d'une copie des clés de serveur et de base de données permettant de les utiliser pour récupérer une installation de serveur ou dans le cadre d'une migration planifiée.

  • Restauration d'une clé précédemment enregistrée dans une base de données. Cela permet à une nouvelle instance de serveur d'accéder aux données existantes qu'elle n'a pas chiffrées à l'origine.

  • Suppression des données chiffrées d'une base de données au cas improbable où l'accès à ces données chiffrées se révélerait impossible.

  • Recréation de clés et nouveau chiffrement des données dans le cas improbable où la sécurité de la clé serait compromise. Comme meilleure pratique de sécurité, vous devez recréer les clés périodiquement (par exemple, tous les deux ou trois mois) pour protéger le serveur contre des attaques visant à déchiffrer les clés.

  • Ajout ou suppression d'une instance de serveur à partir d'un déploiement évolutif de serveur dans lequel plusieurs serveurs partagent une base de données unique et la clé qui fournit un chiffrement réversible pour cette base de données.

Informations de sécurité importantes

L'accès aux objets sécurisés par la clé principale du service requiert le compte de service SQL Server qui a permis de créer la clé ou le compte d'ordinateur (machine). Autrement dit, l'ordinateur est attaché au système dans lequel la clé a été créée. Vous pouvez modifier le compte de service SQL Serverou le compte d'ordinateur sans perdre l'accès à la clé. Toutefois, si vous modifiez les deux, vous perdrez l'accès à la clé principale de service. Si vous perdez l'accès à la clé principale de service sans un de ces deux éléments, vous ne pouvez pas déchiffrer les données et les objets chiffrés en utilisant la clé d'origine.

Les connexions sécurisées avec la clé principale de service ne peuvent pas être restaurées sans la clé principale de service.

L'accès à des objets et données sécurisés avec la clé principale de base de données requiert uniquement le mot de passe utilisé pour sécuriser la clé.

AttentionAttention

Si vous perdez tout accès aux clés décrites précédemment, vous perdez l'accès aux objets, connexions et données sécurisés par ces clés. Vous pouvez restaurer la clé principale de service, comme décrit dans les liens répertoriés ici, ou vous pouvez revenir au système de chiffrement d'origine pour récupérer l'accès. Il n'existe aucune « porte dérobée » pour récupérer l'accès.

Dans cette section