Mover um banco de dados protegido por TDE para outro SQL Server
Aplica-se a:SQL Server
Este artigo descreve como proteger um banco de dados usando a criptografia de dados transparente (TDE) e, em seguida, mover o banco de dados para outra instância do SQL Server usando o SQL Server Management Studio ou Transact-SQL. A TDE executa a encriptação de E/S em tempo real e a desencriptação dos dados e ficheiros de registo. A criptografia usa uma chave de criptografia de banco de dados (DEK), que é armazenada no registro de inicialização do banco de dados para disponibilidade durante a recuperação. A DEK é uma chave simétrica protegida usando um certificado armazenado no banco de dados master
do servidor ou uma chave assimétrica protegida por um módulo EKM.
Limitações
Ao mover um banco de dados protegido por TDE, você também deve mover o certificado ou a chave assimétrica usada para abrir a DEK. O certificado ou a chave assimétrica deve ser instalado no banco de dados
master
do servidor de destino, para que o SQL Server possa acessar os arquivos de banco de dados. Para obter mais informações, consulte Transparent data encryption (TDE).Você deve manter cópias do arquivo de certificado e do arquivo de chave privada para recuperar o certificado. A senha da chave privada não precisa ser a mesma que a senha da chave mestra do banco de dados.
O SQL Server armazena os arquivos criados aqui em
C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\DATA
por padrão, onde<xx>
é o número da versão.
Permissões
Requer permissão
CONTROL DATABASE
no banco de dadosmaster
para criar a chave principal do banco de dados.Requer permissão
CREATE CERTIFICATE
no banco de dadosmaster
para criar o certificado que protege a DEK.Requer permissão
CONTROL DATABASE
sobre o banco de dados encriptado e permissãoVIEW DEFINITION
sobre o certificado ou chave assimétrica utilizada para encriptar a chave de encriptação do banco de dados.
Criar um banco de dados protegido por criptografia de dados transparente
Os procedimentos a seguir mostram como criar um banco de dados protegido por TDE usando o SQL Server Management Studio e o Transact-SQL.
Usar o SQL Server Management Studio
Crie uma chave mestra e um certificado de banco de dados no banco de dados
master
. Para obter mais informações, consulte Usando o Transact-SQL mais adiante neste artigo.Crie um backup do certificado do servidor no banco de dados
master
. Para obter mais informações, consulte Usando o Transact-SQL mais adiante neste artigo.No Pesquisador de Objetos, clique com o botão direito do mouse na pasta Bancos de Dados e selecione Novo Banco de Dados.
Na caixa de diálogo Novo Banco de Dados, na caixa Nome do banco de dados, digite o nome do novo banco de dados.
Na caixa Proprietário, insira o nome do proprietário do novo banco de dados. Como alternativa, selecione as reticências (...) para abrir a caixa de diálogo Selecionar Proprietário do Banco de Dados. Para obter mais informações sobre como criar um novo banco de dados, consulte Criar um banco de dados.
No Pesquisador de Objetos, selecione o sinal de adição para expandir a pasta Bancos de Dados.
Clique com o botão direito do rato na base de dados que criou, aponte para Tarefase selecione Gerir Encriptação de Base de Dados.
As opções a seguir estão disponíveis na caixa de diálogo Gerenciar Criptografia de Banco de Dados.
Algoritmo de encriptação
Exibe ou define o algoritmo a ser usado para criptografia de banco de dados. AES128 é o algoritmo padrão. Este campo não pode estar em branco. Para obter mais informações sobre algoritmos de criptografia, consulte Escolher um algoritmo de criptografia.Usar certificado de servidor
Define a criptografia a ser protegida por um certificado. Selecione um na lista. Se você não tiver a permissãoVIEW DEFINITION
em certificados de servidor, essa lista estará vazia. Se um método de certificado de criptografia for selecionado, esse valor não poderá estar vazio. Para obter mais informações sobre certificados, consulte certificados do SQL Server e chaves assimétricas.Usar chave assimétrica do servidor
Define a criptografia a ser protegida por uma chave assimétrica. Somente as chaves assimétricas disponíveis são exibidas. Somente uma chave assimétrica protegida por um módulo EKM pode criptografar um banco de dados usando TDE.Ativar criptografia de base de dados
Altera a base de dados para ativar (marcado) ou desativar (desmarcado) o TDE.Quando terminar, selecione OK.
Utilize Transact-SQL
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.
-- 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 mais informações, consulte:
- CRIAR CHAVE MESTRA (Transact-SQL)
- CRIAR CERTIFICADO (Transact-SQL)
- CERTIFICADO DE CÓPIA DE SEGURANÇA (Transact-SQL)
- CRIAR BANCO DE DADOS
- CRIAR CHAVE DE CRIPTOGRAFIA DE BANCO DE DADOS (Transact-SQL)
- ALTERAR BASE DE DADOS (Transact-SQL)
Mover um banco de dados protegido por criptografia de dados transparente
Os procedimentos a seguir mostram como mover um banco de dados protegido por TDE usando o SQL Server Management Studio e o Transact-SQL.
Utilizar SQL Server Management Studio
No Explorador de Objetos, clique com o botão direito do mouse no banco de dados criptografado anteriormente, aponte para Tarefas e selecione Desanexar....
As opções a seguir estão disponíveis na caixa de diálogo Desanexar Banco de Dados.
Bancos de dados para desanexar
Lista os bancos de dados a serem desanexados.Nome do banco de dados
Exibe o nome do banco de dados a ser desanexado.Desconectar Ligações
Desconecte as conexões com o banco de dados especificado.
Observação
Não é possível desanexar um banco de dados com conexões ativas.
Atualizar estatísticas
Por padrão, a operação de desanexação retém quaisquer estatísticas de otimização desatualizadas ao desanexar o banco de dados; Para atualizar as estatísticas de otimização existentes, marque esta caixa de seleção.
Manter Full-Text catálogos
Por padrão, a operação de desanexação mantém todos os catálogos de texto completo associados ao banco de dados. Para removê-los, desmarque a caixa de seleção Manter Catálogos Full-Text. Essa opção aparece somente quando você está atualizando um banco de dados do SQL Server 2005 (9.x).
Status
Exibe um dos seguintes estados: Pronto ou Não pronto.
Mensagem
A coluna Mensagem pode exibir informações sobre a base de dados, da seguinte maneira:
Quando um banco de dados está envolvido com a replicação, a de Status do é Não está pronto e a coluna Mensagem exibe Banco de Dados replicado.
Quando uma base de dados tem uma ou mais ligações ativas, o Estado do é Não pronto e a coluna Mensagem exibe <número_de_conexões_ativas>ligação(ões) ativa(s) - por exemplo: 1 ligação ativa. Antes de desanexar o banco de dados, você precisa desconectar todas as conexões ativas selecionando Drop Connections.
Para obter mais informações sobre uma mensagem, selecione o texto com hiperlink para abrir o Monitor de Atividade.
Selecione OK.
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.
Usando o Windows Explorer, mova ou copie o backup do certificado do servidor e do arquivo de chave privada do servidor de origem para o mesmo local no servidor de destino.
Crie uma chave mestra de banco de dados na instância de destino do SQL Server. Para obter mais informações, consulte Usando o Transact-SQL mais adiante neste artigo.
Recrie o certificado do servidor usando o arquivo de backup do certificado do servidor original. Para obter mais informações, consulte Usando o Transact-SQL mais adiante neste artigo.
No Pesquisador de Objetos no SQL Server Management Studio, clique com o botão direito do mouse na pasta Bancos de Dados e selecione Anexar....
Na caixa de diálogo Anexar Bancos de Dados, em Bancos de Dados para anexar, selecione Adicionar.
Na caixa de diálogo Localizar Arquivos de Banco de Dados -server_name, selecione o arquivo de banco de dados a ser anexado ao novo servidor e selecione OK.
As opções a seguir estão disponíveis na caixa de diálogo Anexar Bancos de Dados.
Bases de dados a anexar
Exibe informações sobre os bancos de dados selecionados.<sem cabeçalho de coluna>
Exibe um ícone indicando o status da operação de anexação. Os ícones possíveis são descritos na descrição do Status.Localização do arquivo MDF
Exibe o caminho e o nome do arquivo MDF selecionado.Nome do banco de dados
Exibe o nome do banco de dados.Anexar como
Opcionalmente, especifica um nome diferente para atribuir ao banco de dados durante a anexação.Proprietário
Fornece uma lista suspensa de possíveis proprietários de banco de dados a partir da qual você pode, opcionalmente, selecionar um proprietário diferente.Status
Exibe o status do banco de dados de acordo com a tabela a seguir.
Ícone | Texto de estado | Descrição |
---|---|---|
(Sem ícone) | (Sem texto) | A operação de anexar não foi iniciada ou pode estar pendente para este objeto. Este é o padrão quando a caixa de diálogo é aberta. |
Triângulo verde, apontando para a direita | Em curso | A operação de anexação foi iniciada, mas não foi concluída. |
Marca de verificação verde | Sucesso | O objeto foi anexado com êxito. |
Círculo vermelho contendo uma cruz branca | Erro | A operação Anexar encontrou um erro e não foi concluída com êxito. |
Círculo contendo dois quadrantes pretos (à esquerda e à direita) e dois quadrantes brancos (na parte superior e inferior) | Parou | A operação de anexação não foi concluída com êxito porque o usuário interrompeu a operação. |
Círculo contendo uma seta curva apontando no sentido anti-horário | Revertido | A operação de anexação foi bem-sucedida, mas foi revertida devido a um erro durante a anexação de outro objeto. |
Mensagem
Exibe uma mensagem em branco ou um hiperlink "Arquivo não encontrado".
Adicionar
Encontre os principais arquivos de banco de dados necessários. Quando o utilizador seleciona um ficheiro .mdf, a informação aplicável é automaticamente preenchida nos respetivos campos das Bases de Dados para anexar grelha.
Remover
Remove o arquivo selecionado do Bancos de Dados para anexar grade.
Detalhes da base de dados "<database_name>"
Exibe os nomes dos arquivos a serem anexados. Para verificar ou alterar o nome do caminho de um arquivo, selecione o botão Procurar (...).
Observação
Se um arquivo não existir, a coluna Mensagem exibirá "Não encontrado". Se um arquivo de log não for encontrado, ele existirá em outro diretório ou foi excluído. Você precisa atualizar o caminho do arquivo nos detalhes do banco de dados na grade para apontar para o local correto ou remover o arquivo de log da grade. Se um arquivo de dados .ndf não for encontrado, você precisará atualizar seu caminho na grade para apontar para o local correto.
Nome do arquivo original
Exibe o nome do arquivo anexado pertencente ao banco de dados.
Tipo de arquivo
Indica o tipo de arquivo, Dataou Log.
Caminho Atual do Ficheiro
Exibe o caminho para o arquivo de banco de dados selecionado. O caminho pode ser editado manualmente.
Mensagem
Exibe uma mensagem em branco ou um hiperlink "Arquivo não encontrado".
Use Transact-SQL
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.
-- 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 mais informações, consulte: