开启TDE的RDS SQL Server还原到本地环境

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 针对阿里云RDS SQL Server 2008 R2版本,如何将已经开启了TDE的数据库还原到客户本地环境,是这篇文章要解决的核心问题。

问题引入

阿里云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

检查测试环境,截图如下所示:
01.png

还原到本地

还原证书之前

在还原证书之前,即使您拿到了阿里云RDS SQL Server的备份文件,你也无法查看和使用备份文件,因为你没有证书文件相关文件。比如:查看备份文件列表,直接报错:

USE master
GO

RESTORE FILELISTONLY   
   FROM DISK = 'C:\Temp\testtde.bak' ;  

错误信息如下所示:
02.png

由此可见启用了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;

图三:还原证书后,成功读取到备份文件
03.png

图四:还原证书后,成功还原数据库到本地
04.png

图五:测试表数据和原始数据库保持一致
05.png

参考文章

SQLServer · 最佳实践 · 透明数据加密TDE在SQLServer的应用

目录
相关文章
|
1月前
|
弹性计算 JSON 关系型数据库
使用ROS模板基于ECS和RDS创建WordPress环境
使用ROS模板基于ECS和RDS创建WordPress环境
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
83 2
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
114 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
61 6
|
4月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
380 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
477 0
|
4月前
|
SQL 监控 数据库
SQL Server 查询超时问题排查
【7月更文挑战第8天】排查 SQL Server 查询超时涉及五个主要方面:检查复杂查询、评估服务器性能、审视配置参数、更新统计信息和分析执行计划。关注点包括查询的结构(如连接、子查询和索引),服务器资源(CPU、内存、网络延迟),连接和内存设置,以及统计信息的时效性。通过这些步骤可定位并解决性能瓶颈。
120 0