Skip to main content
Version: Next

Transparent Data Encryption (TDE)

Introduction

La technologie TDE (Transparent Data Encryption) permet de chiffrer le schéma de base de données utilisé par les applications Avanteam. Les administrateurs (de la base de données ou d'autres éléments) peuvent appliquer la procédure décrite dans cet article lorsqu'ils réalisent une nouvelle installation ou la mise à niveau d'une base de données.

Domaines d'application

L'application se fait sur les instances SQL Server à partir de la version 2019.

Définitions

La TDE utilise la clé de chiffrement de la base de données (DEK) pour réaliser le chiffrement.

La TDE protège les données au niveau de la couche de stockage physique, c'est-à-dire des données inactives, les fichiers journaux et de données.

Elle réalise le chiffrement en temps réel de la base de données, des sauvegardes associées et des fichiers journaux des transactions sans modifier l'application. La protection étant appliquée au niveau de l'unité physique, le risque d'endommager les données est éliminé.

La TDE permet de protéger les données au niveau du stockage, tel que le requièrent le règlement RGPD et d'autres cadres réglementaires. Dans Microsoft SQL Server, les clés et les certificats sont d'abord créés, puis le chiffrement doit être défini sur Activé dans la base de données pour les données à chiffrer.

Les données sont cryptées à l'aide des algorithmes de chiffrement AES ou 3DES sans modifier les applications existantes. Pour lire les données figurant dans les fichiers de données non cryptées, vous pouvez restaurer ces fichiers sur un autre serveur.

Chiffrement de la base de données

Création d'une clé principale

Pour créer une clé principale, exécutez la commande suivante :

USE master;
GO
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = '`<Specifypassword>`';

Dans la commande ci-dessus, <Specifypassword> permet de spécifier le mot de passe de la clé principale.

Vérification de la clé principale de données

Pour interroger la vue sys.symmetric_keys catalog et vérifier que la clé DMK est créée, exécutez la commande suivante :

SELECT name KeyName,
symmetric_key_id KeyID,
key_length KeyLength,
algorithm_desc KeyAlgorithm
FROM sys.symmetric_keys;

Création du certificat dans la base de données principale

Pour générer un certificat, exécutez la commande suivante :

CREATE CERTIFICATE `<Cert Name>`
WITH SUBJECT = 'Name of certificate or issuer name'

Vérification du certificat

Pour vérifier que le certificat est généré, exécutez la commande suivante :

SELECT name CertName,
certificate_id CertID,
pvt_key_encryption_type_desc EncryptType,
issuer_name Issuer
FROM sys.certificates
WHERE issuer_name = 'Name of certificate or issuer name';

Création de la clé de chiffrement de la base de données

Créez la clé de chiffrement de base de données (DEK) dans la base de données. Exécutez la requête suivante :

USE '`<Product_Database>`';
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE `<Cert Name>`;

Dans la commande ci-dessus, <Product_Database> permet de spécifier le nom de votre base de données.

Vérification de la clé de chiffrement de la base de données

Interrogez la vue de gestion dynamique sys.dm_database_encryption_keys pour vérifier que la clé de chiffrement de la base de données (DEK) est créée. Pour vérifier que la clé DEK est créée, exécutez la commande suivante :

SELECT DB_NAME(database_id) DbName,
encryption_state EncryptState,
key_algorithm KeyAlgorithm,
key_length KeyLength,
encryptor_type EncryptType
FROM sys.dm_database_encryption_keys;

La requête ci-dessus répertorie la base de données dans laquelle les valeurs Encrypt State (Etat du chiffrement) référencent les éléments suivants :

  • 0 : No database encryption key present, no encryption
  • 1 : Unencrypted
  • 2 : Encryption in progress
  • 3 : Encrypted
  • 4 : Key change in progress
  • 5 : Decryption in progress
  • 6 : The certificate or asymmetric key encrypting the DEK is being changed

Activation du chiffrement pour la base de données

Activer du chiffrement de la base de données

Exécutez la requête suivante :

ALTER DATABASE `<Product_Database>`
SET ENCRYPTION ON;

Dans la commande ci-dessus, <Product_Database> permet de spécifier le nom de votre base de données ou un nom personnalisé de votre choix en fonction de vos besoins.

Vérification de l'activation du chiffrement

Exécutez la commande suivante :

SELECT DB_NAME(database_id) DbName,
encryption_state EncryptState,
key_algorithm KeyAlgorithm,
key_length KeyLength,
encryptor_type EncryptType
FROM sys.dm_database_encryption_keys;

La requête ci-dessus affiche une ligne ajoutée dans la base de données tempdb. Lorsque la TDE est implémentée dans une table utilisateur, Microsoft SQL Server chiffre également la base de données tempdb. Cette base de données contient des éléments tels que des objets utilisateur temporaires, des objets internes et des versions de ligne, pouvant contenir des données sensibles.

Sauvegarde de la configuration

Création d'une sauvegarde de la clé principale et du certificat

Effectuez une sauvegarde des clés et du certificat, de préférence juste après leur création :

USE master;
GO
BACKUP SERVICE MASTER KEY
TO FILE = 'C:\Backuplocation\SvcMasterKey.key'
ENCRYPTION BY PASSWORD = '`<Specifypassword>`'

Sauvegarde de la clé principale de données

Effectuez une sauvegarde de la clé principale de données (DMK) :

BACKUP MASTER KEY
TO FILE = 'C:\Backuplocation\DbMasterKey.key'
ENCRYPTION BY PASSWORD = '`<Specifypassword>`'

Sauvegarde du certificat

Pour effectuer une sauvegarde du certificat :

BACKUP CERTIFICATE `<Cert Name>`
TO FILE = 'C:\Backuplocation\ProductDBNameCert.cer'
WITH PRIVATE KEY(
FILE = 'C:\Backuplocation\ProductDBNameCert.prvk',
ENCRYPTION BY PASSWORD = 'Specifypassword'
);

Restauration de la base de données sur un autre serveur

Pour restaurer la base de données Microsoft SQL Server sur le serveur cible, procédez comme suit :

Création d'une clé principale sur le serveur de destination

Pour créer une clé principale sur le serveur cible, exécutez la commande suivante :

USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '`<Specifypassword>`'

Création du certificat avec le certificat

Exécuter la commande suivante :

CREATE CERTIFICATE `<certificateName>`
FROM FILE = 'C:\backup\ ProductDBNameCert.cer'
WITH PRIVATE KEY(
FILE = 'C:\backup\ ProductDBNameCert.prvk',
DECRYPTION BY PASSWORD = '`<Specifypassword>`'
)