设为首页 加入收藏

TOP

SQLServer数据加密解密:将TDE保护的数据库移到其他实例(二)(一)
2015-07-24 10:25:14 来源: 作者: 【 】 浏览:0
Tags:SQLServer 数据 加密解密 TDE 保护 数据库 其他 实例

?

--	了解透明数据加密 (TDE)
--	https://technet.microsoft.com/zh-cn/library/bb934049(v=sql.105).aspx

“透明数据加密”(TDE) 可对数据和日志文件执行实时 I/O 加密和解密。
这种加密使用数据库加密密钥 (DEK),该密钥存储在数据库引导记录中以供恢复时使用。
数据库文件的加密在页级执行。已加密数据库中的页在写入磁盘之前会进行加密,在读入内存时会进行解密。

使用TDE操作步骤:
1. 创建主密钥
2. 创建或获取由主密钥保护的证书
3. 创建数据库加密密钥并通过此证书保护该密钥
4. 将数据库设置为使用加密


--	查询相关信息
select * from master.sys.key_encryptions
select * from master.sys.certificates
select * from sys.dm_database_encryption_keys where database_id=DB_ID('Temp')
select name,is_master_key_encrypted_by_server from sys.databases where is_master_key_encrypted_by_server=1

【测试一:分离和附加迁移】

?

?

use master;
go

--将相关信息删除
drop certificate  Mycertificate;
go  
drop master key;
go  

--	创建数据库主密钥
create master key encryption by password = N'Hello@MasterKey';
go

--	创建以数据库主密钥加密的证书
create certificate Mycertificate with subject = 'Certificate to protect TDE key';
go

--	备份证书
backup certificate Mycertificate   
to file = N'D:\mycertificate.cer'  
with private key (   
    file = N'D:\mycertificate_saleskey.pvk' , 
    encryption by password = N'Hello@Mycertificate' );
go  


use [Temp];
go

--	创建用于以透明方式加密数据库的加密密钥
--	https://msdn.microsoft.com/zh-cn/library/bb677241(v=sql.105).aspx
create database encryption key
	with 
	algorithm = aes_128
	encryption by server certificate Mycertificate;
go

--	启用数据库加密
--	https://msdn.microsoft.com/zh-cn/library/bb522682.aspx
alter database [Temp] set encryption on;
go


use master;
go

--	分离数据库
exec master.dbo.sp_detach_db @dbname = N'Temp';
go


--	移动数据文件到另一台服务器中:
--	另一台服务器实例中:
use master;
go

--	附加数据库(失败)
create database [Temp] on 
( filename = N'C:\Database\Temp.mdf' ),
( filename = N'C:\Database\Temp_log.ldf' )
for attach ;
go


--	创建新的数据库主密钥
create master key encryption by password = N'Hello@MasterKey';
go

--	还原证书
create certificate Mycertificate 
from file = N'C:\Software\mycertificate.cer'
with private key 
(
    file = N'C:\Software\mycertificate_saleskey.pvk' , 
    decryption by password = N'Hello@Mycertificate'
);
go

--	附加数据库(成功)
create database [Temp] on 
( filename = N'C:\Database\Temp.mdf' ),
( filename = N'C:\Database\Temp_log.ldf' )
for attach ;
go

--	删除测试信息
use master;
go
drop certificate  Mycertificate;
go  
drop master key;
go  

【测试二:备份和恢复迁移】

?

?

--	删除上次测试信息
use [Temp]
go
alter database [Temp] set encryption off;
go
drop database encryption key
go

use master;
go
drop certificate  Mycertificate;
go  
drop master key;
go  

--	创建数据库主密钥
create master key encryption by password = N'Hello@MasterKey';
go

--	创建以数据库主密钥加密的证书
create certificate Mycertificate with subject = 'Certificate to protect TDE key';
go

--	备份证书
backup certificate Mycertificate   
to file = N'D:\mycertificate.cer'  
with private key (   
    file = N'D:\mycertificate_saleskey.pvk' , 
    encryption by password = N'Hello@Mycertificate' );
go  


use [Temp];
go

--	创建用于以透明方式加密数据库的加密密钥
create database encryption key
	with 
	algorithm = aes_128
	encryption by server certificate Mycertificate;
go

--	启用数据库加密
alter database [Temp] set encryption on;
go


--	备份数据库
backup database [Temp] to disk = N'D:\Temp.bak'

--	拷贝mycertificate.cer、mycertifica
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ORACLE11G中PLSQL中文显示乱码、L.. 下一篇【MongoDB数据库】MongoDB命令入..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python爬虫教程(从 (2025-12-26 16:49:14)
·【全269集】B站最详 (2025-12-26 16:49:11)
·Python爬虫详解:原 (2025-12-26 16:49:09)
·Spring Boot Java: (2025-12-26 16:20:19)
·Spring BootでHello (2025-12-26 16:20:15)