Configurar TDE: master key, certificado, backup del certificado y progreso del cifrado
SQL ServerSeguridadComando
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.
Relacionado
- Configurar SQL Server Audit: inicios de sesión, cambios de permisos y acceso a tablas
- Encontrar usuarios huérfanos y volver a asociarlos a logins (tras restore / AG)
- Auditoría de logins y permisos: miembros de sysadmin, permisos de riesgo, contraseñas débiles
- Crear una tabla ledger, leer su historial de cambios y verificar la integridad