Compartir a través de


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

  1. 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 seguridadNota 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
    
  2. 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 seguridadNota 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
    
  3. Cree una base de datos protegida por TDE.

    CREATE DATABASE CustRecords ;
    GO
    
  4. 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.

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

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

  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.

    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.

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

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

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