DBAtlas · Atlas de operações de banco de dados

Configurar TDE: master key, certificado, backup do certificado e progresso da criptografia

SQL ServerSegurança

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

O que faz

Cria uma database master key e um certificado no master, faz backup do certificado com sua chave privada, cria uma database encryption key AES-256 e criptografa em repouso os arquivos de dados e de log; mostra o progresso do scan de criptografia em background.

Quando usar

Para requisitos de criptografia de dados em repouso, como GDPR/PCI, e contra roubo de arquivos de backup e arquivos MDF/LDF.

Atenção

Se o backup do certificado + chave privada ou sua senha for perdido, o banco TDE e todos os seus backups ficam ilegíveis PERMANENTEMENTE; guarde o backup em um cofre seguro, longe do servidor. Habilitar TDE em qualquer banco também criptografa o tempdb (um pequeno custo de CPU no servidor inteiro). O scan de criptografia é pesado em I/O; no 2019+ ele pode ser pausado com ALTER DATABASE ... SET ENCRYPTION SUSPEND/RESUME. Para AG/log shipping, o certificado precisa ser instalado antes em cada servidor de destino. O TDE não criptografa dados em memória nem na rede.

Abrir no DBAtlas →

Relacionados