Présentation du chiffrement transparent des données (TDE)

Vous pouvez prendre plusieurs précautions pour mieux sécuriser la base de données comme par exemple concevoir un système sécurisé, chiffrer les ressources confidentielles et créer un pare-feu autour des serveurs de base de données. Toutefois, dans un scénario où le support physique (tel que des lecteurs ou des bandes de sauvegarde) est dérobé, une personne malveillante peut simplement restaurer ou attacher la base de données et parcourir les données. Une solution consiste à chiffrer les données sensibles dans la base de données et à protéger les clés utilisées pour chiffrer les données avec un certificat. Cela empêche toute personne qui ne dispose pas des clés d'utiliser les données, mais ce type de protection doit être planifié à l'avance.

Le chiffrement transparent des données (TDE, Transparent Data Encryption) effectue le chiffrement et le déchiffrement d'E/S en temps réel des données et des fichiers journaux. Le chiffrement utilise une clé de chiffrement de base de données (DEK), stockée dans l'enregistrement de démarrage de base de données pour être disponible pendant la récupération. La clé de chiffrement de base de données est une clé symétrique sécurisée à l'aide d'un certificat stocké dans la base de données MASTER du serveur ou une clé asymétrique protégée par un module EKM. Le chiffrement transparent des données protège les données « au repos », autrement dit les fichiers de données et les fichiers journaux. Il permet de se conformer à de nombreuses lois, règles et instructions établies dans différents secteurs professionnels. Cela permet aux développeurs de logiciels de chiffrer des données à l'aide des algorithmes de chiffrement AES et 3DES sans modifier les applications existantes.

Important

Le chiffrement transparent des données ne permet pas le chiffrement via des canaux de communication. Pour plus d'informations sur la manière de chiffrer des données via des canaux de communication, consultez Chiffrement des connexions à SQL Server.

Une fois sécurisée, la base de données peut être restaurée à l'aide du certificat approprié. Pour plus d'informations sur les certificats, consultez Certificats et clés asymétriques SQL Server.

[!REMARQUE]

Lorsque vous activez le chiffrement transparent des données, vous devez immédiatement sauvegarder le certificat et la clé privée associée au certificat. Dans l'éventualité où le certificat ne serait plus disponible ou que vous deviez restaurer ou attacher la base de données sur un autre serveur, vous devez disposer de sauvegardes du certificat et de la clé privée, sans quoi vous ne pourrez pas ouvrir la base de données. Le certificat de chiffrement ou la clé asymétrique doit être conservé même si le chiffrement transparent des données n'est plus activé sur la base de données. Même si la base de données n'est pas chiffrée, il est possible que la clé de chiffrement de base de données soit conservée dans la base de données et qu'elle soit nécessaire pour accéder à certaines opérations.

Le chiffrement du fichier de base de données est effectué au niveau de la page. Les pages d'une base de données chiffrée sont chiffrées avant d'être écrites sur le disque et déchiffrées lorsqu'elles sont lues en mémoire. Le chiffrement transparent des données n'augmente pas la taille de la base de données chiffrée. Pour plus d'informations sur les pages de base de données, consultez Fonctionnement des pages et étendues.

L'illustration ci-dessous montre l'architecture du chiffrement TDE :

Affiche la hiérarchie décrite dans cette rubrique.

Utilisation du chiffrement transparent des données

Pour utiliser le chiffrement transparent des données, procédez comme suit :

  • Créez une clé principale.

  • Créez ou obtenez un certificat protégé par la clé principale.

  • Créez une clé de chiffrement de base de données et protégez-la à l'aide du certificat.

  • Configurez la base de données pour qu'elle utilise le chiffrement.

L'exemple ci-dessous illustre le chiffrement et le déchiffrement de la base de données AdventureWorks à l'aide d'un certificat installé sur le serveur nommé MyServerCert.

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate'
go
USE AdventureWorks
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert
GO
ALTER DATABASE AdventureWorks
SET ENCRYPTION ON
GO

Les opérations de chiffrement et de déchiffrement sont planifiées sur des threads d'arrière-plan par SQL Server. Vous pouvez consulter l'état de ces opérations à l'aide des affichages catalogue et des vues de gestion dynamique mentionnés dans la liste fournie plus loin dans cette rubrique.

AttentionAttention

Les fichiers de sauvegarde des bases de données pour lesquelles le chiffrement transparent des données est activé sont également chiffrés à l'aide de la clé de chiffrement de base de données. En conséquence, lorsque vous restaurez ces sauvegardes, le certificat qui protège la clé de chiffrement de base de données doit être disponible. Cela signifie qu'en plus de sauvegarder la base de données, vous devez vous assurer que vous conservez des sauvegardes des certificats du serveur pour empêcher toute perte de données. Une perte de données interviendra si le certificat n'est plus disponible. Pour plus d'informations, consultez Certificats et clés asymétriques SQL Server.

Commandes et fonctions

Les certificats TDE doivent être chiffrés par la clé principale de base de données pour être acceptés par les instructions suivantes. S'ils sont chiffrés uniquement par mot de passe, les instructions les refuseront en tant que chiffreurs.

Important

Si des certificats ayant été utilisés par le chiffrement transparent des données sont modifiés de sorte qu'ils soient protégés par mot de passe, la base de données ne sera plus disponible après un redémarrage.

Le tableau suivant fournit des liens et des explications pour les commandes et les fonctions TDE.

Commande ou fonction

Fonction

CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

Crée une clé permettant de chiffrer une base de données.

ALTER DATABASE ENCRYPTION KEY (Transact-SQL)

Modifie la clé qui permet de chiffrer une base de données.

DROP DATABASE ENCRYPTION KEY (Transact-SQL)

Supprime la clé qui était utilisée pour chiffrer une base de données.

Options SET de ALTER DATABASE (Transact-SQL)

Présente l'option ALTER DATABASE qui est utilisée pour activer le chiffrement transparent des données.

Affichages catalogue et vues de gestion dynamique

Le tableau suivant indique les affichages catalogue et les vues de gestion dynamique du chiffrement transparent des données.

Affichage catalogue ou vue de gestion dynamique

Fonction

sys.databases (Transact-SQL)

Affichage catalogue qui affiche des informations sur la base de données.

sys.certificates (Transact-SQL)

Affichage catalogue qui indique les certificats inclus dans une base de données.

sys.dm_database_encryption_keys (Transact-SQL)

Vue de gestion dynamique qui fournit des informations sur les clés de chiffrement utilisées dans une base de données et sur l'état de chiffrement d'une base de données.

Autorisations

Chaque fonctionnalité et commande TDE requiert des autorisations individuelles, décrites dans les tableaux précédents.

La consultation des métadonnées impliquées dans le chiffrement transparent des données requiert l'autorisation VIEW DEFINITION sur le certificat. Pour plus d'informations, consultez Autorisation VIEW DEFINITION.

Éléments à prendre en considération

Lorsqu'une analyse de rechiffrement est en cours pour une opération de chiffrement de la base de données, les opérations de maintenance sur la base de données sont désactivées. Vous pouvez utiliser le paramètre de mode utilisateur unique de la base de données pour effectuer l'opération de maintenance. Pour plus d'informations, consultez Procédure : définir une base de données en mode mono-utilisateur (SQL Server Management Studio).

Vous pouvez déterminer l'état de chiffrement de la base de données en utilisant la vue de gestion dynamique sys.dm_database_encryption_keys. Pour plus d'informations, consultez la section « Affichages catalogue et vues de gestion dynamique »plus haut dans cette rubrique.

Dans le chiffrement transparent des données, tous les fichiers et groupes de fichiers de la base de données sont chiffrés. Si des groupes de fichiers de la base de données sont marqués comme READ ONLY, l'opération de chiffrement de la base de données échoue.

Si une base de données est utilisée dans la mise en miroir de bases de données ou la copie des journaux de transaction, les deux bases de données seront chiffrées. Les transactions du journal sont chiffrées lorsqu'elles sont envoyées dans l'intervalle.

Important

Tous les nouveaux index de recherche en texte intégral sont chiffrés lorsqu'une base de données est définie pour le chiffrement. Les index de recherche en texte intégral créés précédemment sont importés au cours de la mise à niveau et sont inclus dans le chiffrement transparent des données une fois les données chargées dans SQL Server. L'activation d'un index en texte intégral sur une colonne peut entraîner l'écriture des données de cette colonne en texte brut sur le disque au cours d'une analyse d'indexation de texte intégral. Nous vous recommandons de ne pas créer d'index de recherche en texte intégral sur des données chiffrées sensibles.

Le taux de compression des données chiffrées est beaucoup moins élevé que celui des données non chiffrées correspondantes. Si le chiffrement transparent des données est utilisé pour chiffrer une base de données, la compression de la sauvegarde ne permettra pas d'appliquer un fort taux de compression au stockage de la sauvegarde. Par conséquent, l'utilisation conjointe du chiffrement transparent des données et de la compression de la sauvegarde n'est pas recommandée.

Restrictions

Les opérations suivantes ne sont pas autorisées au cours du chiffrement initial de la base de données, de la modification d'une clé ou du déchiffrement de la base de données :

  • Suppression d'un fichier d'un groupe de fichiers dans la base de données

  • Suppression de la base de données

  • Mise hors connexion de la base de données

  • Détachement d'une base de données

  • Passage d'une base de données ou d'un groupe de fichiers à l'état READ ONLY

Les opérations suivantes ne sont pas autorisées durant les instructions CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY ou ALTER DATABASE...SET ENCRYPTION :

  • Suppression d'un fichier d'un groupe de fichiers dans la base de données

  • Suppression de la base de données

  • Mise hors connexion de la base de données

  • Détachement d'une base de données

  • Passage d'une base de données ou d'un groupe de fichiers à l'état READ ONLY

  • Utilisation d'une commande ALTER DATABASE

  • Démarrage d'une base de données ou d'une sauvegarde de fichiers de base de données

  • Démarrage d'une base de données ou d'une restauration de fichiers de base de données

  • Création d'une capture instantanée

Les opérations ou conditions suivantes empêchent l'exécution des instructions CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY ou ALTER DATABASE...SET ENCRYPTION :

  • La base de données est en lecture seule ou a des groupes de fichiers en lecture seule.

  • Une commande ALTER DATABASE est en cours d'exécution.

  • Une sauvegarde de données est en cours d'exécution.

  • La base de données est dans une condition hors connexion ou de restauration.

  • Une capture instantanée est en cours.

  • Tâches de maintenance de base de données.

Chiffrement transparent des données et journaux de transactions

L'activation du chiffrement transparent des données sur une base de données a pour effet de « réinitialiser » la partie restante du journal des transactions virtuel pour imposer le journal des transactions virtuel suivant. Cela garantit qu'aucun texte en clair n'est conservé dans les journaux des transactions après que la base de données a été définie pour le chiffrement. Vous pouvez rechercher l'état du chiffrement des fichiers journaux en consultant la colonne encryption_state dans la vue sys.dm_database_encryption_keys, comme dans l'exemple suivant :

USE AdventureWorks;
GO
/* The value 3 represents an encrypted state 
   on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

Pour plus d'informations sur l'architecture des fichiers journaux SQL Server, consultez Architecture physique du journal des transactions.

Toutes les données écrites dans le journal des transactions avant une modification de la clé de chiffrement de base de données seront chiffrées à l'aide de la clé de chiffrement de base de données précédente.

Lorsque la clé de chiffrement d'une base de données a été modifiée deux fois, une sauvegarde de fichier journal doit être effectuée pour rendre possible une nouvelle modification de la clé de chiffrement.

Chiffrement transparent des données et base de données système tempdb

La base de données système tempdb est chiffrée si toute autre base de données sur l'instance de SQL Server est chiffrée à l'aide du chiffrement transparent des données. Cela peut avoir un impact sur les performances des bases de données non chiffrées situées sur la même instance de SQL Server. Pour plus d'informations sur la base de données système tempdb, consultez Base de données tempdb.

Chiffrement transparent des données et réplication

La réplication ne réplique pas automatiquement sous forme chiffrée les données d'une base sur laquelle le chiffrement transparent des données est activé. Vous devez activer séparément le chiffrement transparent des données si vous souhaitez protéger les bases de données de distribution et d'abonné. La réplication de capture instantanée, ainsi que la distribution initiale de données pour la réplication transactionnelle et la réplication de fusion, peut stocker des données dans des fichiers intermédiaires non chiffrés; par exemple, des fichiers bcp.  Au cours de la réplication transactionnelle ou de la réplication de fusion, le chiffrement peut être activé pour protéger le canal de communication. Pour plus d'informations, consultez Procédure : activer des connexions chiffrées dans le moteur de base de données (Gestionnaire de configuration SQL Server).

Chiffrement transparent des données et données FILESTREAM

Les données FILESTREAM ne sont pas chiffrées même si le chiffrement transparent des données est activé.