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:\TEST\DemoDB.bak'  
with  
	compression, stats = 10, 
	encryption   
	(  
	algorithm = aes_256,  
	server certificate = mycertificate  
	)
go  

--备份主密钥
backup master key 
to file = N'E:\TEST\master_SMK.key'   
encryption by password = N'Hello@MyMasterKey'
go

--备份证书和私钥
backup certificate Mycertificate   
to file = N'E:\TEST\Mycertificate.cer' --用于加密的证书备份路径  
with private key (   
    file = N'E:\TEST\Mycertificate_saleskey.pvk' ,--用于解密证书私钥文件路径   
    encryption by password = N'Hello@Mycertificate' );--对私钥进行加密的密码  
go

现在在另一个实例中,直接还原备份,结果失败!

USE [master]
GO
RESTORE DATABASE [DemoDB]
FROM  DISK = N'E:\TEST\DemoDB.bak' 
WITH  FILE = 1,
MOVE N'DemoDB' TO N'E:\TEST\DemoDB0.mdf',
MOVE N'DemoDB1' TO N'E:\TEST\DemoDB01.ndf',  
MOVE N'DemoDB2' TO N'E:\TEST\DemoDB02.ndf',  
MOVE N'DemoDB_log' TO N'E:\TEST\DemoDB0_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:\TEST\master_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:\TEST\Mycertificate.cer'   
WITH PRIVATE KEY (  
    FILE = N'E:\TEST\Mycertificate_saleskey.pvk',   
    DECRYPTION BY PASSWORD = 'Hello@Mycertificate');  
GO


--	再还原数据库,正常!
USE [master]
GO
RESTORE DATABASE [DemoDB]
FROM  DISK = N'E:\TEST\DemoDB.bak' 
WITH  FILE = 1,
MOVE N'DemoDB' TO N'E:\TEST\DemoDB0.mdf',
MOVE N'DemoDB1' TO N'E:\TEST\DemoDB01.ndf',  
MOVE N'DemoDB2' TO N'E:\TEST\DemoDB02.ndf',  
MOVE N'DemoDB_log' TO N'E:\TEST\DemoDB0_log.ldf',  
NOUNLOAD,  STATS = 5
GO

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


参考:备份加密


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值