Transparent Data Encryption (TDE)

S’applique à : ouiSQL Server (toutes les versions prises en charge) OuiAzure SQL Database OuiAzure SQL Managed Instance ouiAzure Synapse Analytics OuiParallel Data Warehouse

Transparent Data Encryption (TDE) chiffre les fichiers de données SQL Server, Azure SQL Database et Azure Synapse Analytics. Ce chiffrement est connu sous le nom de chiffrement de données au repos.

Pour sécuriser une base de données, vous pouvez prendre certaines précautions, à savoir :

  • Concevoir un système sécurisé.
  • Chiffrer les ressources confidentielles.
  • Créer un pare-feu autour des serveurs de base de données.

Or, un tiers malveillant qui subtiliserait des médias physiques comme des disques durs ou des bandes de sauvegarde pourrait restaurer ou attacher la base de données et parcourir les données qu’elle contient.

Il existe une solution qui consiste à chiffrer les données sensibles dans une base de données et à utiliser un certificat pour protéger les clés qui chiffrent les données. Cette solution empêche quiconque ne disposant pas des clés d’utiliser les données. Vous devez cependant planifier ce type de protection à l’avance.

TDE assure un chiffrement et un déchiffrement des données et des fichiers journaux en E/S et en temps réel. Le chiffrement utilise une clé de chiffrement de base de données. L’enregistrement de démarrage de la base de données stocke la clé pour la mettre à disposition pendant la récupération. La clé de chiffrement de base de données est une clé symétrique. Elle est sécurisée par un certificat stocké dans la base de données MASTER du serveur ou par une clé asymétrique protégée par un module EKM.

TDE protège les données au repos, c’est-à-dire les fichiers de données et les fichiers journaux. Il vous permet d’être en conformité avec de nombreuses lois, réglementations et directives établies dans différents secteurs d’activité. Cette possibilité permet aux développeurs de logiciels de chiffrer les données à l’aide des algorithmes de chiffrement AES et 3DES sans modifier les applications existantes.

À propos du chiffrement transparent des données

Le chiffrement d’un fichier de base de données s’effectue au niveau de la page. Les pages au sein d’une base de données chiffrée sont chiffrées avant d’être écrites sur disque et déchiffrées au moment d’être lues en mémoire. TDE n’augmente pas la taille de la base de données chiffrée.

Informations applicables à SQL Database

Quand vous utilisez TDE avec SQL Database V12, SQL Database crée automatiquement le certificat de niveau serveur stocké dans la base de données MASTER. Pour déplacer une base de données TDE sur SQL Database, vous n’avez pas besoin de déchiffrer la base de données pour l’opération de déplacement. Pour plus d’informations sur l’utilisation de TDE avec SQL Database, consultez Transparent Data Encryption avec Azure SQL Database.

Informations applicables à SQL Server

Après avoir sécurisé une base de données, vous pouvez la restaurer à l’aide du certificat adéquat. Pour plus d'informations sur les certificats, consultez SQL Server Certificates and Asymmetric Keys.

Après avoir activé TDE, sauvegardez immédiatement le certificat et la clé privée associée. Si le certificat devient indisponible ou si vous restaurez ou attachez la base de données sur un autre serveur, vous aurez besoin d’une sauvegarde du certificat et de la clé privée. À défaut, vous ne pourrez pas ouvrir la base de données.

Conservez le certificat de chiffrement même si vous désactivez TDE sur la base de données. Même si la base de données n’est pas chiffrée, des parties du journal des transactions peuvent rester protégées. Le certificat peut aussi vous être utile pour certaines opérations tant que vous n’effectuez pas une sauvegarde complète de la base de données.

Vous pouvez toujours utiliser un certificat dont la date d’expiration est passée pour chiffrer et déchiffrer des données avec TDE.

Hiérarchie de chiffrement

L'illustration ci-dessous montre l'architecture du chiffrement TDE. Seuls les éléments de niveau base de données (la clé de chiffrement de base de données et les parties ALTER DATABASE) sont configurables par l’utilisateur quand vous utilisez TDE sur SQL Database.

Architecture de Transparent Data Encryption

Activer TDE

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

S'applique à: SQL Server.

  1. Créez une clé principale.

  2. Créez ou procurez-vous un certificat protégé par la clé principale.

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

  4. 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 AdventureWorks2012 à l’aide d’un certificat nommé MyServerCert sur le serveur.

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
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. Pour consulter l’état de ces opérations, utilisez les vues catalogue et les vues de gestion dynamique décrits dans le tableau plus loin dans cet article.

Attention

Les fichiers de sauvegarde pour les bases de données pour lesquelles TDE est activé sont également chiffrés avec la clé de chiffrement de la base de données. Ainsi, quand vous restaurez ces sauvegardes, le certificat qui protège la clé de chiffrement de base de données doit être disponible. Par conséquent, au-delà de la sauvegarder de la base de données, pensez à conserver les sauvegardes des certificats de serveur. Si les certificats ne sont plus disponibles, vous perdrez des données.

Pour plus d'informations, consultez SQL Server Certificates and Asymmetric Keys.

Commandes et fonctions

Pour que les instructions suivantes acceptent les certificats TDE, utilisez une clé principale de base de données pour les chiffrer. Si vous les chiffrez par mot de passe uniquement, les instructions les rejettent en tant que chiffreurs.

Important

Si vous protégez les certificats par mot de passe après que TDE les a utilisés, la base de données devient inaccessible après un redémarrage.

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

Commande ou fonction Objectif
CREATE DATABASE ENCRYPTION KEY (Transact-SQL) Crée une clé qui chiffre une base de données
ALTER DATABASE ENCRYPTION KEY (Transact-SQL) Change la clé qui chiffre une base de données
DROP DATABASE ENCRYPTION KEY (Transact-SQL) Supprime la clé qui chiffre une base de données
Options SET d’ALTER DATABASE (Transact-SQL) Présente l’option ALTER DATABASE qui est utilisée pour activer TDE

Vues 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 Objectif
sys.databases (Transact-SQL) Vue catalogue qui affiche des informations sur la base de données
sys.certificates (Transact-SQL) Vue catalogue qui présente les certificats d’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 d’une base de données et sur l’état de chiffrement

Autorisations

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

La consultation des métadonnées impliquées avec TDE nécessite l’autorisation VIEW DEFINITION sur un certificat.

Considérations

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 du mode mono-utilisateur pour la base de données pour effectuer des opérations de maintenance. Pour plus d’informations, consultez Définir une base de données en mode mono-utilisateur.

Utilisez la vue de gestion dynamique sys.dm_database_encryption_keys pour déterminer l’état de chiffrement de la base de données. Pour plus d’informations, consultez la section « Vues catalogue et vues de gestion dynamique » plus haut dans cet article.

Avec TDE, tous les fichiers et groupes de fichiers d’une base de données sont chiffrés. Si la base de données contient un groupe de fichiers marqué READ ONLY, l’opération de chiffrement de la base de données échoue.

Si vous utilisez une base de données dans la mise en miroir de bases de données ou la copie des journaux de transaction, les deux bases de données sont chiffrées. Les transactions de journal sont chiffrées quand elles passent de l’une à l’autre.

Important

Les index de recherche en texte intégral sont chiffrés dès lors qu’une base de données est définie pour le chiffrement. Les index de ce type qui ont été créés dans une version de SQL Server antérieure à SQL Server 2008 sont importés dans la base de données par SQL Server 2008 ou version ultérieure et sont chiffrés par TDE.

Conseil

Pour superviser les changements d’état TDE d’une base de données, utilisez SQL Server Audit ou l’audit SQL Database. Pour SQL Server, TDE est suivi par le groupe d’actions d’audit DATABASE_CHANGE_GROUP, que vous trouverez dans Actions et groupes d’actions SQL Server Audit .

Restrictions

Les opérations suivantes ne sont pas autorisées pendant le chiffrement initial de la base de données, un changement de clé ou le déchiffrement de la base de données :

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

  • Suppression d’une base de données

  • Mise hors connexion d’une 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 pendant l’exécution des instructions CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY et ALTER DATABASE...SET ENCRYPTION :

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

  • Suppression d’une base de données

  • Mise hors connexion d’une 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 sauvegarde de base de données ou de fichiers de base de données

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

  • Création d’un instantané

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 et ALTER DATABASE...SET ENCRYPTION :

  • Une base de données est en lecture seule ou comporte 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.

  • Une base de données est à l’état hors connexion ou en cours de restauration.

  • Un instantané est en cours.

  • Des tâches de maintenance de base de données sont en cours d’exécution.

Pendant la création de fichiers de base de données, l’initialisation instantanée des fichiers n’est pas disponible quand TDE est activé.

Pour chiffrer une clé de chiffrement de base de données avec une clé asymétrique, celle-ci doit être mise à la disposition d’un fournisseur de gestion de clés extensible.

Analyse TDE

Pour activer TDE sur une base de données, SQL Server doit effectuer une analyse de chiffrement. L’analyse lit chaque page des fichiers de données dans le pool de mémoires tampons, puis réécrit les pages chiffrées sur disque.

Pour vous permettre de mieux contrôler l’analyse du chiffrement, SQL Server 2019 (15.x) intègre l’analyse TDE, qui propose une syntaxe de suspension (« suspend ») et de reprise (« resume »). Vous pouvez ainsi suspendre l’analyse quand le système est soumis à une charge de travail intense ou pendant les heures de pointe et reprendre l’analyse à un moment ultérieur.

Pour suspendre l’analyse du chiffrement TDE, utilisez la syntaxe suivante :

ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;

De la même manière, utilisez la syntaxe suivante pour reprendre l’analyse du chiffrement TDE :

ALTER DATABASE <db_name> SET ENCRYPTION RESUME;

La colonne encryption_scan_state a été ajoutée à la vue de gestion dynamique sys.dm_database_encryption_keys. Elle indique l’état actuel de l’analyse du chiffrement. Il existe également une nouvelle colonne appelée encryption_scan_modify_date qui contient la date et l’heure du dernier changement d’état de l’analyse du chiffrement.

Si l’instance SQL Server redémarre alors que l’analyse du chiffrement y est suspendue, un message est consigné dans le journal des erreurs pendant le démarrage. Le message indique qu’une analyse existante a été suspendue.

Important

La fonctionnalité permettant d’interrompre et de reprendre l’analyse TDE n’est pas disponible actuellement dans Azure SQL Database, Azure SQL Managed Instance ni Azure Synapse Analytics.

TDE et journaux des transactions

Le fait qu’une base de données utilise TDE entraîne la suppression de la partie restante du journal des transactions virtuel actuel. Cette suppression impose la création du journal des transactions suivant. Ce comportement est la garantie qu’aucun texte en clair n’est conservé dans les journaux après que la base de données est définie pour le chiffrement.

Pour déterminer l’état du chiffrement des fichiers journaux, consultez la colonne encryption_state dans la vue sys.dm_database_encryption_keys, comme dans l’exemple suivant :

USE AdventureWorks2012;
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 Journal des transactions (SQL Server).

Avant de changer de clé de chiffrement de base de données, la clé de chiffrement de base de données précédente chiffre toutes les données écrites dans le journal des transactions.

Si vous changez de clé de chiffrement de base de données à deux reprises, vous devez sauvegarder le journal avant de pouvoir changer à nouveau la clé de chiffrement de base de données.

TDE et la base de données système tempdb

La base de données système tempdb est chiffrée si une autre base de données de l’instance SQL Server est chiffrée à l’aide de TDE. Ce chiffrement peut avoir des conséquences sur le niveau de performance des bases de données non chiffrées sur la même instance SQL Server. Pour plus d’informations sur la base de données système tempdb, consultez Base de données tempdb.

TDE et la réplication

La réplication ne réplique pas automatiquement sous une forme chiffrée les données d’une base de données pour laquelle TDE est activé. Si vous voulez protéger les bases de données de distribution et d’abonné, activez TDE séparément.

La réplication d’instantané peut stocker les données dans des fichiers intermédiaires non chiffrés comme les fichiers BCP. La distribution initiale des données pour la réplication transactionnelle et de fusion le peut également. Au cours d’une réplication de ce type, vous pouvez activer le chiffrement pour protéger le canal de communication.

Pour plus d’informations, consultez Activer des connexions chiffrées dans le moteur de base de données (Gestionnaire de configuration SQL Server).

TDE et Always On

Vous pouvez ajouter une base de données chiffrée à un groupe de disponibilité Always On.

Pour chiffrer les bases de données qui font partie d’un groupe de disponibilité, créez la clé principale et les certificats, ou la clé asymétrique (EKM) sur tous les réplicas secondaires avant de créer la clé de chiffrement de base de données sur le réplica principal.

Si un certificat est utilisé pour protéger la clé de chiffrement de base de données (DEK), sauvegardez le certificat créé sur le réplica principal, puis créez le certificat à partir d’un fichier sur tous les réplicas secondaires avant de créer la clé de chiffrement de base de données sur le réplica principal.

TDE et données FILESTREAM

Les données FILESTREAM ne sont pas chiffrées même quand vous activez TDE.

Supprimer TDE

Supprimez le chiffrement de la base de données avec l’instruction ALTER DATABASE.

ALTER DATABASE <db_name> SET ENCRYPTION OFF;

Pour voir l’état de la base de données, utilisez la vue de gestion dynamique sys.dm_database_encryption_keys.

Attendez la fin du déchiffrement avant de supprimer la clé de chiffrement de base de données en utilisant DROP DATABASE ENCRYPTION KEY.

Important

Sauvegardez la clé principale et le certificat utilisés pour TDE à un emplacement sûr. La clé principale et le certificat sont requis pour restaurer les sauvegardes qui ont été effectuées lors du chiffrement de la base de données avec TDE. Après avoir supprimé la clé de chiffrement de base de données, effectuez une sauvegarde du journal suivie d’une nouvelle sauvegarde complète de la base de données déchiffrée.

TDE et extension du pool de mémoires tampons

Quand vous chiffrez une base de données à l’aide de TDE, les fichiers associés à l’extension du pool de mémoires tampons (BPE) ne sont pas chiffrés. Pour ces fichiers, utilisez des outils de chiffrement comme BitLocker ou EFS au niveau du système de fichiers.

TDE et OLTP en mémoire

Vous pouvez activer TDE sur une base de données contenant des objets OLTP en mémoire. Dans SQL Server 2016 (13.x) et Azure SQL Database, les enregistrements de journal et les données OLTP en mémoire sont chiffrés si vous activez TDE. Dans SQL Server 2014 (12.x), les enregistrements de journal OLTP en mémoire sont chiffrés si vous activez TDE, mais les fichiers contenus dans le groupe de fichiers MEMORY_OPTIMIZED_DATA ne le sont pas.

Déplacer une base de données protégée par le chiffrement transparent des données vers un autre serveur SQL Server
Activer le chiffrement transparent des données à l’aide de la gestion de clés extensible (EKM)
Gestion de clés extensible à l’aide d’Azure Key Vault (SQL Server)

Transparent Data Encryption avec Azure SQL Database
Prise en main de Transparent Data Encryption (TDE) dans Azure Synapse Analytics
Chiffrement SQL Server
SQL Server et clés de chiffrement de base de données (moteur de base de données)

Voir aussi

Centre de sécurité pour le moteur de base de données SQL Server et Azure SQL Database
FILESTREAM (SQL Server)