SQL Server 2008: Transparent Data Encryption (DTE)!

Una de las grandes puntos de mejora de SQL Server 2008, ya existente en otros motores de bases de datos (BD’s), la tenemos en lo que es la seguridad y nivel de protección de las bases de datos utilizando la tecnología Transparent Data Encryption (DTE) que permite realizar el encriptado de una BD completa frente a la alternativa de encriptado a nivel de columna que teníamos en SQL Server 2005. Algunas de las características de DTE son las siguientes:

  • La aplicación o el desarrollador no tienen que hacer nada.
  • El nivel de protección es configurable a distintos niveles:
    • De usuario.
    • De ítem: una BD entera, archivos de datos, archivos de log.
  • Incluso se puede encriptar el backup.

La clave del DTE de SQL Server 2008 se basa en usar usa una clave especial: Database Encription Key (DEK), que permite realizar el encriptado de la BD. La idea de este post es ver como con DTE podemos prevenir escenarios de robo de backups, cumplir con la legislación en cuanto a protección de datos, etc. Empecemos.

Copiando una BD desencriptada

Lo primero que vamos a hacer es demostrar lo sencillo que es “robar” una BD no encriptada y utilizar su contenido de forma fraudulenta. Por ejemplo, supongamos que nuestra organización tiene una política de realización de backups que finalmente se depositan en una carpeta compartida en red que presenta un cierto agujero de seguridad, de manera que dicho backup está accesible y puede ser restaurado de una forma sencilla (luego la seguridad de los datos de nuestra organización está claramente comprometida):

  • Abrimos SQL Server Management Studio.
  • En el explorador de objetos, desplegamos la sección databases, hacemos clic con el botón derecho del ratón en una cierta BD (en mi caso, en la BD AdventureWorksLT) seleccionamos Tasks -> Back Up…
  • En la pantalla de realización del backup, dejamos marcadas las opciones por defecto y pulsamos OK.
  • Una vez que hemos realizado el backup de la BD AdventureWorks, nos vamos al path dónde se ha quedado almacenado y simplemente lo abrimos con el bloc de notas. Una rápida inspección del contenido nos da una idea de que los datos de la BD son accesibles de forma sencilla:
image image image

Implementando el DTE en la BD

En esta sección vamos a ver como la funcionalidad DTE de SQL Server 2008 nos permite encriptar una BD resolviendo situaciones como la comentada en el apartado anterior. Los pasos para encriptar la BD son los siguientes:

  • Abrimos el editor de consultas de SQL Server y añadimos la siguiente consulta:

USE master;

GO

                        CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘pa$$@word1’;

GO

                        CREATE CERTIFICATE MyServerCert WITH SUBJECT = ‘Mi Certificado DEK’

GO

USE AdventureWorksLT

GO

                        CREATE DATABASE ENCRYPTION KEY

                                               WITH ALGORITHM = AES_128

                                                                       ENCRYPTION BY SERVER CERTIFICATE MyServerCert

GO

                        ALTER DATABASE AdventureWorksLT

                        SET ENCRYPTION ON

GO

Lo que estamos haciendo con este script es lo siguiente:

    • Creamos una master key con contraseña pa$$@word1.
    • Creamos un certificado de servidor que nos permite garantizar que nuestra BD no puede ser restaurada en otro servidor mientras en el mismo no exista este certificado.
    • Creamos una clave de encriptación de la BD utilizando el algoritmo AES_128 y utilizando el certificado anterior.
  • Borramos el backup de AdventureWorksLT que habíamos creado en la sección anterior.
  • Creamos un nuevo backup de AdventureWorksLT.
  • Abrimos el backup con el bloc de notas:

image

Luego ahora el backup si que tiene el contenido encriptado y por lo tanto hemos solucionado el problema de seguridad visto. Y hasta aquí llega lo que os quería contar sobre DTE. Espero que el post os haya resultado interesante.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

3 comentarios en “SQL Server 2008: Transparent Data Encryption (DTE)!”

  1. Esta técnica de encriptado, por lo que lei, no permite que la base de datos sea restaurada en otro servidor, mi pregunta es: si tengo un cluster, al producirse un Fail over, y querer levantar la base en otro nodo, habria problemas? hay consideraciones especiales a tener en cuenta en este escenario? Muchas Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *