DBAtlas · Atlas de operaciones de bases de datos

Configurar TDE: master key, certificado, backup del certificado y progreso del cifrado

SQL ServerSeguridad

Comando

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>');

Qué hace

Crea una database master key y un certificado en master, respalda el certificado con su clave privada, crea una database encryption key AES-256 y cifra en reposo los archivos de datos y de log; muestra el progreso del escaneo de cifrado en segundo plano.

Cuándo usarlo

Para requisitos de cifrado de datos en reposo como GDPR/PCI y contra el robo de archivos de backup y de archivos MDF/LDF.

Precaución

Si se pierde el backup del certificado + clave privada o su contraseña, la base de datos TDE y todos sus backups quedan ilegibles de forma PERMANENTE; guarde el backup en una bóveda segura lejos del servidor. Habilitar TDE en cualquier base de datos cifra también tempdb (un pequeño costo de CPU en todo el servidor). El escaneo de cifrado es intensivo en E/S; en 2019+ se puede pausar con ALTER DATABASE ... SET ENCRYPTION SUSPEND/RESUME. Para AG/log shipping, el certificado debe instalarse primero en cada servidor de destino. TDE no cifra los datos en memoria ni en la red.

Abrir en DBAtlas →

Relacionado