加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer 2014 备份加密

发布时间:2020-12-12 13:22:34 所属栏目:MsSql教程 来源:网络整理
导读:从 SQL Server 2014 开始,SQL Server 可在创建备份时加密数据。通过在创建备份时指定加密算法和加密程序(证书或非对称密钥),可创建加密的备份文件。 若要在备份期间加密,必须指定加密算法以及用于保护加密密钥的加密程序。支持以下加密选项: 加密算法

从 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

注:还原主密时,两实例的服务启动账户必须相同。


参考:备份加密

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读