SQLServer 2014 备份加密
从 SQL Server 2014 开始,SQL Server 可在创建备份时加密数据。通过在创建备份时指定加密算法和加密程序(证书或非对称密钥),可创建加密的备份文件。 若要在备份期间加密,必须指定加密算法以及用于保护加密密钥的加密程序。支持以下加密选项: 加密算法:支持的加密算法包括:AES 128、AES 192、AES 256 和 Triple DES 优点: 1. 加密数据库备份有助于保证数据安全:SQL Server 提供用于在创建备份时加密备份数据的选项。 2. 加密还可用于使用 TDE 加密的数据库。 3. 由 Microsoft Azure 的 SQL Server 托管备份 进行的备份支持加密,这样可提高站点外备份的安全性。 4. 此功能支持多个最高 AES 256 位的加密算法。这样可选择符合要求的算法。 5. 可将加密密钥与扩展密钥管理 (EKM) 提供程序集成。(仅支持位于扩展密钥管理 (EKM) 中的非对称密钥。) 限制: 1. 如果使用非对称密钥加密备份数据,则仅支持位于 EKM 提供程序中的非对称密钥。 2. SQL Server Express 和 SQL Server Web 不支持在备份期间进行加密。但是,支持从加密的备份还原到 SQL Server Express 或 SQL Server Web 的实例。 3. 旧版 SQL Server 无法读取加密的备份。 4. 加密的备份不支持追加到现有的备份集选项。 当前测试,证书加密备份,从另一个实例中还原。 use master go --创建主密钥 create master key encryption by password = N'Hello@MyMasterKey' go --创建证书 create certificate Mycertificate with subject = N'EnryptData certificate',start_date = N'20160101',expiry_date = N'20990101'; go --证书加密备份数据库 backup database [DemoDB] to disk = N'E:TESTDemoDB.bak' with compression,stats = 10,encryption ( algorithm = aes_256,server certificate = mycertificate ) go --备份主密钥 backup master key to file = N'E:TESTmaster_SMK.key' encryption by password = N'Hello@MyMasterKey' go --备份证书和私钥 backup certificate Mycertificate to file = N'E:TESTMycertificate.cer' --用于加密的证书备份路径 with private key ( file = N'E:TESTMycertificate_saleskey.pvk',--用于解密证书私钥文件路径 encryption by password = N'Hello@Mycertificate' );--对私钥进行加密的密码 go 现在在另一个实例中,直接还原备份,结果失败! USE [master] GO RESTORE DATABASE [DemoDB] FROM DISK = N'E:TESTDemoDB.bak' WITH FILE = 1,MOVE N'DemoDB' TO N'E:TESTDemoDB0.mdf',MOVE N'DemoDB1' TO N'E:TESTDemoDB01.ndf',MOVE N'DemoDB2' TO N'E:TESTDemoDB02.ndf',MOVE N'DemoDB_log' TO N'E:TESTDemoDB0_log.ldf',NOUNLOAD,STATS = 5 GO /* 消息 33111,级别 16,状态 3,第 4 行 找不到指纹为 '0xFC76058DC0D3DD4FEF179B862CE8BA168D59F007' 的服务器 证书。 消息 3013,级别 16,状态 1,第 4 行 RESTORE DATABASE 正在异常终止。 */ 先还原主密钥和证书,再还原数据库备份,正常! --还原主密钥 USE master GO RESTORE MASTER KEY FROM FILE = N'E:TESTmaster_SMK.key' DECRYPTION BY PASSWORD = N'Hello@MyMasterKey' ENCRYPTION BY PASSWORD = N'Hello@MyMasterKey' FORCE GO /*还原主密,两实例的服务启动账户必须相同,否则出现以下错误: 消息 15317,级别 16,状态 2,第 22 行 主密钥文件不存在或格式无效。 The master key file does not exist or has invalid format */ --打开密钥 OPEN MASTER KEY DECRYPTION BY PASSWORD = N'Hello@MyMasterKey' GO --还原证书 CREATE CERTIFICATE Mycertificate FROM FILE = N'E:TESTMycertificate.cer' WITH PRIVATE KEY ( FILE = N'E:TESTMycertificate_saleskey.pvk',DECRYPTION BY PASSWORD = 'Hello@Mycertificate'); GO -- 再还原数据库,正常! USE [master] GO RESTORE DATABASE [DemoDB] FROM DISK = N'E:TESTDemoDB.bak' WITH FILE = 1,STATS = 5 GO 注:还原主密时,两实例的服务启动账户必须相同。 参考:备份加密 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |