SQL 2005 和 2008 DB 上的透明数据加密选项

SQL 2005 和 2008 DB 上的透明数据加密选项

最近,在马萨诸塞州通过了一项法律(相当隐晦地)包含个人身份信息的数据必须加密。州政府将 PII 定义为包含居民姓和名以及以下任一信息的组合:

A. SSN

B. 驾驶执照或身份证号码

C. 借记卡或信用卡号

由于我们制作的软件的性质,我们所有的客户端都使用 SQL 作为后端。通常,服务器将运行 SQl2005 Standard 或更高版本,有时运行 SQL 2008。几乎所有客户端计算机都使用 SQL2005 Express。我们在客户端和服务器之间使用复制。不幸的是,要获得时间延迟估计您需要在每台机器上安装 SQL Enterprise,这绝对不是一个选择。我正在寻找可以加密数据库的产品推荐。现在,我对整个磁盘加密一点也不感兴趣。

答案1

这也是一个PCI处理信用卡信息时的要求。您可能正在考虑加密表格中的实际数据。当我完成此操作时,我必须在表中创建新列,生成其各自源列的加密数据,然后删除源(未加密)列。问题是您的应用程序必须进行更改才能处理加密数据。

您还希望开启强制协议加密在服务器上。

答案2

关于该法规,有两个条款暗示何时使用加密:

  • 对所有通过公共网络传输的包含个人信息的记录和文件进行加密,以及对所有通过无线方式传输的包含个人信息的数据进行加密。
  • 对存储在笔记本电脑或其他便携式设备上的所有个人信息进行加密。

因此,除非数据库位于笔记本电脑或便携式设备上,否则无需加密数据库本身(尽管法规的其他部分适用于该状态下的数据)。此外,加密该状态下的数据无法满足预期目的;即数据传输时。我建议您研究传输级别安全性(例如:HTTPS)以遵守这一点。

然而,如果你的问题的本质确实是关于在数据库级别加密数据,我肯定会建议使用类似TrueCrypt,这将允许您加密在标准文件系统中表示为文件的虚拟磁盘。但是,从实用性的角度来看,我建议您考虑字段级加密。也就是说,在应用程序/服务级别加密/解密字段并将加密值存储在数据字段中。

答案3

TDE 仅加密静态数据。这是很重要的一点。因此,如果有人在 SQL Server 正常运行时闯入它,数据将不会被加密。因此,除非您知道要使用哪些密钥进行解密,否则 Squillman 的方法是确保数据确实已加密的唯一方法。如果这足够了(静态数据),则操作系统提供的加密文件系统 (EFS) 是一种选择。这可以在单个文件上设置,也可以在文件夹级别设置(最好在文件夹级别进行设置)。一个区别是 EFS 不会加密备份。启用 TDE 的数据库的备份是加密的。您需要使用第三方产品(如 SQL LiteSpeed 或 Red Gate SQL Backup)来确保备份是安全的。

至于强制协议加密,我不会选择这种方式。我宁愿在操作系统级别使用 IPSEC 策略,使用 Kerberos 来生成安全隧道。这样就无需为 SQL Server 安装 SSL 证书。

答案4

如果 TDE 不可接受,那么您唯一的选择就是 BitLocker 卷级加密。要以高性能方式与 SQL Server 配合使用,加密必须能够加密/解密文件中的页面,这意味着它必须能够将加密密钥设置为相应的状态以访问文件中页面的偏移量。这排除了所有文件级加密解决方案,因为它们无法解密/加密文件的块 X,而无需先解密/加密块 X-1(以将密钥设置为正确状态)。

相关内容