Mover una base de datos protegida por TDE a otra instancia de SQL Server
En este tema se describen los pasos para proteger una base de datos de SQL Server mediante el uso del cifrado de datos transparente (TDE) y, a continuación, mover la base de datos a otra instancia de SQL Server.
En este tema
Antes de empezar:
Antecedentes
Seguridad
Ejemplo:
Para crear una base de datos protegida por el cifrado de datos transparente
Para mover una base de datos protegida por TDE a una nueva instancia de SQL Server
Seguimiento: pasos que se deben realizar después de mover una base de datos protegida por TDE a una nueva instancia de SQL Server
Antecedentes
TDE realiza el cifrado y descifrado de E/S en tiempo real de los datos y los archivos de registro. El cifrado utiliza una clave de cifrado de la base de datos (DEK), que está almacenada en el registro de arranque de la base de datos para que esté disponible durante la recuperación. DEK es una clave simétrica protegida mediante un certificado almacenado en la base de datos master del servidor o una clave asimétrica protegida por un módulo EKM. Cuando se mueve una base de datos protegida por TDE, también debe mover el certificado o la clave asimétrica que se usan para abrir DEK. El certificado o la clave asimétrica se deben instalar en la base de datos maestra del servidor de destino para que SQL Server pueda tener acceso a los archivos de la base de datos. Para obtener más información, vea Descripción del Cifrado de datos transparente (TDE).
Seguridad
Permisos
Requiere el permiso CONTROL DATABASE en la base de datos maestra para crear la clave maestra de la base de datos.
Requiere el permiso CREATE CERTIFICATE en la base de datos maestra para crear el certificado que protege DEK.
Requiere el permiso CONTROL DATABASE para la base de datos cifrada y el permiso VIEW DEFINITION para el certificado o la clave asimétrica usados para cifrar la clave de cifrado de la base de datos.
[Arriba]
Crear una base de datos protegida por TDE
Para crear una base de datos protegida por el cifrado de datos transparente, use una clave de cifrado de la base de datos protegida por un certificado en la base de datos maestra.
Para crear una base de datos protegida por el cifrado de datos transparente
En el Editor de consultas, escriba los siguientes comandos Transact-SQL para crear una clave maestra de la base de datos y un certificado en la base de datos maestra.
Nota de seguridad Reemplace los asteriscos por una contraseña. No utilice una contraseña en blanco. Utilice una contraseña segura.
USE master ; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************'; GO CREATE CERTIFICATE TestSQLServerCert WITH SUBJECT = 'Certificate to protect TDE key' GO
Cree una copia de seguridad del certificado del servidor en la base de datos maestra. Si el certificado que se usa para proteger la clave de cifrado de la base de datos se pierde, no podrá tener acceso a los datos de una base de datos protegida por TDE. En los siguientes ejemplos se almacenan la copia de seguridad del certificado y el archivo de clave privada en la ubicación de datos predeterminada de esta instancia de SQL Server (C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA).
Nota de seguridad Debe conservar copias tanto del archivo de certificado como del archivo de clave privada para recuperar el certificado. La contraseña de la clave privada no es necesario que sea la misma que la contraseña de la clave maestra de la base de datos.
BACKUP CERTIFICATE TestSQLServerCert TO FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', ENCRYPTION BY PASSWORD = '**************' ); GO
Cree una base de datos protegida por TDE.
CREATE DATABASE CustRecords ; GO
Para cambiar a la nueva base de datos. Cree una clave de cifrado de base de datos que esté protegida por el certificado del servidor en la base de datos maestra. Después, modifique la nueva base de datos para cifrarla con TDE.
USE CustRecords; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert; GO ALTER DATABASE CustRecords SET ENCRYPTION ON; GO
Nota
Para realizar este paso mediante SQL Server Management Studio, en el Explorador de objetos, haga clic con el botón secundario en la base de datos, elija Tareas y, a continuación, haga clic en Administrar cifrado de base de datos. Use el cuadro de diálogo Administrar cifrado de base de datos para seleccionar una clave de cifrado de base de datos y activar el cifrado de la base de datos.
Cree una tabla sencilla. Escriba los datos en la tabla y, a continuación, seleccione en la tabla para probar la base de datos.
CREATE TABLE CustomerRecord (CustomerID int PRIMARY KEY, SecretData nvarchar(100) NOT NULL) ; GO INSERT CustomerRecord (CustomerID,SecretData) VALUES (23997, 'Plain text data') ; GO SELECT CustomerID, SecretData FROM CustomerRecord ; GO
[Arriba]
Mover una base de datos protegida por TDE
Para mover una base de datos protegida por TDE a una nueva instancia de SQL Server
Separe la base de datos protegida por TDE del servidor de origen.
USE master ; GO EXEC master.dbo.sp_detach_db @dbname = N'CustRecords'; GO
Nota
Para realizar este paso con Management Studio, en el Explorador de objetos, haga clic con el botón secundario en la base de datos, elija Tareas y, a continuación, haga clic en Separar. Haga clic en Aceptar.
Con el Explorador de Windows, mueva o copie los archivos de la base de datos desde el servidor de origen a la misma ubicación en el servidor de destino.
Nota
Normalmente, los dos archivos de la base de datos (CustomerRecords.mdf y CustomerRecords_log.LDF) estarán en la ubicación predeterminada C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. Los nombres de los archivos y las ubicaciones pueden ser distintos.
Con el Explorador de Windows, mueva o copie la copia de seguridad del certificado del servidor y el archivo de clave privada desde el servidor de origen a la misma ubicación del servidor de destino. En nuestro ejemplo, estos archivos se almacenan en la carpeta de datos predeterminada que se encuentra en C:\Archivos de programa\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA.
Cree una clave maestra de la base de datos en la instancia de destino de SQL Server. La contraseña no es necesario que sea la misma que la del servidor de origen.
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************'; GO
Vuelva a crear el certificado del servidor mediante el archivo de copia de seguridad del certificado del servidor original. La contraseña debe ser la misma que la que se usó cuando se creó la copia de seguridad.
CREATE CERTIFICATE TestSQLServerCert FROM FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', DECRYPTION BY PASSWORD = '**************' ); GO
Adjunte la base de datos que se está moviendo. La ruta de acceso de los archivos de la base de datos debe ser la ubicación donde ha almacenado los archivos de la base de datos.
CREATE DATABASE [CustRecords] ON ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ), ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' ) FOR ATTACH ; GO
Nota
Para realizar este paso mediante Management Studio, en el Explorador de objetos, haga clic con el botón secundario en las Bases de datos y, a continuación, haga clic en Adjuntar. Haga clic en Agregar para buscar el archivo CustRecords.mdf y, a continuación, haga clic en Aceptar.
Pruebe el acceso a la base de datos seleccionando los datos en la tabla.
USE CustRecords ; GO SELECT CustomerID, SecretData FROM CustomerRecord ; GO
[Arriba]
Seguimiento: pasos que se deben realizar después de mover una base de datos protegida por TDE a una nueva instancia de SQL Server
Hacer una copia de seguridad de la base de datos maestra
- Al instalar el certificado y al adjuntar la base de datos se ha cambiado la información de la base de datos maestra. Debe crear una nueva copia de seguridad de la base de datos maestra.
[Arriba]
Vea también