未经作者允许,不论什么人不得以“原创”形式公布,也不得已用于商业用途,本人不负责不论什么法律责任。
前一篇:http://blog.csdn.net/dba_huangzj/article/details/38368737
假设没有对数据库文件(MDF/LDF等)做权限控制。攻击者能够把这些文件复制走,然后附加到自己机器上进行分析。
第一层保护就是对SQL Server文件所在的NTFS文件系统进行权限管控。
假设希望进一步保护数据库,能够使用透明数据库加密(Transparent Database Encryption,TDE),这个功能能够保护相应数据库的全部文件,无论有多少个文件。
由于文件已经加密。即使这些文件被复制走,假设没有数据库主密钥,也一样不能使用。同一时候,这样的加密不影响用户对数据库的使用。开发者不须要对此做额外的工作。
须要注意。仅仅有开发版、且一般和数据中心版才支持TDE。
1. 创建server加密主密钥:
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '强password';
2. 立即备份主密钥,并放到安全的地方,假设丢失了主密钥,将导致自己都无法使用:
BACKUP MASTER KEY TO FILE = '\\path\SQL1_master.key' ENCRYPTION BY PASSWORD = '强password';
当中password必须复合Windows 安全策略要求。而且SQL Server服务帐号要有对相应文件夹的写权限。
3. 在Master库中创建server证书:
CREATE CERTIFICATE TDECert WITH SUBJECT = 'TDE Certificate';
4. 备份证书:
BACKUP CERTIFICATE TDECert TO FILE = '\\path\SQL1_TDECert.cer' WITH PRIVATE KEY ( FILE = '\\path\SQL1_TDECert.pvk', ENCRYPTION BY PASSWORD = '另外一个强password' );
5. 创建相应数据库的数据库加密密钥:
USE 目标数据库; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE TDECert; --TDECert为证书名
6. 启用数据库加密:
ALTER DATABASE 目标数据库 SET ENCRYPTION ON;
TDE自己主动加密磁盘上的数据和日志文件,不须要对数据库额外改动。而且能够加密全部数据库或日志备份。实现方式也非常easy。
对于加密算法,通常能够使用AES_128/192/256 或者Triple_des_3key。
当中TRIPLE-DES强度更高。
可是可能影响性能。
对于TDE的性能分析,能够訪问这篇文章:http://www.databasejournal.com/features/mssql/article.php/3815501/Performance-Testing-SQL-2008146s-Transparent-Data-Encryption.htm(Performance Testing SQL 2008's Transparent Data Encryption。SQL Server 2008 TDE/透明数据库加密性能測试)。
假设须要还原加密后的数据库文件到另外一台server,须要首先还原证书到目标server:
USE master; CREATE CERTIFICATE TDECert FROM FILE = '\\path\SQL1_TDECert.cer' WITH PRIVATE KEY ( FILE = '\\path\SQL1_TDECert.pvk', DECRYPTION BY PASSWORD = 'password' );原文出处: http://blog.csdn.net/dba_huangzj/article/details/38398813
然后就能開始还原数据库或日志文件。
下一篇:http://blog.csdn.net/dba_huangzj/article/details/38438363