开启TDE的RDS SQL Server还原到本地环境
问题引入
阿里云RDS SQL Server 2008 R2版本,客户在前端控制台可以自行启用透明数据加密(TDE),来避免客户数据库备份文件被非法盗取而引起拖库风险。最近,客户咨询如何将开启了TDE的数据库还原到本地环境,这篇文章的目的就是为了解决这个问题。
前提条件
请仔细阅读以下限制条件,缺一不可。
版本限制:仅针对RDS SQL Server 2008 R2版本。
启用了TDE:客户在前端控制台启用了TDE并且任务已经完成(一旦启用,无法再次关闭TDE)。
备份文件:下载的备份文件是启用了TDE之后的备份文件。
证书相关文件:证书文件、证书秘钥文件和证书加密密码,三者缺一不可。请找阿里云索取这三个必要文件。
注意事项
SQL Server TDE技术可以有效防止拖库的安全风险,但是它也是一把双刃剑,在保证安全的同时也要付出一定的成本。在开启TDE之前,请仔细衡量以下注意事项:
性能下降:开启了TDE的数据库会有一定的性能损失。到底有多大的性能损失,可以参见这篇文章SQL Server Transparent Data Encryption (TDE) Performance Comparison
TDE功能一旦启用而无法再次关闭,没有后悔药,而由此导致的性能损失由客户自己承担责任。
目前仅RDS SQL Server 2008 R2提供TDE功能。
RDS上的测试表
为了测试开启了TDE的RDS SQL Server实例如何还原到本地,我们先在RDS上创建测试环境:创建测试表,插入两条数据。
use testtde
GO
create table dbo.testTDE(
id int identity(1,1) not null primary key
,name varchar(10)
);
insert into testTDE
select 'AA' union all select 'BB'
GO
select * from testtde.dbo.testTDE
还原到本地
还原证书之前
在还原证书之前,即使您拿到了阿里云RDS SQL Server的备份文件,你也无法查看和使用备份文件,因为你没有证书文件相关文件。比如:查看备份文件列表,直接报错:
USE master
GO
RESTORE FILELISTONLY
FROM DISK = 'C:\Temp\testtde.bak' ;
由此可见启用了TDE的RDS SQL Server可以非常有效地防止拖库行为。
详细步骤
在证书还原之前,我们是无法使用备份文件的,达到了防止备份文件被偷窥的目的。以下是如何还原到本地环境的详细步骤:创建Master Key;创建证书;还原数据库。
USE master
GO
CREATE MASTER KEY
ENCRYPTION BY PASSWORD='MyMasterKey'
GO
---这里需要特别强调,证书文件cer_tde.cer、证书秘钥文件cer_tde.pvk和加密密码,请找阿里云索取。
CREATE CERTIFICATE cer_tde
FROM FILE = 'C:\Temp\cer_tde.cer'
WITH PRIVATE KEY (FILE = 'C:\Temp\cer_tde.pvk',
DECRYPTION BY PASSWORD = 'tde_password')
GO
---还原证书后,再次读取备份文件,这里可以成功。参见截图图三
RESTORE FILELISTONLY
FROM DISK = 'C:\Temp\testtde.bak' ;
GO
---还原证书后,成功还原数据库到本地。参见截图图四
RESTORE DATABASE TestTDE
FROM DISK = N'C:\Temp\testtde.bak'
WITH MOVE 'data1' TO 'C:\Temp\TestTDE.mdf',
MOVE 'log' TO 'C:\Temp\TestTDE_log.ldf';
GO
---检查测试表数据。参见截图图五
SELECT * FROM TestTDE.dbo.testTDE;
参考文章
SQLServer · 最佳实践 · 透明数据加密TDE在SQLServer的应用
最后更新:2017-04-01 17:04:39
上一篇:
程序员的常见“谎话”:对,这是一个已知 Bug
下一篇:
DT科技评论第32期:“电子纹身”可以控制智能设备
实战DeviceIoControl 之五:列举已安装的存储设备
Java自学能学会吗?Java新手学习路线
采访阿里服务器专家钟杨帆,看阿里全浸没式液冷集群有哪些黑科技
JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
Android中自定义Activity和Dialog的位置大小背景和透明度等
《Linux From Scratch》第二部分:准备构建 第五章:构建临时文件系统- 5.5. GCC-4.9.2 - 第一遍
世界顶级黑客大赛内情首次揭秘:有“连环计”,最后一刻把“韩国队”拉下马
对于棋牌类的网站,我们应该如何选择服务器呢?
《程序员度量:改善软件团队的分析学》一案例分享:度量和怀疑论者
activty栈管理