Como ativar Transparent Data Encryption (TDE) no SQL Server
Encriptar uma base de dados em repouso deixou de ser um luxo reservado a grandes organizações: com o Transparent Data Encryption (TDE) no SQL Server proteges os ficheiros de dados, os ficheiros de log e até os backups sem mudar uma linha da tua aplicação. É uma das formas mais diretas de responder a requisitos de conformidade como o RGPD e de garantir que um ficheiro .mdf ou .bak copiado indevidamente não pode ser lido fora do teu servidor.
Pré-requisitos
- SQL Server 2019 ou superior — o TDE passou a estar disponível na edição Standard a partir dessa versão; até ao SQL Server 2017 era exclusivo da Enterprise.
- Uma conta com permissões elevadas (membro da role
sysadmin). - Uma base de dados de teste para praticares antes de aplicares em produção.
- Uma pasta segura, fora do servidor, para guardar o backup do certificado.
Passo 1: Criar a Master Key na base de dados master
A encriptação no SQL Server está organizada em camadas. No topo dessa hierarquia está a Database Master Key, guardada na base de dados master, que protege o certificado que vais criar a seguir. Liga-te à instância e corre:
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'UmaPass!Muito_Forte_2026';
GO
Escolhe uma password forte e guarda-a: vais precisar dela se algum dia tiveres de recuperar o certificado noutro servidor.
Passo 2: Criar o certificado do servidor
O certificado é a chave que vai, na prática, proteger a tua base de dados. Continua ligado à base de dados master:
USE master;
GO
CREATE CERTIFICATE TDE_Cert
WITH SUBJECT = 'Certificado para TDE';
GO
Repara que não indicámos password para o certificado: por omissão, ele fica protegido pela Master Key que criaste no passo anterior.
Passo 3: Fazer backup do certificado (passo crítico)
Este é o passo que nunca podes saltar. Se o certificado se perder, ninguém volta a abrir a base de dados encriptada — nem tu. Faz o backup do certificado e da respetiva chave privada imediatamente:
USE master;
GO
BACKUP CERTIFICATE TDE_Cert
TO FILE = 'C:\Backup\TDE_Cert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Backup\TDE_Cert.pvk',
ENCRYPTION BY PASSWORD = 'OutraPass!Forte_2026'
);
GO
Copia os dois ficheiros (.cer e .pvk) para um local seguro e separado do servidor, e guarda as passwords num gestor de credenciais. Sem eles, restaurar a base de dados numa máquina nova é impossível.
Passo 4: Criar a Database Encryption Key
Agora muda para a base de dados que queres proteger e cria a Database Encryption Key (DEK), indicando o algoritmo e o certificado que a vai proteger:
USE MinhaBaseDeDados;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE TDE_Cert;
GO
O AES_256 é o algoritmo recomendado atualmente, por oferecer um bom equilíbrio entre segurança e desempenho.
Passo 5: Ativar a encriptação
Falta o interruptor final. Este comando arranca a encriptação em segundo plano, página a página, sem tirar a base de dados de serviço:
ALTER DATABASE MinhaBaseDeDados
SET ENCRYPTION ON;
GO
Em bases de dados grandes, esta primeira encriptação pode demorar algum tempo, mas a aplicação continua a responder normalmente durante o processo.
Verificar o resultado
Para confirmar o estado, consulta a view de sistema que mostra a encriptação de cada base de dados. Um encryption_state igual a 3 significa "encriptada"; o valor 2 indica que a encriptação ainda está a decorrer:
SELECT
DB_NAME(database_id) AS base_de_dados,
encryption_state,
percent_complete,
key_algorithm,
key_length
FROM sys.dm_database_encryption_keys;
GO
Quando o encryption_state chegar a 3 e o percent_complete for 0, a tua base de dados está totalmente protegida em disco.
Lembra-te: o TDE protege os dados em repouso. Não encripta os dados em trânsito na rede (para isso usa TLS) nem os esconde de utilizadores que já tenham permissões de leitura (para isso usa permissões e mascaramento).
Conclusão
Em cinco passos ativaste encriptação em repouso que protege dados, logs e backups de forma transparente para as aplicações. O próximo passo natural é simular uma recuperação: restaura o backup do certificado e da base de dados num servidor de testes, porque um plano de recuperação só vale quando é testado. Já experimentaste abrir uma base de dados encriptada noutra máquina para validar que os teus backups do certificado funcionam mesmo?