Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criptografia de backup do banco de dados do SQL Server


Para gerenciar a segurança de dados dos quais foi feito backup pelo sistema de arquivos como arquivos de backup de banco de dados, o SQL Server fornece o recurso de criptografia de backup. Neste artigo, falaremos sobre as opções de criptografia disponíveis no SQL Server para backups de banco de dados. Veremos mais detalhadamente os detalhes de uso, os benefícios e as práticas recomendadas para criptografar o backup do banco de dados do SQL Server durante o processo de backup.

O que é criptografia de backup de banco de dados?


A necessidade de manter os dados seguros cresce dramaticamente. Juntamente com os dados, você precisa ter certeza de que os arquivos de backup do banco de dados também estão protegidos, especialmente aqueles em um sistema de arquivos do servidor. Os dados dentro dos arquivos de backup nativos do SQL Server são armazenados como texto simples no sistema de arquivos. Você pode lê-lo sem esforço usando um editor de texto.
Dependendo dos tipos de dados utilizados em suas tabelas, alguns dados são muito mais fáceis de ler do que outros. A imagem a seguir demonstra o arquivo de backup aberto no editor de texto do Bloco de Notas:



Como você pode ver, o código T-SQL é visível e fácil de ler. No entanto, uma vez que criamos o backup com uma criptografia, ninguém terá a chance de entrar nos bastidores.

A imagem a seguir demonstra o mesmo AdventureWorks2014.bak com uma criptografia.



A partir do SQL Server 2014, o mecanismo de banco de dados pode criptografar os dados ao criar um arquivo de backup. Você pode especificar o algoritmo de criptografia e o criptografador, um certificado ou uma chave assimétrica, ao criar um backup. O recurso de criptografia de backup melhora a segurança e funciona em qualquer domínio em que o próprio SQL Server possa ser utilizado.

O que é necessário?


Para criptografar o backup do banco de dados, você precisa especificar um algoritmo de criptografia e um criptografador. Existem duas opções de criptografia suportadas:
  • Algoritmo de criptografia:AES_128, AES_192, AES_256 e Triple_DES_3Key
  • Criptografador:um certificado ou chave assimétrica

Se você perder acidentalmente o certificado ou a chave assimétrica, nunca terá a chance de restaurar o arquivo de backup. Assim, é muito importante manter o certificado ou chave assimétrica em um local seguro.

Benefícios da criptografia de backup de banco de dados

  • Ajuda a proteger os dados.
  • Pode ser aplicado aos bancos de dados criptografados com a ajuda do Transparent Data Encryption (TDE).
  • Suportado para backups criados pelo backup gerenciado do SQL Server para o Microsoft Azure que fornece segurança adicional para backups externos.
  • Suporta vários algoritmos de criptografia de até AES 256 bits. Isso permite que você selecione um algoritmo que atenda aos seus requisitos.
  • É possível integrar chaves de criptografia com provedores Extended Key Management (EKM).

Mudanças nas tabelas do sistema


Ao criar o backup criptografado, algumas informações são registradas no MSDB banco de dados do sistema:o algoritmo de chave, o tipo de criptografia e a impressão digital de criptografia usada.
O backupset tabela contém uma informação para cada conjunto de backup. Um conjunto de backup contém o backup para uma única operação de backup bem-sucedida.
As seguintes colunas:key_algorithm , encryptor_thumprint , encryptor_type desta DMV armazenam informações sobre se o backup é criptografado, o tipo de criptografador e a impressão digital do criptografador.
SELECT TOP 5 name, key_algorithm, encryptor_thumbprint, encryptor_typeFROM msdb.dbo.backupset AS backupset com (NOLOCK)WHERE type IN ('D', 'I') AND database_name ='AdventureWorks2014'ORDER BY backupset.backup_start_date DESCGO 
Aqui está o que você verá:



Para obter mais informações sobre a tabela de backupset, leia a seguinte página de documentação do MSDN:backupset (Transact-SQL)

O conjunto de mídia de backup A tabela contém uma informação para cada conjunto de mídia de backup. A coluna is_encrypted indica se o backup está criptografado ou não. 0 – não criptografado e 1 – criptografado. Inicialmente, esse valor é definido como NULL, o que indica backupmediaset não criptografado.
SELECT TOP 5 media_set_id, is_encrypted, is_compressedFROM msdb.dbo.backupmediaset AS mediaset com (NOLOCK)ORDER BY mediaset.media_set_id DESCGO

O conjunto de resultados:


Métodos de criptografia de backup de banco de dados

1. Com a ajuda do dbForge Studio para SQL Server


É possível criar criptografia de backup de banco de dados com a ajuda do SSMS, mas eu pessoalmente prefiro o dbForge Studio for SQL Server — um IDE poderoso para gerenciamento, administração, desenvolvimento, relatório de dados e análise do SQL Server. Este IDE é como um canivete suíço para desenvolvedores de banco de dados. A ferramenta fornece recursos essenciais que estão envolvidos em uma GUI bem projetada e intuitiva. Para se familiarizar com os principais recursos, consulte o vídeo introdutório dbForge Studio for SQL Server – Visão geral (04:03 min):



Depois de baixar e instalar a ferramenta, você precisa criar a conexão com o banco de dados.

Observe que o recurso de criptografia de backup foi introduzido no SQL Server 2014. O SQL Server Express não oferece suporte à criptografia durante o backup.

1. Depois de se conectar a uma instância necessária do SQL Server, no Database Explorer , clique no nome do servidor para expandir a árvore do servidor.

2. Clique com o botão direito do mouse em um banco de dados necessário, aponte para Tarefas e clique em Fazer backup . A caixa de diálogo Fazer backup do banco de dados é exibida.



Na Conexão caixa de listagem, verifique o nome da conexão. Opcionalmente, você pode selecionar uma conexão diferente na lista.





3. Clique em Avançar para prosseguir com as Opções de mídia .



A opção de criptografia é desativada se você optar por anexar a opção de conjunto de backup existente na página Opções de mídia do assistente de banco de dados de backup. Escolha o backup para um novo conjunto de mídia e apague todos os conjuntos de backup existentes.
Crie o certificado/chave antes de iniciar o processo. O certificado ou chave assimétrica criado antes de iniciar o assistente de banco de dados de backup será listado na lista suspensa.

Selecione o Fazer backup em um novo conjunto de mídia e apague todos os conjuntos de backup existentes opção para criar um novo backup. Insira um nome no Nome do conjunto de mídia caixa de texto e, opcionalmente, descreva o conjunto de mídia na Descrição do conjunto de mídia caixa de texto.

4. Clique em Avançar para prosseguir com as Opções de backup .





Nesta página, selecione a opção Criptografar Backup. Selecione o Algoritmo e o Certificado ou Chave Assimétrica. Clique em Fazer backup . O processo leva vários segundos no meu caso.

2. Usando instruções Transact-SQL


Usaremos o BBANCO DE DADOS DE ACKUP instrução para criar um backup de banco de dados e o BACKUP LOG para criar um arquivo de backup de log de transações.

Backup completo do banco de dados


Esse tipo de backup faz backup de todo o banco de dados. Ele inclui uma parte do log de transações para que o banco de dados completo possa ser recuperado após a restauração de um backup completo do banco de dados.

O código a seguir cria um banco de dados completo criptografado backup no local fornecido utilizando o certificado especificado e o algoritmo de criptografia.
BACKUP DATABASE AdventureWorks2014TO DISK ='D:\DBMSSQLX64\Backup\AdventureWorks2014.bak'WITH NAME =N'AdventureWorks2014, Compressed, Encrypted, Full', FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS =5, COMPRESSION, ENCRIPTAÇÃO( ALGORITMO =AES_256, CERTIFICADO DO SERVIDOR =Cert1)GO

Observe que, se o certificado usado para criptografia nunca tiver sido submetido a backup, o aviso a seguir ocorrerá quando o backup for concluído. Certifique-se de fazer um backup do certificado junto com a chave privada associada ao certificado:

Aviso :O certificado usado para criptografar a chave de criptografia do banco de dados não foi submetido a backup. Você deve fazer backup imediatamente do certificado e da chave privada associada ao certificado. Se o certificado ficar indisponível ou se você precisar restaurar ou anexar o banco de dados em outro servidor, deverá ter backups do certificado e da chave privada ou não poderá abrir o banco de dados.

Backup de banco de dados diferencial


Ao criar esse tipo de backup, o backup de banco de dados ou arquivo consiste apenas nas partes do banco de dados ou arquivo alteradas desde o último backup completo. Além disso, esse tipo de backup geralmente ocupa menos espaço do que um backup completo.

O código a seguir cria um banco de dados diferencial criptografado backup no local fornecido usando o certificado especificado e o algoritmo de criptografia.
BACKUP DATABASE AdventureWorks2014TO DISK ='D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak'WITH NAME =N'AdventureWorks2014, Compressed, Encrypted, Differential', FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS =5, COMPRESSION, DIFERENCIAL,CRIPTAÇÃO( ALGORITMO =AES_256, CERTIFICADO DO SERVIDOR =Cert1)GO

Backup do log de transações do banco de dados


O banco de dados SQL Server contém um ou mais arquivos de log de transações, além dos arquivos de dados, que registram todas as transações e modificações no banco de dados feitas por cada transação. As informações da transação são coletadas apenas nos bancos de dados em que o modo de recuperação do banco de dados está definido como completo recuperação ou registrado em massa recuperação.

O código a seguir cria o log de transações do banco de dados criptografado backup no local fornecido usando o certificado especificado e o algoritmo de criptografia.
BACKUP LOG AdventureWorks2014TO DISK ='D:\DBMSSQLX64\Backup\AdventureWorks2014_LOG.bak'WITH NAME =N'AdventureWorks2014, Compressed, Encrypted, TLog', FORMAT, INIT, SKIP, STATS =5, COMPRESSION, ENCRYPTION( ALGORITHM =AES_256, CERTIFICADO DO SERVIDOR =Cert1)GO

3. Usando o PowerShell


O SQL Server 2014 permite fazer backup do banco de dados usando o Windows Powershell. O código a seguir cria as opções de criptografia e as usa como um valor de parâmetro no commandlet Backup-SqlDatabase:
$encryptionOption=New-SqlBackupEncryptionOption –Algorithm Aes256 –EncryptorType ServerCertificate –EncryptorName “Cert1”Backup-SqlDatabase –ServerInstance Server_name –Database “AdventureWorks2014” –BackupFile “D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak” –CompressionOption On –EncryptionOption $encryptionOption

Comparando as abordagens mencionadas acima, não há dúvidas de que criar backups de banco de dados criptografados é uma tarefa bastante fácil quando você tem a ferramenta certa, como o dbForge Studio for SQL Server de Devart.

Leitura adicional


Meu amigo Pinal Dave – entusiasta da tecnologia SQL Server, consultor independente, autor de vários livros sobre SQL Server e cursos da Pluralsight, escreveu um excelente artigo, que sugiro que leia mais:SQL SERVER – A Practical Use of Backup Encryption