quarta-feira, 27 de outubro de 2010

Criptografia Transparente de Dados - Parte II

Bem pessoal, como disse na primeira parte deste tema mostrei como implantar a criptografia transparente de dados em um banco de dados, agora irei passar para vocês todos os testes que realizei.

Continuo usando o SQL Server 2008 Developer Edition com SP2, build 10.0.4000.

1° Teste: Desatachar o banco de dados criptografado e tentar atachar em outro servidor SQL que não existe nenhuma chave nem certificado de criptografia

USE master
GO   
sp_detach_db 'Criptografia'
GO

e em seguida tentarei atachar no outro servidor:

EXEC sp_attach_db @dbname = 'Criptografia',
    @filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia.mdf',
    @filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia_log.ldf'
GO

após executar este comando receberemos a seguinte mensagem do SQL Server:

Msg 33111, Level 16, State 3, Line 1
Cannot find server certificate with thumbprint '0x2400EE11A47193208473BE1225A55AC13B4405B1'.


Para conseguirmos atachar o banco de dados criptografado em outro servidor é necessário criar a Master Key com a mesma senha do servidor onde o banco foi criptogrado, levar os arquivos do certificado e da chave criptografada para este servidor e em seguinda criar um certificado passando esses arquivos.

No servidor onde queremos atachar o banco executamos os seguintes scripts:

USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MasterKeysenha'
GO

USE master
GO
CREATE CERTIFICATE CertificadoCriptografia
 FROM FILE = 'C:\Criptografia_certificate.cer'
 WITH PRIVATE KEY (FILE = 'C:\Criptografia_certkey.pvk', DECRYPTION BY PASSWORD = 'MasterKeysenha')
GO

após criado a Master Key e o certificado vamos tentar a atachar o banco novamente:

EXEC sp_attach_db @dbname = 'Criptografia',
    @filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia.mdf',
    @filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia_log.ldf'
GO

e receberemos a mensagem:

Command(s) completed successfully.

2° Teste: Fazer backup do banco criptografado e tentar restaurar o backup em outro servidor que não possui nenhuma chave nem certificado de criptografia

BACKUP DATABASE Criptografia TO DISK='C:\Backup Criptografia\Criptografia.bak'
GO

agora vamos tentar restaurar este backup no outro servidor:

RESTORE DATABASE Criptografia FROM DISK='C:\Backup Criptografia\Criptografia.bak'

após tentar restaurar o SQL exibe a seguinte mensagem:

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



Para conseguir restaurar o backup em outro servidor é necessário realizar o mesmo procedimento relizado no teste 1. Tem que criar a Master Key e depois criar o certificado, assim o restore é concluído com sucesso.


Com estes dois testes foi possível ver que a criptografia transparente de dados realmente funciona e é bastante interessante, pois ainda não existia nenhuma criptografia interna do SQL Server a nível dos arquivos de dados e de log.

Na próxima parte iremos realizar os teste mais interessantes, mostrarei como desabilitar a TDE de um banco de dados se é possível atachar e/ou restaurar o banco de dados em outro servidor após desabilitar a criptografia.

Abraços,
Rodrigo Figueiredo
figueiredo.rodrigo@hotmail.com

Nenhum comentário:

Postar um comentário