miércoles, 27 de mayo de 2009

Modelo de encripción de datos: SQL Server 2008 II Parte

Uno de los problemas más grandes de una organización, es la seguridad de su información. Dentro de este tópico están los respaldos de una BD, los cuales son propensos a robo, obien, ser recuperados casi en cualquier instancia de SQL Server.

Como veremos las nuevas características de SQL Server 2008 incluyen una muy importante, llamada Transparent Data Encryption la cual puede ser usada para encriptar dichos respaldos.

Esta característica implementa la encripción a nivel de base de datos complementada con la encripción a nivel de filas, que ya existía en la versión anterior de SQL Server. Esto proteje basicamente de accesos a la base de datos en forma directa o por restauración de un backup en otra instancia de SQL Server.

A continuación les mostraré como implementar una encripción para proteger los respaldos. Pero primero veamos que podemos consultar un registro en la base de datos:

Por omisión, los respaldos no son encriptados, veámos un ejemplo:

BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureBCK.bak' WITH INIT, STATS = 10

Luego de realizar el anterior comando, podemos comprobar la no encriptación consultando directamente el archivo .bak.

Nótese que la información es altamente legible (texto Unicode), lo único de cuidado es que las palabras están separadas ellas mismas y entre si por espacios en blanco.

Ya captaron el gran problema? Pero para dicha nuestra, SQL Server 2008 ya nos permite salvaguardar como se debe nuestros datos. Analicemoslo a continuación en forma resumida.

Para habilitar la encriptación primero debemos setear el servidor. Para hacer eso, creemos una llave maestra de base de datos en la BD Master.

USE master GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'cLAvE&&ACC350'

Luego, se debe crear el certificado server-based que será usado para encriptar la BD.

CREATE CERTIFICATE AdventureCert WITH SUBJECT = 'El Super Certificado de mi BD'

El paso siguiente es configurar la encripción en sí para la BD creándo la llave de encripción y la clave usando el certificado recién creado en el paso previo.

USE AdventureWorks
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE AdventureCert
GO

El algoritmo de encripción que elijan es completamente a gusto de ustedes. Para seleccionar dicho algoritmo en SQL Server, revisen el artículo que les coloque en el post anterior. Continuando entonces, debemos habilitar la encripción a nivel de base de datos.

ALTER DATABASE AdventureWorks SET ENCRYPTION ON

Y como último paso volvemos a encriptar la BD, pero con un nombre distinto.

BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureBCKEncrip.bak' WITH INIT, STATS = 10

OK listo! Ahora les toca a ustedes consultar de nuevo el archivo .bak, para darse cuenta que ya el nombre buscado al principio no aparece. Pronto les mostraré como recuperar el respaldo encriptado en una instancia de SQL Serve diferente. Nos vemos.

1 comentario:

  1. Ha oido un programa interesante - abrir mdf sqlserver en el Internet. La utiliza me ha gustado y yo he cargado de el Internet. El instrumento ha determinado mis problemas con files. Luego el programa tengo muchos posibilidades y gratis como recordo.

    ResponderBorrar