Traslado de una base de datos protegida TDE a otra de SQL Server
Se aplica a: SQL Server
Este artículo describe cómo proteger una base de datos mediante el uso del cifrado de datos transparente (TDE) y luego mover la base de datos a otra instancia de SQL Server mediante SQL Server Management Studio o Transact-SQL. TDE realiza el cifrado y descifrado de E/S en tiempo real de los archivos de datos y de registro. El cifrado usa una clave de cifrado de base de datos (DEK), que se almacena en el registro de arranque de la base de datos de disponibilidad durante la recuperación. DEK es una clave simétrica protegida mediante un certificado almacenado en la base de datos maestra (master
) del servidor o una clave asimétrica protegida por un módulo EKM.
Limitaciones
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
master
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 Cifrado de datos transparente (TDE).Debe conservar copias tanto del archivo de certificado como del archivo de clave privada para recuperar el certificado. No es necesario que la contraseña de la clave privada sea la misma que la contraseña de la clave maestra de la base de datos.
SQL Server almacena los archivos creados aquí en
C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\DATA
de manera predeterminada, donde<xx>
es el número de versión.
Permisos
Requiere el permiso
CONTROL DATABASE
en la base de datosmaster
para crear la clave maestra de la base de datos.Requiere el permiso
CREATE CERTIFICATE
en la base de datosmaster
para crear el certificado que protege DEK.Requiere el permiso
CONTROL DATABASE
para la base de datos cifrada y el permisoVIEW DEFINITION
para el certificado o la clave asimétrica usados para cifrar la clave de cifrado de la base de datos.
Crear una base de datos protegida por el cifrado de datos transparente
En los siguientes procedimientos se muestra cómo crear una base de datos protegida por TDE mediante SQL Server Management Studio y Transact-SQL.
Uso de SQL Server Management Studio
Cree una clave maestra y un certificado de base de datos en la base de datos
master
. Para obtener más información, vea Usar Transact-SQL más adelante en este artículo.Cree una copia de seguridad del certificado de servidor en la base de datos
master
. Para obtener más información, vea Usar Transact-SQL más adelante en este artículo.En el Explorador de objetos, haga clic con el botón derecho en la carpeta Bases de datos y seleccione Nueva base de datos.
En el cuadro de diálogo Nueva base de datos , en el cuadro Nombre de la base de datos , escriba el nombre de la nueva base de datos.
En el cuadro Propietario , escriba el nombre del propietario de la nueva base de datos. Como alternativa, seleccione los puntos suspensivos (...) para abrir el cuadro de diálogo Seleccionar propietario de base de datos. Para obtener más información sobre la creación de una nueva base de datos, vea Crear una base de datos.
En el Explorador de objetos, seleccione el signo más para expandir la carpeta Bases de datos .
Haga clic con el botón derecho en la base de datos que creó, seleccione Tareasy Administrar cifrado de base de datos.
En el cuadro de diálogo Administrar cifrado de base de datos están disponibles las siguientes opciones.
Algoritmo de cifrado
Muestra o establece el algoritmo que se debe utilizar para el cifrado de la base de datos. AES128 es el algoritmo predeterminado. Este campo puede estar en blanco. Para obtener más información sobre algoritmos de cifrado, vea Elegir un algoritmo de cifrado.Usar certificado de servidor
Establece que el cifrado se proteja mediante un certificado. Seleccione uno de la lista. Si no tiene el permisoVIEW DEFINITION
para los certificados de servidor, esta lista está vacía. Si se selecciona un método de cifrado de certificado, este valor no puede estar vacío. Para obtener más información acerca de los certificados, vea SQL Server Certificates and Asymmetric Keys.Usar clave asimétrica de servidor
Establece que el cifrado se proteja mediante una clave asimétrica. Solo se muestran las claves asimétricas disponibles. Solo una clave asimétrica protegida por un módulo EKM puede cifrar una base de datos mediante TDE.Activar cifrado de base de datos
Modifica la base de datos para habilitar (activada) o deshabilitar (sin activar) TDE.Cuando termine, seleccione Aceptar.
Uso de Transact-SQL
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra Estándar, seleccione Nueva consulta.
Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar.
-- Create a database master key and a certificate in the master database. USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'; GO CREATE CERTIFICATE TestSQLServerCert WITH SUBJECT = 'Certificate to protect TDE key' GO -- Create a backup of the server certificate in the master database. -- The following code stores the backup of the certificate and the private key file in the default data location for this instance of SQL Server -- (C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA). BACKUP CERTIFICATE TestSQLServerCert TO FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1' ); GO -- Create a database to be protected by TDE. CREATE DATABASE CustRecords; GO -- Switch to the new database. -- Create a database encryption key, that is protected by the server certificate in the master database. -- Alter the new database to encrypt the database using 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
Para más información, vea:
- CREATE MASTER KEY (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)
- BACKUP CERTIFICATE (Transact-SQL)
- CREATE DATABASE
- CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
Cómo mover una base de datos protegida por el cifrado de datos transparente (TDE)
En los siguientes procedimientos se muestra cómo mover una base de datos protegida por TDE mediante SQL Server Management Studio y Transact-SQL.
Uso de SQL Server Management Studio
En el Explorador de objetos, haga clic con el botón derecho en la base de datos que cifró anteriormente, seleccione Tareas y Separar....
En el cuadro de diálogo Separar base de datos están disponibles las siguientes opciones.
Bases de datos que se van a separar
Enumera las bases de datos que se van a separar.Nombre de la base de datos
Muestra el nombre de la base de datos que se va a separar.Quitar conexiones
Desconecta las conexiones a la base de datos especificada.
Nota:
No puede separar una base de datos con conexiones activas.
Actualizar estadísticas
De forma predeterminada, la operación de separación conserva las estadísticas de optimización obsoletas al separar la base de datos; para actualizar las estadísticas de optimización existentes, seleccione esta casilla.
Mantener catálogos de texto completo
De forma predeterminada, la operación de separación conserva los catálogos de texto completo asociados a la base de datos. Para quitarlos, desactive la casilla Mantener catálogos de texto completo . Esta opción solo aparece cuando se está actualizando una base de datos desde SQL Server 2005 (9.x).
Estado
Se muestra uno de los siguientes estados: Listo o No está listo.
Mensaje
En la columna Mensaje puede aparecer información sobre la base de datos, tal y como se indica a continuación:
Cuando una base de datos está implicada en una replicación, el Estado es No está listo y la columna Mensaje muestra Base de datos replicada.
Cuando una base de datos tiene una o varias conexiones activas, el valor de Estado es No está listo y en la columna Mensaje se muestra <número_de_conexiones_activas>Conexiones activas (por ejemplo, 1 conexiones activas). Antes de separar la base de datos, debe desconectar todas las conexiones activas seleccionando Quitar conexiones.
Para obtener más información acerca de un mensaje, seleccione el texto con hipervínculo para abrir el Monitor de actividad.
Seleccione 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.
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.
Cree una clave maestra de la base de datos en la instancia de destino de SQL Server. Para obtener más información, vea Usar Transact-SQL más adelante en este artículo.
Vuelva a crear el certificado del servidor mediante el archivo de copia de seguridad del certificado del servidor original. Para obtener más información, vea Usar Transact-SQL más adelante en este artículo.
En Explorador de objetos de SQL Server Management Studio, haga clic con el botón derecho en la carpeta Bases de datos y seleccione Adjuntar....
En el cuadro de diálogo Adjuntar bases de datos, en Bases de datos que se van a adjuntar, seleccione Agregar.
En el cuadro de diálogo Buscar archivos de base de datos:server_name, seleccione el archivo de base de datos que quiera adjuntar al servidor nuevo y seleccione Aceptar.
En el cuadro de diálogo Adjuntar bases de datos están disponibles las siguientes opciones.
Bases de datos que se van a adjuntar
Muestra información sobre las bases de datos seleccionadas.<sin encabezado de columna>
Muestra un icono que indica el estado de la operación de adjuntar. Los iconos posibles se indican en la descripción de Estado.Ubicación del archivo MDF
Muestra la ruta de acceso y el nombre del archivo MDF seleccionado.Nombre de la base de datos
Muestra el nombre de la base de datos.Adjuntar como
Opcionalmente, especifica un nombre distinto con el que se debe adjuntar la base de datos.Propietario
Ofrece una lista desplegable de los posibles propietarios de base de datos desde los que opcionalmente puede seleccionarse otro propietario.Estado
Muestra el estado de la base de datos de acuerdo con la tabla siguiente.
Iconos | Texto de estado | Descripción |
---|---|---|
(Sin icono) | (Sin texto) | La operación de adjuntar no se había iniciado o puede estar pendiente para este objeto. Es la opción predeterminada al abrir el diálogo. |
Triángulo verde hacia la derecha | En curso | La operación de adjuntar se había iniciado, pero no ha finalizado. |
Marca de verificación verde | Correcto | El objeto se ha adjuntó correctamente. |
Círculo rojo con una cruz blanca | Error | La operación de adjuntar ha detectado un error y no ha finalizado correctamente. |
Círculo con dos cuadrantes negros (a la izquierda y la derecha) y dos cuadrantes blancos (en la parte superior e inferior) | Detenido | La operación de adjuntar no ha finalizado correctamente porque el usuario la ha detenido. |
Círculo con una flecha curvada que apunta hacia la izquierda | Revertido | La operación de adjuntar se ha ejecutado correctamente, pero revirtió debido a un error al adjuntar otro objeto. |
Mensaje
Muestra un mensaje en blanco o un hipervínculo que indica "Archivo no encontrado".
Add (Agregar)
Busca los archivos de base de datos principales necesarios. Si el usuario selecciona un archivo .mdf, la información pertinente se llena automáticamente en los respectivos campos de la cuadrícula Bases de datos que se van a adjuntar .
Remove
Quita el archivo seleccionado de la cuadrícula Bases de datos que se van a adjuntar .
" <database_name> " detalles de la base de datos
Muestra los nombres de los archivos que se van a adjuntar. Para comprobar o cambiar el nombre de la ruta de acceso de un archivo, seleccione el botón Examinar (...).
Nota:
Si no existe un archivo, la columna Mensaje muestra "No encontrado". Si no se encuentra un archivo de registro, existe en otro directorio o se ha eliminado. En tal caso, debe actualizar la ruta de acceso del archivo en la cuadrícula Detalles de la base de datos para que señale la ubicación correcta o eliminar el archivo de registro de la cuadrícula. Si un archivo de datos .ndf no se encuentra, debe actualizar su ruta de acceso en la cuadrícula para que señale la ubicación correcta.
Nombre del archivo original
Muestra el nombre del archivo adjunto que pertenece a la base de datos.
Tipo de archivo
Indica el tipo de archivo, que puede ser de datos o de registro.
Ruta de acceso del archivo actual
Muestra la ruta de acceso del archivo de base de datos seleccionado. La ruta de acceso puede modificarse manualmente.
Mensaje
Muestra un mensaje en blanco o un hipervínculo que indica "Archivo no encontrado".
Uso de Transact-SQL
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra Estándar, seleccione Nueva consulta.
Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar.
-- Detach the TDE protected database from the source server. USE master; GO EXEC master.dbo.sp_detach_db @dbname = N'CustRecords'; GO -- Move or copy the database files from the source server to the same location on the destination server. -- Move or copy the backup of the server certificate and the private key file from the source server to the same location on the destination server. -- Create a database master key on the destination instance of SQL Server. USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'; GO -- Recreate the server certificate by using the original server certificate backup file. -- The password must be the same as the password that was used when the backup was created. CREATE CERTIFICATE TestSQLServerCert FROM FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', DECRYPTION BY PASSWORD = '*rt@40(FL&dasl1' ); GO -- Attach the database that is being moved. -- The path of the database files must be the location where you have stored the database files. CREATE DATABASE [CustRecords] ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf'), (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF') FOR ATTACH; GO
Para más información, vea: