2008-09-29 25 views
7

Tengo una base de datos SQL Server 2005 existente que contiene datos cifrados utilizando una clave simétrica. La clave simétrica se abre usando una contraseña. Estoy trabajando en una actualización de las aplicaciones frontales que usan esta base de datos, que incluye la adición de docenas de nuevas tablas, procedimientos almacenados, UDF, etc. y docenas de modificaciones a las tablas existentes y los objetos de la base de datos. Con ese fin estoy haciendo una copia de la base de datos de desarrollo existente, de modo que el sistema actual pueda ser apoyado, mantenido y actualizado de forma independiente mientras se lleva a cabo un nuevo desarrollo.Cómo transferir datos cifrados sql entre bases de datos de SQL Server 2005?

¿Qué es una buena forma de copiar la base de datos? Normalmente, tomo una copia de seguridad de la base de datos existente y luego la restauro a la nueva base de datos. Sin embargo, ¿será factible dada la información encriptada? ¿Seguiré siendo capaz de cifrar y, lo que es más importante, descifrar datos en la nueva base de datos utilizando la clave simétrica y la contraseña existentes?

En su lugar, podría querer utilizar DTS para transferir el esquema existente solamente. Cree una nueva clave/contraseña simétrica en la nueva base de datos. Luego, escriba consultas ad hoc para transferir los datos, descifrarlos usando la clave/contraseña existente y encriptar usando una nueva clave/contraseña en la nueva base de datos.

Supongo que en el corazón de esto se encuentran, ¿las claves simétricas son buenas para cifrar/descifrar datos en una sola base de datos o en muchas bases de datos en el mismo servidor?

Respuesta

3

Las claves simétricas a las que se refiere son claves maestras de base de datos (DMK). Se mantienen en el nivel de la base de datos, por lo que una copia de seguridad/restauración en otro servidor SQL debería funcionar correctamente (con la advertencia de las diferentes cuentas de servicio, a las que hace referencia thread)

Antes de nada, asegúrese de tener una copia de seguridad las llaves (probablemente ya has hecho esto):

USE myDB 
GO 
BACKUP MASTER KEY TO FILE = 'path_to_file' 
    ENCRYPTION BY PASSWORD = 'password' 
GO 

de esta article:

Cuando se crea una base de datos clave principal, una copia se cifra con la suministrada contraseña y almacenada en la base de datos actual . Una copia también se cifra con la clave maestra de servicio y se almacena en la base de datos maestra. La copia de DMK permite al servidor descifrar automáticamente el DMK, una característica conocida como "gestión automática de la clave ". Sin automática de gestión de claves , debe utilizar la declaración ABIERTA CLAVE MASTER y proporcionar una contraseña cada vez que desea cifrar y/o descifrar datos utilizando certificados y claves que se basan en la DMK para la seguridad. Con la gestión automática de la clave , la instrucción y la contraseña OPEN MASTER KEY no son requeridas.

+0

Gracias Mitch, muy útil. Y sí, la restauración de la copia de seguridad a la nueva base de datos funcionó. Pude descifrar datos en la nueva base de datos codificada anteriormente en la base de datos anterior. – Jon

Cuestiones relacionadas