Se eu tiver um servidor onde uso TDE, configurado da seguinte forma:
USE [master]
CREATE DATABASE MyTDE
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp455';
CREATE CERTIFICATE MyTDECert WITH SUBJECT = 'My Certificate';
GO
/* enable TDE */
USE MyTDE;
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE MyTDECert;
GO
ALTER DATABASE MyTDE SET ENCRYPTION ON;
GO
/* backup the TDE cert */
USE [master];
BACKUP CERTIFICATE [MyTDECert] TO FILE = 'C:\Test\TDECert.cert'
WITH PRIVATE KEY (
FILE = 'C:\Test\TDEcert.key',
ENCRYPTION BY PASSWORD = 'MyStr0ngP455w0rd'
);
e faço backup todas as noites em um cronograma:
BACKUP DATABASE MyTDE
TO DISK = 'C:\Test\TDEDatabaseBackup.bak'
WITH INIT,
FORMAT;
Se o servidor em que esse banco está rodando tiver algum tipo de desastre, eu precisaria restaurar os backups para outro servidor e para isso precisaria do backup de MyTDECert
para recriar esse certificado no novo servidor
No novo servidor, posso criar o Certificado TDE a partir de um backup:
USE [master];
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp4552';
CREATE CERTIFICATE MyTDE1
FROM FILE = 'C:\Test\TDEcert.cert'
WITH PRIVATE KEY (FILE = 'C:\Test\TDEcert.key',
DECRYPTION BY PASSWORD = 'MyStr0ngP455w0rd');
e isso me permite restaurar o banco de dados:
RESTORE DATABASE MyTDE
FROM DISK = 'C:\Test\TDEDatabaseBackup.bak'
Da mesma forma, se eu tenho um banco de dados que não está usando TDE, mas faço backup usando um certificado:
USE [master]
CREATE DATABASE MyDB
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp455';
CREATE CERTIFICATE [BackupCert] WITH SUBJECT = 'Backup Certificate', EXPIRY_DATE = '2022-01-29T15:00:00'
BACKUP CERTIFICATE [BackupCert] TO FILE = 'C:\Test\BackupCert.cert'
WITH PRIVATE KEY (
FILE = 'C:\Test\backupcert.key',
ENCRYPTION BY PASSWORD = 'MyStr0ngP455w0rd'
);
BACKUP DATABASE MyDB
TO DISK = 'C:\Test\EncryptedDBBackup.bak'
WITH INIT,
ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = BackupCert),
FORMAT;
Novamente, para restaurar esses backups para outro servidor, preciso do backup BackupCert
para criar o certificado no segundo servidor:
USE [master];
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My57r0ngp4552';
CREATE CERTIFICATE [BackupCert]
FROM FILE = 'C:\Test\STEVETEST\BackupCert.cert'
WITH PRIVATE KEY (FILE = 'C:\Test\backupcert.key',
DECRYPTION BY PASSWORD = 'MyStr0ngP455w0rd');
RESTORE DATABASE MyDB
FROM DISK = 'C:\Test\EncryptedDBBackup.bak'
O que eu não entendo é, eu precisaria fazer backup da chave mestra do banco de dados no banco de dados mestre? Ainda posso usar os certificados, pois fiz backup deles e posso recriá-los em outro servidor e eles têm a impressão digital correta para restaurar os backups criptografados
Olhando para este post , sugere que se eu mover o banco de dados em que a chave é criada para outro servidor, precisaria recriar a chave mestra de um backup, mas no meu caso não estou movendo o banco de dados mestre em si.
O backup do DMK é necessário nos cenários acima?
Não, você não precisa para bancos de dados que não possuem TDE.
Você está confundindo duas coisas diferentes:
A chave mestra do banco de dados
Bancos de dados que não usam criptografia:
Se você fizer backup do certificado separadamente, isso normalmente não precisará de backup. Você apenas restauraria todo o banco de dados de um backup com seu certificado. Você só precisa fazer backup disso se estiver protegendo segredos no banco de dados dos quais não tem outro backup (como uma DEK ou outra chave simétrica).
Bancos de dados que usam qualquer forma de criptografia, como TDE ou CLE
A chave mestra protege a outra chave de criptografia. Portanto, você pode correr o risco de perder a DEK/outras chaves de criptografia, portanto, você deve fazer backup da chave mestra para recuperar essas informações. Você precisa da chave mesmo se tiver um certificado de backup separado.
A chave mestra de serviço
Você só precisa fazer backup da chave mestra de serviço se pretende restaurar o
master
banco de dados e não tiver acesso a ummaster
backup, apenas aos.mdf
arquivos. Observe que coisas como credenciais de servidor vinculado são armazenadas aqui, portanto, talvez você queira recuperá-las, mas normalmente não é necessário.Você precisa criar uma nova chave mestra de serviço (criada automaticamente) e uma chave mestra de banco de dados antes de restaurar o certificado de banco de dados no servidor, pois ele precisa ser protegido lá. Mas então você pode restaurar o backup.
Os backups de outros bancos de dados são criptografados apenas usando seus próprios certificados. A chave mestra do banco de dados protege o certificado nos cabeçalhos do banco de dados (assim como o DEK para bancos de dados habilitados para TDE). A chave mestra de serviço é o que protege os cabeçalhos do banco de dados enquanto estiver no servidor . Como o certificado não está em formato não criptografado no backup, nunca há necessidade de protegê-lo, portanto, a chave mestra não é usada para isso.