暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

SQL Server TDE 加密备份

原创 龙舌兰地落🌏 2024-07-11
287

仅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' );

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

对于报错“证书、非对称密钥或私钥文件无效或不存在;或是您不具有针对其的权限”,可以将SQLServer启动账户改为当前用户,并确保授权,之后关闭服务在开启(直接重启仍无法解决)。

一些参考文档:

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
最后修改时间:2024-10-14 11:21:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论