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 datos master para crear la clave maestra de la base de datos.

  • Requiere el permiso CREATE CERTIFICATE en la base de datos master 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.

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

  1. 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.

  2. 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.

  3. En el Explorador de objetos, haga clic con el botón derecho en la carpeta Bases de datos y seleccione Nueva base de datos.

  4. 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.

  5. 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.

  6. En el Explorador de objetos, seleccione el signo más para expandir la carpeta Bases de datos .

  7. 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 permiso VIEW 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.

  8. Cuando termine, seleccione Aceptar.

Uso de Transact-SQL

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. 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:

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

  1. 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.

  1. Seleccione Aceptar.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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....

  7. En el cuadro de diálogo Adjuntar bases de datos, en Bases de datos que se van a adjuntar, seleccione Agregar.

  8. 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.

Icon 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 .

"<>" 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

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. 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: