草庐IT

SQL Server TDE

这货不是王马勺 2023-10-19 原文

仅2008版本后的企业版支持。
在master中创建主密钥:

USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'h****n@123';

建议内部服务器上的SQLServer都建一样的,比较方便;仅防止将备份恢复到外部服务器上。
修改主密钥:

use master;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'hi****@123';

在master中,添加加密数据库用的证书

Use Master  
GO  
CREATE CERTIFICATE MyTestDBBackupEncryptCert  
   WITH SUBJECT = 'MyTestDB Backup Encryption Certificate';  
GO

TestCert 是证书名称,可以根据需要随便起名,Subject 是主题,随便写就可以,长度不要超过128字节

应用1:
对数据库进行加密完整备份:

BACKUP DATABASE [test1]  
TO DISK = N'C:\Backup\MyTestDB.bak'  
WITH  
  COMPRESSION,  
  ENCRYPTION   
   (  
   ALGORITHM = AES_256,  
   SERVER CERTIFICATE = MyTestDBBackupEncryptCert  
   ),  
  STATS = 10  
GO

异机恢复时需要先在该实例导出证书:

USE master;
BACKUP CERTIFICATE MyTestDBBackupEncryptCert   TO FILE = 'C:\Backup\MyTestDBBackupEncryptCert.bak'  
WITH PRIVATE KEY ( FILE = 'C:\Backup\MyTestDBBackupEncryptCertPK.bak', ENCRYPTION BY PASSWORD = 'h***in@123' );

然后创建master主密钥,同上,
之后拷贝之前的证书备份,并导入证书到目标实例

USE master;
CREATE CERTIFICATE MyTestDBBackupEncryptCert25 FROM FILE = 'D:\Backup\MyTestDBBackupEncryptCert.bak'
WITH PRIVATE KEY ( FILE = 'D:\Backup\MyTestDBBackupEncryptCertPK.bak', DECRYPTION BY PASSWORD = 'h***in@123' );

此后即可正常恢复加密的完整备份。
可以不加密差异备份和事务日志备份,毕竟是基于完整备份的。

一些参考文档:

https://www.genban.org/teach/teach-9411.html
http://t.zoukankan.com/xwgli-p-4522502.html
https://docs.microsoft.com/zh-cn/sql/t-sql/statements/drop-master-key-transact-sql?source=recommendations&view=sql-server-ver16

有关SQL Server TDE的更多相关文章

随机推荐