Share via


Mover una base de datos protegida por TDE a otra instancia de SQL Server

En este tema se describe cómo proteger una base de datos mediante el uso del cifrado de datos transparente (TDE) y, a continuación, 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 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 maestra (master) del servidor o una clave asimétrica protegida por un módulo EKM.

En este tema

  • Antes de empezar:

    Limitaciones y restricciones

    Seguridad

  • Para crear una base de datos protegida por el cifrado de datos transparente, utilizando:

    SQL Server Management Studio

    Transact-SQL

  • Para mover una base de datos, utilizando:

    SQL Server Management Studio

    Transact-SQL

Antes de empezar

Limitaciones y restricciones

  • 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 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\MSSQL11.MSSQLSERVER\MSSQL\DATA de forma predeterminada. Los nombres de los archivos y las ubicaciones pueden ser distintos.

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.

Icono de flecha usado con el vínculo Volver al principio[Top]

Para crear una base de datos protegida por el cifrado de datos transparente

Usar SQL Server Management Studio

  1. Cree una clave maestra y un certificado de base de datos en la base de datos maestra. Para obtener más información, vea Usar Transact-SQL más adelante.

  2. Cree una copia de seguridad del certificado del servidor en la base de datos maestra. Para obtener más información, vea Usar Transact-SQL más adelante.

  3. En el Explorador de objetos, haga clic con el botón secundario 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, haga clic en 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, haga clic en el signo más para expandir la carpeta Bases de datos.

  7. Haga clic con el botón secundario en la base de datos que creó, seleccione Tareas y seleccione 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 no puede estar vacío. 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 estará 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 Certificados y claves asimétricas de SQL Server.

    • 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, haga clic en Aceptar.

Usar 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, haga clic en Nueva consulta.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en 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\MSSQL11.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 obtener más información, vea:

Icono de flecha usado con el vínculo Volver al principio[Top]

Para mover una base de datos

Usar SQL Server Management Studio

  1. En el Explorador de objetos, haga clic con el botón secundario en la base de datos que cifró anteriormente, seleccione Tareas y seleccione 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 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, haga clic en 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.

    • Estado
      Muestra uno de los siguientes estados: Listo o No está listo.

    • Mensaje
      La columna Mensaje puede mostrar información sobre la base de datos, tal 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 más conexiones activas, el Estado es No está listo y la columna Mensaje muestra <number_of_active_connections> 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, haga clic en el texto con hipervínculo para abrir el Monitor de actividad.

  2. Haga clic en Aceptar.

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

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

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

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

  7. En el Explorador de objetos, en SQL Server Management Studio, haga clic con el botón secundario en la carpeta Bases de datos y, a continuación, seleccione Adjuntar.

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

  9. En el cuadro de diálogo Buscar archivos de base de datos - server_name, seleccione el archivo de base de datos que desea adjuntar al servidor nuevo y haga clic en 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.

    • <no column header>
      Muestra un icono que indica el estado de la operación de adjuntar. Los iconos posibles se indican en la descripción de Estado que encontrará más adelante.

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

      Icono

      Texto de estado

      Descripción

      (Sin icono)

      (Sin texto)

      La operación de adjuntar no se ha 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 ha iniciado, pero no ha finalizado.

      Marca de verificación verde

      Correcto

      El objeto se ha adjuntado 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 se ha revertido debido a un error al adjuntar otro objeto.

    • Mensaje
      Muestra un mensaje en blanco o un hipervínculo que indica "Archivo no encontrado".

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

    • Quitar
      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, haga clic en el botón Examinar ().

      [!NOTA]

      Si un archivo no existe, la columna Mensaje muestra "No se encontró". Si un archivo de registro no se encuentra, indica que se halla en otro directorio o que 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".

Usar 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, haga clic en Nueva consulta.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en 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\MSSQL11.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )
    FOR ATTACH ;
    GO
    

Para obtener más información, vea:

Icono de flecha usado con el vínculo Volver al principio[Top]

Vea también

Conceptos

Adjuntar y separar bases de datos (SQL Server)