原文出处:http://blog.csdn.net/dba_huangzj/article/details/38398813,专题文件夹:http://blog.csdn.net/dba_huangzj/article/details/37906349

未经作者允许,不论什么人不得以“原创”形式公布,也不得已用于商业用途,本人不负责不论什么法律责任。

前一篇: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'
);

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38398813

5. 创建相应数据库的数据库加密密钥:

USE 目标数据库;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE TDECert; --TDECert为证书名

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38398813

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

Chapter 1 Securing Your Server and Network(11):使用透明数据库加密的更多相关文章

  1. Chapter 1 Securing Your Server and Network(5):使用SSL加密会话

    原文:Chapter 1 Securing Your Server and Network(5):使用SSL加密会话 原文出处:http://blog.csdn.net/dba_huangzj/art ...

  2. Chapter 1 Securing Your Server and Network(10):使用扩展保护避免授权中继攻击

    原文:Chapter 1 Securing Your Server and Network(10):使用扩展保护避免授权中继攻击 原文出处:http://blog.csdn.net/dba_huang ...

  3. Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证

    原文:Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证 原文出处:http://blog.csdn.net/dba_huan ...

  4. Chapter 1 Securing Your Server and Network(8):停止未使用的服务

    原文:Chapter 1 Securing Your Server and Network(8):停止未使用的服务 原文出处:http://blog.csdn.net/dba_huangzj/arti ...

  5. Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse

    原文:Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse 原文出处:http://blog.csdn.net/dba_h ...

  6. Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙

    原文:Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙 原文出处:http://blog.csdn.net/dba_hu ...

  7. Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号

    原文:Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/arti ...

  8. Chapter 1 Securing Your Server and Network(3):使用托管服务帐号

    原文:Chapter 1 Securing Your Server and Network(3):使用托管服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/arti ...

  9. Chapter 1 Securing Your Server and Network(1):选择SQL Server运行账号

    原文:Chapter 1 Securing Your Server and Network(1):选择SQL Server运行账号 原文出处:http://blog.csdn.net/dba_huan ...

随机推荐

  1. 基于Android Studio搭建hello world工程

    基于Android Studio搭建hello world工程 版本:ANDROID STUDIO V0.4.6 This download includes: ·        Android St ...

  2. Innodb MVCC源码实现

    1. 概述 MVCC: 即多版本一致性,在事务模型下,使用version控制数据版本,关系型数据库基本都实现了MVCC,以对表数据的读写互不阻塞,增大了并发量. Oracle和MySQL数据库都是使用 ...

  3. innodb master主线程

    http://wenku.baidu.com/link?url=MhY9yhHTgeOlyooWDvaVfPkW3cuVSX_rIZv2QtCu7GLeEuqSfYh_M7Yvl1N4IY08a3ws ...

  4. DTD约束文件

    在讲解DTD文件之前,我要说说一份合格的XML应该符合怎么样的规则? 就我总结一下几点,大家看看就好了: 1.一份XML有且仅有一个根元素. 2.XML是严格区分大小写的,<book>元素 ...

  5. 陈正冲老师讲c语言之声明和定义的区别

    什么是定义?什么是声明?它们有何区别? 举个例子: A)int i; B)extern int i;(关于extern,后面解释) 哪个是定义?哪个是声明?或者都是定义或者都是声明?我所教过的学生几乎 ...

  6. date 获取昨天日期

    使用date -d 选项:  date  +"%Y%m%d" -d  "+n days"         今天的后n天日期       date  +" ...

  7. 【转】Android中的颜色设置

    原文网址:http://www.cnblogs.com/bluestorm/p/3644669.html 1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如: 1 2 3 publ ...

  8. html语意化标签

    一.布局的理解误区 网络上流行管新型的布局方式叫“DIV+CSS”,其实是一个错误的理解,导致了很多人过度依赖 与滥用DIV标签, HTML提供了我们一共七八十个标签,其中常用的有三十个左右,DIV不 ...

  9. 用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理

    1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条 ...

  10. java jvm学习笔记二(类装载器的体系结构)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao                 在了解java虚拟机的类装载器之前,有一个概念我们是必须先知道的,就是java的沙箱,什 ...