sábado, 4 de julho de 2015

Criptografia no Backup no SQL Server 2014

A partir do SQL Server 2014 a Microsoft incluiu a criptografia no Backup, agregando mais segurança as informações armazenadas nos bancos de dados.  Contudo, criptografar Backups requer além da alteração nos scripts, alguns cuidados no armazenamento de chaves e senhas, podendo até inviabilizar um Restore!

Segue abaixo lista de restrições no uso de criptografia no Backup:

- As edições do SQL Server Express e Web não suportam criptografia no Backup.

- A cláusula do Backup NOINIT não pode ser utilizada, apenas INIT e FORMAT são aceitas.

- Além da permissão para executar o comando Backup, o Login necessita de permissão VIEW DEFINITION para manipular certificados e chaves.

Atendendo os requisitos acima, basta seguir os passos abaixo para criptografar os Backups do SQL Server:

1) Criar uma Master Key no banco MASTER, como pré-requisito para criação de certificado utilizado na criptografia:

USE master
go
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Landry123*'

2) Criar um Certificado no banco MASTER, para ser utilizado na criptografia do Backup:

Use Master
go
CREATE CERTIFICATE BackupEncryptCert
WITH SUBJECT = 'Certificado para criptografia de Backup'

3) Exportar o Certificado para arquivo, caso seja necessário restaurar o banco em outra instância de SQL Server:

BACKUP CERTIFICATE BackupEncryptCert
TO FILE = 'D:\Landry\BackupEncryptCert.cer'
WITH PRIVATE KEY (
FILE = 'D:\Landry\BackupEncryptCert.key',
ENCRYPTION BY PASSWORD = 'Landry123*')

ATENÇÃO!!!!!! Guardar os arquivos gerados no BACKUP CERTIFICATE (.cer e .key) e a senha em local seguro, você vai precisar deles quando for restaurar o backup em outra instância de SQL Server.

4) Estamos prontos para executar os Backups utilizando a nova cláusula ENCRYPTION do comando BACKUP como abaixo:

BACKUP DATABASE AdventureWorks
TO DISK = N'D:\Landry\AdventureWorks_Encrypt.bak'
WITH COMPRESSION, STATS = 10,
ENCRYPTION (ALGORITHM = AES_256,
SERVER CERTIFICATE = BackupEncryptCert)

Se houver necessidade de restaurar o Backup em outra instância de SQL Server, primeiro tem que criar a Master Key (se não foi criada), em seguida importar o Certificado utilizado no Backup.  Se o Certificado não for importado antes do Restore, você irá receber o erro abaixo:

Msg 33111, Level 16, State 3, Line 59
Cannot find server certificate with thumbprint
'0x4B40E913C8B1FD1692AA0E05D879CD095D774B20'.
Msg 3013, Level 16, State 1, Line 59
RESTORE DATABASE is terminating abnormally.

Preparamos uma instância para receber Backups feitos com criptografia em outra instância utilizando os passos abaixo:

1) Criação da Master Key

USE master
go
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Landry123*'

2) Importação do Certificado

CREATE CERTIFICATE BackupEncryptCert
FROM FILE = 'D:\Landry\BackupEncryptCert.cer'
WITH PRIVATE KEY (
FILE = 'D:\Landry\BackupEncryptCert.key',
DECRYPTION BY PASSWORD = 'Landry123*')

Pronto, basta restaurar os Backups normalmente.

Até o próximo post.
Landry

4 comentários:

Herick Freitas disse...

Show... Nota 10!

Carol Lavecchia disse...
Este comentário foi removido pelo autor.
Carol Lavecchia disse...

Muito bem explicado, me auxiliou bastante, Obrigada.

Maycon disse...

Gostaria de saber para quais versões do sqlserver o TDE está disponivél.