SQL Server 2008中的代码安全(八) 透明数据加密(TDE)

SQL Server 2008引入透明数据加密(Transparent Data Encryption),即TDE
它允许你完全无需修改应用程序代码而对整个数据库加密。


当一个用户数据库可用且已启用TDE时,在写入到磁盘时在页级实现加密。在数据页读入内存时解密。
如果数据库文件或数据库备份被盗,没有用来加密的原始证书将无法访问。

这几乎是SQL Server2008安全选项中最激动人心的功能了,有了它,我们至少可以将一些初级的恶意窥视拒之见外。


USE Master 
GO 
--删除旧主密钥
--Drop MASTER KEY
--GO 
--创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='B19ACE32-AB68-4589-81AE-010E9092FC6B' 
GO 
--创建证书,用于透明数据加密
CREATE CERTIFICATE TDE_Server_Certificate 
WITH SUBJECT = 'Server-level cert for TDE' 
GO 

--打开aa数据库
USE [aa] 
GO 
--第一步:现在开始透明加密
CREATE DATABASE ENCRYPTION KEY--创建数据库加密密钥 
    WITH ALGORITHM = TRIPLE_DES_3KEY--加密方式 
    ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate--使用服务器级证书加密 
GO 
/* 
警告: 用于对数据库加密密钥进行加密的证书尚未备份。应当立即备份该证书以及与该证书关联的私钥。
如果该证书不可用,或者您必须在另一台服务器上还原或附加数据库,
则必须对该证书和私钥均进行备份,否则将无法打开该数据库。
*/ 


--第二步:打开加密开关
ALTER DATABASE [aa] SET ENCRYPTION ON 
GO 

--查看数据库是否加密 
SELECT  is_encrypted FROM    sys.databases
WHERE   name = 'aa' 

--注意:一旦在数据库应用了加密,应该立刻备份服务器级证书!
 
--没有加密dek的证书,该数据库将无法打开,附加到别的服务器也无法使用,数据库文件亦不会被Hack。
--如果一个DBA想要合法地将数据库从一个SQL Server实例移动到另一个SQL Server实例,
--那么她应该首先备份服务器级证书,然后在新的SQL Server实例中创建证书。
--此时可以合法地备份、还原数据库或附加数据及日志文件。
 
--示例二、管理和移除透明加密(TDE) 

USE [aa] 
GO 
--修改加密算法 
ALTER DATABASE  ENCRYPTION KEY 
REGENERATE WITH ALGORITHM = AES_128 
Go 

SELECT  DB_NAME(database_id) databasenm,
        CASE encryption_state
          WHEN 0 THEN 'No encryption'
          WHEN 1 THEN 'Unencrypted'
          WHEN 2 THEN 'Encryption in progress'
          WHEN 3 THEN 'Encrypted'
          WHEN 4 THEN 'Key change in progress'
          WHEN 5 THEN 'Decryption in progress'
        END encryption_state, key_algorithm, key_length
FROM    sys.dm_database_encryption_keys 

/* 
对所有用户数据库的加密处理也包含对tempdb的处理 ,因为表连接,临时表都要用到tempdb
databasenm encryption_state key_algorithm key_length 
tempdb Encrypted AES 256 
DB_Encrypt_Demo Encrypted AES 128 
*/ 

--除了更改dek的算法,我们也可以更改用来加密数据库的服务器级证书(该证书应该定期更改)
 
USE master 
GO 
CREATE CERTIFICATE TDE_Server_Certificate_V2 
WITH SUBJECT = 'Server-level cert for TDE V2' 
GO 
USE [aa] 
GO 
ALTER DATABASE ENCRYPTION KEY 
ENCRYPTION BY SERVER CERTIFICATE TDE_Server_Certificate_V2
--用新证书修改DEK 

--移除数据库透明加密 
ALTER DATABASE [aa] 
SET ENCRYPTION OFF 
GO 

--移除TDE后,可以删除DEK 
USE [aa] 
GO 
DROP DATABASE ENCRYPTION KEY 
Go 

小结: 


1、本文主要介绍透明数据加密(TDE)的使用。 

2、对DEK的修改同时影响到tempdb数据库的加密状态。 

http://www.cnblogs.com/downmoon/archive/2011/03/17/1986383.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值