Movendo um banco de dados protegido por TDE para outro SQL Server

Este tópico descreve as etapas para proteger um banco de dados do SQL Server usando TDE (criptografia de dados transparente) e, em seguida, mover o banco de dados para outra instância do SQL Server.

Neste tópico

  • Antes de começar:

    Plano de fundo

    Segurança

  • Exemplo:

    Para criar um banco de dados protegido por criptografia de dados transparente

    Para mover um banco de dados protegido por TDE para uma nova instância do SQL Server

  • Acompanhamento: etapas a serem executadas depois de mover um banco de dados protegido por TDE para uma nova instância do SQL Server

Plano de fundo

A TDE realiza a criptografia e a descriptografia de E/S em tempo real dos arquivos de dados e de log. A criptografia usa uma DEK (chave de criptografia do banco de dados), que é armazenada no registro de inicialização do banco de dados para disponibilidade durante a recuperação. A DEK é uma chave simétrica protegida por um certificado armazenado no banco de dados master do servidor ou uma chave assimétrica protegida por um módulo EKM. Ao mover um banco de dados protegido por TDE, é necessário também mover o certificado ou a chave assimétrica que é usada para abrir a DEK. O certificado ou a chave assimétrica devem ser instalados no banco de dados mestre do servidor de destino, de forma que o SQL Server possa acessar os arquivos do banco de dados. Para obter mais informações, consulte Compreendendo a TDE (Criptografia de Dados Transparente).

Segurança

Permissões

Requer a permissão CONTROL DATABASE no banco de dados mestre para criar a chave mestra de banco de dados.

Requer a permissão CREATE CERTIFICATE no banco de dados mestre para criar o certificado que protege a DEK.

Requer a permissão CONTROL DATABASE no banco de dados criptografado e a permissão VIEW DEFINITION na chave assimétrica ou no certificado usado para criptografar a chave de criptografia do banco de dados.

[Início]

Criando um banco de dados protegido por TDE

Para criar um banco de dados protegido por criptografia de dados transparente usando uma chave de criptografia de banco de dados protegida por um certificado no banco de dados mestre.

Para criar um banco de dados protegido por criptografia de dados transparente

  1. No Editor de Consultas, insira os comandos Transact-SQL a seguir para criar uma chave mestra de banco de dados e um certificado no banco de dados mestre.

    Observação sobre segurançaObservação sobre segurança

    Substitua os asteriscos por uma senha. Não use uma senha em branco. Use uma senha forte.

    USE master ;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    CREATE CERTIFICATE TestSQLServerCert 
    WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
  2. Crie um backup do certificado do servidor no banco de dados mestre. Se o certificado que é usado para proteger a chave de criptografia do banco de dados for perdido, você não poderá acessar os dados em um banco de dados protegido por TDE. O exemplo a seguir armazena o backup do certificado e o arquivo de chave privada no local de dados padrão desta instância do SQL Server (C:\Arquivos de Programas\Microsoft SQL Server\MSSQL10.MSS QLSERVER\MSSQL\DATA).

    Observação sobre segurançaObservação sobre segurança

    Você deve reter cópias do arquivo de certificado e do arquivo de chave privada para poder recuperar o certificado. A senha da chave privada não precisa ser igual à senha da chave mestra do banco de dados.

    BACKUP CERTIFICATE TestSQLServerCert 
    TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '**************'
    );
    GO
    
  3. Crie um banco de dados a ser protegido por TDE.

    CREATE DATABASE CustRecords ;
    GO
    
  4. Alterne para o novo banco de dados. Crie uma chave de criptografia do banco de dados que esteja protegida pelo certificado do servidor no banco de dados mestre. Em seguida, altere o novo banco de dados para criptografar o banco de dados usando 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
    
    ObservaçãoObservação

    Para executar esta etapa usando o SQL Server Management Studio, no Pesquisador de Objetos, clique com o botão direito do mouse no banco de dados, aponte para tarefas e clique em Gerenciar Criptografia de Banco de dados. Use a caixa de diálogo Gerenciar Criptografia de Banco de Dados para selecionar uma chave de criptografia de banco de dados e ativar a criptografia de banco de dados.

  5. Crie uma tabela simples. Insira dados na tabela e selecione na tabela para testar o banco de dados.

    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
    

[Início]

Movendo um banco de dados protegido por TDE

Para mover um banco de dados protegido por TDE para uma nova instância do SQL Server

  1. Desanexe o banco de dados protegido por TDE do servidor de origem.

    USE master ;
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
    GO
    
    ObservaçãoObservação

    Para executar esta etapa usando o Management Studio, no Pesquisador de Objetos, clique com o botão direito do mouse no banco de dados, aponte para tarefas e clique em Desanexar. Clique em OK.

  2. Usando o Windows Explorer, mova ou copie os arquivos de banco de dados do servidor de origem para o mesmo local no servidor de destino.

    ObservaçãoObservação

    Normalmente, os dois arquivos de banco de dados (CustomerRecords.mdf e CustomerRecords_log.LDF) estarão no local padrão C:\Arquivos de Programas\Microsoft SQL Server\MSSQL10.MSS QLSERVER\MSSQL\DATA. Os nomes e locais dos seus arquivos poderão ser diferentes.

  3. Usando o Windows Explorer, mova ou copie o backup do certificado do servidor e o arquivo de chave privada do servidor de origem para o mesmo local no servidor de destino. Em nosso exemplo, esses arquivos são armazenados na pasta de dados padrão em C:\Arquivos de Programas\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA.

  4. Crie uma chave mestra de banco de dados na instância de destino do SQL Server. A senha não precisa ser igual à do servidor de origem.

    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    
  5. Recrie o certificado do servidor usando o arquivo de backup de certificado do servidor original. A senha deve ser igual à que foi usada na criação do conjunto de backup.

    CREATE CERTIFICATE TestSQLServerCert 
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '**************'
    );
    GO
    
  6. Anexe o banco de dados que está sendo movido. O caminho dos arquivos de banco de dados deve ser o local onde você armazenou os arquivos de banco de dados.

    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
    
    ObservaçãoObservação

    Para executar esta etapa usando o Management Studio, no Pesquisador de Objetos, clique com o botão direito do mouse em Bancos de Dados e clique em Desanexar. Clique em Adicionar para localizar o arquivo CustRecords.mdf e clique em OK.

  7. Teste o acesso ao banco de dados selecionando dados da tabela.

    USE CustRecords ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

    [Início]

Acompanhamento: etapas a serem executadas depois de mover um banco de dados protegido por TDE para uma nova instância do SQL Server

Fazer backup do banco de dados mestre

  • A instalação do certificado e a anexação do banco de dados alteraram informações no banco de dados mestre. Você deve criar um novo backup do banco de dados mestre.

[Início]