≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

SQL Server透明数据加密(TDE)库的备份和还原

人气:764 时间:2019-09-16

这篇文章主要为大家详细介绍了SQL Server透明数据加密(TDE)库的备份和还原,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

想到TDE(Transparent Data Encryption)。

TDE MSDN 说明:

“透明数据加密”(TDE) 可对数据和日志文件执行实时 I/O 加密和解密。这种加密使用数据库加密密钥 (DEK),该密钥存储在数据库引导记录中以供恢复时使用。DEK 是使用存储在服务器的 master 数据库中的证书保护的对称密钥,或者是由 EKM 模块保护的非对称密钥。TDE 保护“处于休眠状态”的数据,即数据和日志文件。它提供了遵从许多法律、法规和各个行业建立的准则的能力。软件开发人员籍此可以使用 AES 和 3DES 加密算法来加密数据,且无需更改现有的应用程序。
其实吸引我的是“无需更改现有的应用程序”,因为我需要加密的库服务于一个非常稳定的系统,而且这样做所有事情DBA可控。

TDE加密体系结构:

【图片暂缺】
测试过程:

代码如下:

 
--创建主密钥(Master Key) 
USE master 
GO 
--DROP MASTER KEY 
CREATE MASTER KEY ENCRYPTION BY PASSWORD=N'1qaz@WSX'; 
GO 
--备份主密钥 
BACKUP MASTER KEY TO FILE=N'C:\master_key.cer' 
ENCRYPTION BY PASSWORD=N'!QAZ2wsx' 
GO 
--创建基于主密钥的证书。用于保护数据库加密密钥(Database Encryption Key) 
--DROP CERTIFICATE SDB_Cert 
CREATE CERTIFICATE SDB_Cert 
WITH SUBJECT=N'Certificate for SecretDB' 
go 
--使用私钥加密的方式备份主密钥的证书 
BACKUP CERTIFICATE SDB_Cert 
TO FILE=N'C:\SDB_Cert.cer' 
WITH PRIVATE KEY 
( 
FILE =N'C:\SDB_Cert.pvk', 
ENCRYPTION BY PASSWORD='!QAZ2wsx' 
) 
GO 
--创建测试库SecretDB 
USE master 
GO 
CREATE DATABASE SecretDB 
GO 
USE SecretDB 
GO 
CREATE TABLE SDB_TB 
(ID INT,VAL NVARCHAR(20)); 
INSERT INTO SDB_TB 
VALUES (1,N'A'),(2,N'B'),(3,N'C'); 
GO 
USE SecretDB 
go 
--创建数据库加密密钥 
CREATE DATABASE ENCRYPTION KEY 
WITH ALGORITHM=AES_128 
ENCRYPTION BY SERVER CERTIFICATE SDB_Cert; 
GO 
--启用数据库加密 
USE SecretDB 
go 
ALTER DATABASE SecretDB SET ENCRYPTION ON 
go 
--备份SecretDB,用于后续的异机还原测试 
USE master 
go 
BACKUP DATABASE SecretDB TO DISK=N'D:\SecretDB.bak' 
go 
在完成这些后,SecretDB库已经加密,并且得到其加密后的备份文件,接下来需要在另台还原这个备份。 
我把SecretDB.bak,SDB_Cert.cer,SDB_Cert.pvk拷到别一台机。直接还原的话,会报错。需要创建原来用于加密的证书来还原数据库备份。我的目的达到了! 
--在异机上恢复SecretDB的备份 
USE master 
GO 
CREATE DATABASE SecretDB 
GO 
RESTORE DATABASE SecretDB 
FROM DISK=N'D:\SecretDB.bak' 
WITH REPLACE 
GO 
--消息 33111,级别 16,状态 3,第 1 行 
--找不到指纹为 '0x0106000000000009010000009C529FFD5C7FD72FD0AAE9EDF46C5F69946FFED0' 的服务器 证书。 
--消息 3013,级别 16,状态 1,第 1 行 
--RESTORE DATABASE 正在异常终止。 
创建证书并还原。 
USE master 
GO 
CREATE CERTIFICATE SDB_Cert 
FROM FILE=N'C:\SDB_Cert.cer' 
WITH PRIVATE KEY 
( 
FILE=N'C:\SDB_Cert.pvk', 
DECRYPTION BY PASSWORD=N'!QAZ2wsx' 
) 
GO 
RESTORE DATABASE SecretDB 
FROM DISK=N'D:\SecretDB.bak' 
WITH REPLACE 
GO 

总结:
其实在做TDE前应该仔细阅读BOL的说明:ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_4deptrbl/html/c75d0d4b-4008-4e71-9a9d-cee2a566bd3b.htm
其中说到:
如果使用 TDE 对数据库进行加密,备份压缩将无法显著压缩备份存储。
复制不会以加密形式从启用了 TDE 的数据库中自动复制数据。如果您想保护分发和订阅服务器数据库,则必须单独启用 TDE。
某些限制和注意事项,会影响TDE的部署和使用。

本文来自:http://www.q1010.com/179/7851-0.html

注:关于SQL Server透明数据加密(TDE)库的备份和还原的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • SQLServer 2005 实现数据库同步备份 过程-结果-分析
  • SQL Server CREATE FUNCTION sqlserver用户定义函数
  • sqlserver 查询数据库大小的方法
  • SQL Server 存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)
  • SQLServer 触发器 数据库进行数据备份
  • 用户"sa"登陆失败 SQLServer 错误18456的解决方法
  • SQL Server做购物车系统时利用到得几个sqlserver 存储过程
  • SQLServer 优化SQL语句 in 和not in的替代方案
  • win2003 安装 sqlserver 2005的方法
  • SQL Server当恢复sqlserver bak文件时,原始的用户无法删除的解决方法
上一篇:SQL Server用T—SQL命令查询一个数据库中有哪些表的sql语句
下一篇:SQL Server重命名数据库的方法
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。