DBAtlas · Atlas d'exploitation des bases de données

Mettre en place TDE : master key, certificat, sauvegarde du certificat et progression du chiffrement

SQL ServerSécurité

Commande

USE master;
IF NOT EXISTS (SELECT 1 FROM sys.symmetric_keys WHERE name = N'##MS_DatabaseMasterKey##')
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<GucluParola_1>';
CREATE CERTIFICATE [TDE_Cert_2026]
    WITH SUBJECT = N'TDE certificate', EXPIRY_DATE = '20361231';

-- Back it up NOW: without cert + private key the backups cannot be restored anywhere
BACKUP CERTIFICATE [TDE_Cert_2026]
    TO FILE = N'D:\Keys\TDE_Cert_2026.cer'
    WITH PRIVATE KEY (FILE = N'D:\Keys\TDE_Cert_2026.pvk',
                      ENCRYPTION BY PASSWORD = N'<GucluParola_2>');

USE [Musteri];
CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER CERTIFICATE [TDE_Cert_2026];
ALTER DATABASE [Musteri] SET ENCRYPTION ON;

-- Progress and certificate backup date:
SELECT DB_NAME(dek.database_id) AS db, dek.encryption_state_desc, dek.percent_complete,
       dek.encryption_scan_state_desc, c.name AS cert_name, c.expiry_date, c.pvt_key_last_backup_date
FROM   sys.dm_database_encryption_keys dek
  LEFT JOIN master.sys.certificates c ON c.thumbprint = dek.encryptor_thumbprint;

-- On the target server (before restore / AG secondary):
-- CREATE CERTIFICATE [TDE_Cert_2026] FROM FILE = N'D:\Keys\TDE_Cert_2026.cer'
--   WITH PRIVATE KEY (FILE = N'D:\Keys\TDE_Cert_2026.pvk', DECRYPTION BY PASSWORD = N'<GucluParola_2>');

Ce que fait la commande

Crée une database master key et un certificat dans master, sauvegarde le certificat avec sa clé privée, crée une database encryption key AES-256 et chiffre au repos les fichiers de données et du journal ; affiche la progression du scan de chiffrement en arrière-plan.

Quand l'utiliser

Pour les exigences de chiffrement des données au repos comme le RGPD/PCI, et contre le vol des fichiers de sauvegarde et des fichiers MDF/LDF.

Attention

Si la sauvegarde du certificat + clé privée ou son mot de passe est perdue, la base TDE et toutes ses sauvegardes deviennent DÉFINITIVEMENT illisibles ; conservez la sauvegarde dans un coffre sécurisé loin du serveur. Activer TDE sur n'importe quelle base chiffre aussi tempdb (un faible coût CPU à l'échelle du serveur). Le scan de chiffrement est lourd en I/O ; en 2019+, il peut être mis en pause avec ALTER DATABASE ... SET ENCRYPTION SUSPEND/RESUME. Pour AG/log shipping, le certificat doit d'abord être installé sur chaque serveur cible. TDE ne chiffre pas les données en mémoire ni sur le réseau.

Ouvrir dans DBAtlas →

Voir aussi