详解SQL Server 2014的数据库加密特性

日期: 2014-02-13 作者:Basit Farooq翻译:曾少宁 来源:TechTarget中国 英文

由于敏感数据丢失和未授权的泄露事件越来越多,所以SQL Server安全性成为许多企业越来越关注的一个重要问题。通常,监管机构也要求给一些数据施加可靠的SQL Server加密,如信用卡和社交安全数据等,而SQL Server 2014的特性可以帮助我们解决这个问题。 SQL Server给DBA提供了几种加密数据并通过网络传输数据的方法,同时它还支持备份或将其存储在服务器或网络上。这些加密方法包括:透明数据加密、字段级加密、SQL Server对象定义加密、备份加密、SQL Server连接加密、通过Windows EFS实现的数据文件级加密和BitLocket驱动器加密。

在本文中,我将逐一……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

由于敏感数据丢失和未授权的泄露事件越来越多,所以SQL Server安全性成为许多企业越来越关注的一个重要问题。通常,监管机构也要求给一些数据施加可靠的SQL Server加密,如信用卡和社交安全数据等,而SQL Server 2014的特性可以帮助我们解决这个问题。

SQL Server给DBA提供了几种加密数据并通过网络传输数据的方法,同时它还支持备份或将其存储在服务器或网络上。这些加密方法包括:透明数据加密、字段级加密、SQL Server对象定义加密、备份加密、SQL Server连接加密、通过Windows EFS实现的数据文件级加密和BitLocket驱动器加密。在本文中,我将逐一介绍SQL Server支持的几种在SQL Server数据库中对数据执行加密的方法。

透明数据加密

透明数据加密(TDE)首次在SQL Server 2008中引入。TDE是SQL Server中防御绕过数据安全和从磁盘读取敏感数据的潜在攻击者的主要加密方法。它支持数据库层空闲数据的实时I/O加密和解密。TDE可以给数据库的每一个页加密,然后在需要访问时自动解密每一个页。TDE不需要额外的存储空间,也不需要修改底层的数据库模式、应用程序代码或过程。而且,用户或应用程序完全感觉不到它的存在(透明),因为它运行在SQL Server服务层。

TDE加密使用一个数据库加密密钥(Database Encryption Key, DEK),这是一个非对称密钥,它使用存储在主数据库的服务器证书进行加密。DEK存储在数据库的启动记录中,因此可以在数据库恢复过程中使用。服务器证书则使用数据库主密钥(Database Master Key, DMK),而DMK本身又使用服务器主密钥(Server Master Key, SMK)加密。DMK和SMK都属于非对称密钥。当我们在SQL Server上加密数据时,SMK会自动创建,然后绑定到SQL Server Service帐号上。此外,SMK还由Windows Data Protection API加密。

另外,TDE还可以加密数据库备份和快照,从而使它成为兼容管理规范和企业数据保密法律的最佳选择。

字段级加密

字段级加密(也称为单元格级加密)可以加密和解密数据库中的保密数据。我们可以使用以下方法加密或解密数据:

  • 通行码(Passphrase):通行码是最低要求的安全方法。它要求在加密和解密数据的过程中使用相同的通行码。如果存储过程和函数没有加密,那么通行码就可以通过元数据访问。
  • 非对称密钥:它使用不同的密钥去加密和解密数据,从而提供强力的保护。然而,它的性能较差,而且不适合用于加密大数据值。它可以由数据库主密钥(DMK)签名,也可以用密码创建。
  • 对称密钥:它有较高的性能,强大的加密效果适用于大多数加密需求。它使用相同的密钥去加密和解密数据。
  • 证书:它有较强的保护效果和较高的性能。它可以与一个用户关联。证书必须用数据库主密钥签名。

为了支持加密-解密操作,字段级加密要求修改应用程序代码和数据库模式,因为所有加密的数据都必须使用varbinary数据类型存储。字段级加密方法提供了更加细粒度的SQL Server加密技术,因此我们可以用它加密一个表中的一个单元格。此外,数据只有在使用时才会解密,这意味着当页加载到内存时,数据仍然不是明文。

加密SQL Server连接

SQL Server加密提供以下两种网络数据加密选择:Internet Protocol Security (IPSec)和Secure Sockets Layer (SSL)。

IPSec由操作系统实现,它支持使用Kerberos、证书或预共享密钥执行身份验证。IPSec提供了先进的协议过滤机制,可以根据协议和端口来阻挡流量。我们可以用本地安全策略或通过组策略(Group Policy)来配置IPSec。IPSec兼容Windows 2000以上版本。要使用这个方法,客户端和服务器的操作系统都必须支持IPSec。

SSL由SQL Server实现。它主要用于支持Web客户端,但是它也可以用于支持原生SQL Server客户端。当客户端请求一个加密连接时,SSL就会验证服务器。如果运行SQL Server实例的计算机有一个来自于Public Certificate Authority (PCA)的证书,那么这个计算机的标识和SQL Server实例将保证证书链通向可信的根授权。这种服务器端验证要求客户端应用程序所在的计算机配置为信任服务器所使用证书的根授权。这里可以使用自签名证书的加密方式,但是自签名证书的保护力度有限。

相对于IPSec而言,SSL具有两个主要优势:客户端配置很少和服务器配置很简单。

其他SQL Server加密方法

加密SQL Server对象定义:我们可以在创建存储过程、视图、函数和触发器时使用WITH ENCRYPTION子句,从而加密这些对象的定义文本。在加密之后,我们就无法解密这些对象的文本。

加密备份:加密备份时必须使用主数据和证书的数据库主密钥(DMK)或非对称密钥。在加密备份时,我们必须指定一个加密算法,以及一个保证加密密钥安全的加密器。

通过Windows EFS进行文件级加密:从Windows Server 2000开始,微软就引入了一个文件系统加密(Encrypting File System, EFS)特性,它可以加密操作系统的文件。我们可以使用EFS特性加密整个SQL Server数据目录。和SQL Server的原生加密方法类似,EFS也依赖于Windows DPAPI。与透明数据加密不同,它不会自动加密数据库备份。在SQL Server 2008之前,EFS是加密NTFS磁盘中数据库文件的唯一方法。这是因为,在启用EFS之后,SQL Server I/O操作就变成同步的。在EFS加密数据库文件的当前I/O操作完成之前,工作者线程会一直处于等待状态。

BitLocket驱动器加密:BitLocket驱动器加密是Windows Vista和Windows 7旗舰版和企业版、Windows 8专业版和企业版桌面操作系统、Windows Server 2008、Windows Server 2008 R2和Windows Server 2012的一个全盘加密特性。它还能使用一个AES加密算法加密空闲数据。BitLocket不存在EFS那样的性能问题。

作者

Basit Farooq
Basit Farooq

资深数据库管理员、培训师和技术撰稿人,具有十多年微软SQL Server平台的开发、技术培训和数据库管理的经验。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐