手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >透明数据加密(TDE)库的备份和还原
透明数据加密(TDE)库的备份和还原
摘要:想到TDE(TransparentDataEncryption)。TDEMSDN说明:“透明数据加密”(TDE)可对数据和日志文件执行实时I...

想到TDE(Transparent Data Encryption)。

TDE MSDN 说明:

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

其实吸引我的是“无需更改现有的应用程序”,因为我需要加密的库服务于一个非常稳定的系统,而且这样做所有事情DBA可控。

TDE加密体系结构:

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

测试过程:

复制代码 代码如下:

--创建主密钥(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的部署和使用。

【透明数据加密(TDE)库的备份和还原】相关文章:

SQL Server 2000中修改数据库COLLATE的实例

ACCESS数据库的压缩,备份,还原,下载,删除的实现

删除SQL Server数据中指定的重复记录

MSSQL数据库的定期自动备份计划。

收缩后对数据库的使用有影响吗?

MSSQL 清空数据库的方法

SQL Server 2008 维护计划实现数据库备份心得

SQLServer数据库bcp导出备份文件应用

SQL2005CLR函数扩展-数据导出的实现详解

SQL Server 解析行溢出数据的存储

精品推荐
分类导航