资源描述
查看文章
透明数据加密sql2008 (转)
2010-08-28 23:05
透明数据加密(Transparent Data Encryption,TDE)是SQL Server 2008支持的一项新功能。它允许通过加密数据库文件和事务日志页实现对整个数据库的加密。使用这一加密选项不需要对数据库现有的应用程序做任何修改,同时它也不会影响数据库的大小。需要加/解密页,使用TDE必然会增加数据库自身的运行开销。TDE使用数据库加密密钥进行加/解密。千万不要将数据库加密密钥与数据库主密钥相混淆。数据库加密密钥只用于TDE,并且是由某个证书或存储在master数据库中的非对称密钥保护的(如图13-2所示)。数据库主密钥用于保护证书和数据库中的非对称密钥,除了在master数据库中,一般不会直接用于TDE。
图13-2 透明数据加密的体系结构
使用TDE备份的数据库使用数据库加密密钥进行加密。为了还原该备份,必须首先掌握用于加密数据库加密密钥的证书或非对称密钥。
当某个数据库使用TDE加密时,也会加密tempdb系统数据库。这会为同一台服务器上另外一些需要用到tempdb的数据库带来额外的开销。
为了使用TDE,必须满足以下条件:
数据没有被标记为只读;
不存在标记为只读的文件组;
没有正在处理的备份或快照;
当前未执行任何ALTER DATABASE语句。
创建密钥和证书
为了使用TDE,首先需要创建一些密钥,包括:
用于master数据库的数据库主密钥;
master数据库中的证书或非对称密钥;
数据库加密密钥。
数据库加密密钥使用证书或非对称密钥进行保护。除非使用了某个EKM提供程序用于非对称密钥的管理,否则通常推荐使用证书。原因很简单,证书能够被独立备份。证书和非对称密钥都需要存储于master数据库,并由数据库主密钥进行加密,从而保证SQL Server服务能够自动对其进行解密。
在下面的例子中,假设已经创建了一个名为TDEDemo的数据库。为了实现TDE,需要进行如下的操作:
(1) 在master数据库中创建一个主密钥--如果还未创建的话。通过查询sys.symmetric_keys系统视图可以验证是否存在主密钥。
1. USE Master
2. GO
3. CREATE MASTER KEY
4. ENCRYPTION BY PASSWORD = 'StrongPassw0rd';
(2) 在master数据库中创建一个证书或非对称密钥,用于加密数据库加密密钥。为了使用TDE,该证书或非对称密钥必须使用数据库主密钥进行加密,而不是使用密码。
1. CREATE CERTIFICATE cert_TDEDemoEncryption
2. WITH SUBJECT = 'Certificate to encrypt the TDEDemo database';
(3) 创建一个数据库加密密钥,并用此前创建的证书或非对称密钥加密。
1. USE TDEDemo;
2. GO
3. CREATE DATABASE ENCRYPTION KEY
4. WITH ALGORITHM = AES_256
5. ENCRYPTION BY SERVER CERTIFICATE cert_TDEDemoEncryption;
(4) 在数据库选项中启用TDE。
1. ALTER DATABASE TDEDemo SET ENCRYPTION ON;
(5) 查询sys.dm_database_encryption_keys动态管理视图来查看加密状态。encryption_state列指示了数据库的加密状态。encryption_state列的可能取值如表13-2所示。
表13-2 encryption_state列的取值
值
描 述
0
没有数据库加密密钥,未加密
1
未加密
2
正在加密
3
已加密
4
正在更改密钥
5
正在解密
一定要记住,备份用于保护数据库加密密钥的证书或非对称密钥。为了还原数据库,必须保证该证书的可用。
展开阅读全文