La Encriptación Transparente de Datos (TDE, por sus siglas en inglés) es una característica en SQL Server que proporciona encriptación para los datos en reposo. Encripta los archivos de la base de datos y las copias de seguridad, asegurando que los datos permanezcan seguros incluso si el medio físico se ve comprometido.
Configurar TDE es un proceso sencillo. Implica crear una clave maestra, un certificado y habilitar la encriptación para la base de datos. Aquí tienes un ejemplo de cómo configurar TDE:
USE master;
GO
CREATE DATABASE [MiPruebaTDE]
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UsarContraseñaFuerteAquí>';
GO
CREATE CERTIFICATE MiCertificadoServidor WITH SUBJECT = 'Mi Certificado DEK';
GO
USE [MiPruebaTDE];
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MiCertificadoServidor;
GO
ALTER DATABASE [MiPruebaTDE]
SET ENCRYPTION ON;
GOUna vez que la base de datos está encriptada, se puede mover fácilmente a otra instancia de SQL Server haciendo una copia de seguridad del certificado y la base de datos, y luego restaurándolos en el nuevo servidor. Sin embargo, hay algunas consideraciones a tener en cuenta al realizar este proceso.
En una experiencia reciente, el autor encontró un error al restaurar una base de datos protegida por TDE en una nueva instancia. El mensaje de error indicaba que el certificado, la clave asimétrica o el archivo de clave privada no eran válidos o no existían. Después de investigar, se descubrió que el problema estaba relacionado con la clave privada.
Cuando se crea un certificado, la clave privada se encripta utilizando la clave maestra de la base de datos de forma predeterminada. Esto significa que la clave privada se almacena en algún lugar, pero no se especifica explícitamente durante el proceso de creación. Para restaurar la base de datos correctamente, la clave privada debe hacerse una copia de seguridad junto con el certificado.
Aquí tienes un ejemplo de cómo hacer una copia de seguridad del certificado y la clave privada:
USE master;
GO
BACKUP DATABASE MiPruebaTDE TO DISK = 'C:\temp\MiPruebaTDE.bak'
BACKUP CERTIFICATE MiCertificadoServidor
TO FILE = 'C:\temp\MiCertificadoServidor'
WITH PRIVATE KEY
(
FILE = 'C:\temp\MiCertificadoServidor.pvk' ,
ENCRYPTION BY PASSWORD = 'Contraseña'
)En el servidor de destino, el certificado y la clave privada se pueden restaurar utilizando el siguiente script:
USE master;
GO
-- Si la CLAVE MAESTRA aún no existe.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Contraseña';
IF EXISTS (SELECT 1 FROM sys.certificates WHERE name = 'MiCertificadoServidor')
DROP CERTIFICATE MiCertificadoServidor
CREATE CERTIFICATE MiCertificadoServidor
FROM FILE = 'C:\temp\MiCertificadoServidor'
WITH PRIVATE KEY
(
FILE = 'C:\temp\MiCertificadoServidor.pvk' ,
DECRYPTION BY PASSWORD = 'Contraseña'
)
GO
RESTORE DATABASE [MiPruebaTDE]
FROM DISK = N'C:\temp\MiPruebaTDE.bak'
WITH FILE = 1, NOUNLOAD, STATS = 5,
MOVE N'MiPruebaTDE' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014CI\MSSQL\DATA\MiPruebaTDE.mdf',
MOVE N'MiPruebaTDE_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014CI\MSSQL\DATA\MiPruebaTDE_log.ldf'
GOSiguiendo estos pasos, la base de datos protegida por TDE se puede restaurar correctamente en una nueva instancia de SQL Server, asegurando que los datos permanezcan encriptados y seguros.
Es importante tener en cuenta que TDE es solo un aspecto de la seguridad de datos en SQL Server. Proporciona encriptación en reposo, pero se deben tomar medidas adicionales para proteger los datos en tránsito y garantizar que se establezcan controles de acceso adecuados.
En general, TDE es una característica valiosa en SQL Server que ayuda a las organizaciones a proteger sus datos sensibles. Comprender cómo configurar y administrar TDE, incluido el proceso de mover bases de datos protegidas por TDE, es esencial para los administradores de bases de datos y desarrolladores.
¿Has encontrado algún desafío o éxito con TDE en SQL Server? ¡Comparte tus experiencias en los comentarios!