Partager via


Sharing TDE Encrypted Backup outside the organisation.

In order to share the TDE Encrypted Database backup with somebody outside the organisation, the below steps can be followed.

++ Create new temporary database in order to prepare a make-shift copy of the intended database.

RESTORE DATABASE MyEncryptedDB_Temp FROM DISK = N'C:\Temp\EncryptedDatabase.bak' WITH
MOVE EncryptedDatabase' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\EncryptedDatabase_Temp.mdf',
MOVE N'EncryptedDatabase_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\EncryptedDatabase_Temp_log.ldf';
GO

++ Disable TDE on the new temporary database in order to reset the certificate and the DEK and then re-enable it with the new ones.

ALTER DATABASE EncryptedDatabase_Temp SET ENCRYPTION OFF;
GO

++ Remove Original Database Encryption Key

USE EncryptedDatabase_Temp;
GO
DROP DATABASE ENCRYPTION KEY;

++ Create a new certificate to encrypt temporary database

USE master;
GO
CREATE CERTIFICATE TemporaryTDECert
WITH SUBJECT='To encrypt temporary DB';
GO

++ Create new database encryption key

USE EncryptedDatabase_Temp;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE TemporaryTDECert;

++ Backup the new temporary certificate

USE master;
GO
BACKUP CERTIFICATE TemporaryTDECert
TO FILE = 'C:\temp\TemporaryTDECert.cer'
WITH PRIVATE KEY (file='C:\temp\TemporaryTDECert.pvk',
ENCRYPTION BY PASSWORD='Password to backup');

++ Enable TDE on the temporary Database. This time the database will pick the newly created certificate for encryption.

ALTER DATABASE EncryptedDatabase_Temp SET ENCRYPTION ON;
GO

++ Backup the new temporary database

BACKUP DATABASE EncryptedDatabase_Temp TO  DISK = N'C:\temp\EncryptedDatabase_Temp.bak';

++ Provide outside organization with database backup, certificate backup, and private key backup files.

C:\temp\EncryptedDatabase_Temp.bak
C:\temp\TemporaryTDECert.cer
C:\temp\TemporaryTDECert.pvk

++ Now as we have achieved the required outcome of sharing the TDE encrypted database outside the organisation, we can clear the make-shift temporary database and certificate.

EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'EncryptedDatabase_Temp';
GO
USE master;
GO
DROP DATABASE EncryptedDatabase_Temp;
DROP CERTIFICATE TemporaryTDECert;

 

Hope this helps !! Happy Sharing !!