分类: 服务器与存储
2008-06-24 15:43:36
任何加密工作的第一步都是确定保护什么数据,以及要防范的对象是谁。我曾经合作过很多客户,他们都试图跳过这一步而直接进入技术配置。这些客户的数目之多,一定会让你大吃一惊。在实施技术之前,必须提前解决如下问题:
只有两种方法真正实用于加密技术,每一种都将直接决定着组织系统结构的选择。
第一种方法是媒体保护加密。在这种方式中,全部数据库都有可能被加密,其目的是保护数据库文件或内容,以防物理或虚拟方式窃取。这里需要注意的是有人会偷取数据库文件或者储存数据的媒体。如果你担心有人侵入服务器并窃取数据库文件,或是当你换出硬盘时丢失数据库文件,选择这种方法是相当正确的。尽管这种方法可能能够保护数据,防止系统管理员或其他有权访问保存数据库的地址的用户盗窃。但是,这种方法不能阻止数据管理员或者用户(或者任何侵入其账户的人)访问这些数据。
媒体加密是相当直接的,并有大量好产品和技术可供选择。由于是在数据库以外加密,因而它影响数据库性能的可能性就更小,也不需要对数据库或应用程序作出任何改变。一些数据库管理系统包括这样一种可供选择的加密技术:允许在数据表格或整个数据库水平上加密。或者,可以选择使用几乎任何一种高性能文件或文件夹加密工具。在这两种情况下,加密操作是在服务器上进行的,如果它超出可接受的限制以外,会反过来影响性能。这时就要考虑使用一种内嵌式加密设备,该设备带有专用硬件来加速加密进程。
第二种组织采用的方法的是责任分离加密。如果你的企业为了阻止管理员看到数据,以及其它类似情形的发生,需要对数据库中的信用卡数字进行加密,那么这是最好的选择。责任分离加密比对媒体保护加密要复杂得多;它包括保护数据,以防合法数据库用户盗窃,并要求数据库本身进行更多的改变。几乎每种情况下,这都意味着需要进行列级加密。如果列是一个单独的区域,不是一个主要的或是外部密钥,不依赖于其用于标定性能的系统结构,也不受限于范围搜索,那么对于加密而言,这就是一种不错的选择。反之,它仍然可以用于加密,但需要改变主要的数据库和应用程序。
既然你能够按照所构建的加密技术进行规划,那么为列级加密技术设计一个新的数据库的过程就是非常简单的。此外,一些含有繁琐的应用程序附件的遗留体系,需要一个主要密钥进行加密,对于这些体系,该项目将持续2-3年。大部分加密方案都中途破产,其难点是由密钥关系,指标和任何必要应用程序的改变决定的。
虽然所有主要的数据库管理系统提供了列级加密,但是没有一个系统支持去除那些数据库默认的密钥。我的建议是尽量使用本地的加密性能,不要使用第三方密钥管理产品来将密钥从数据库中分离出来。该策略允许安全管理者,而不是数据库管理者,对密钥进行管理,支持责任分离。不论其他任何人告诉你什么,你都不要尝试加密主要密钥。最后,确定你真正得到了你期望的利益——数据库加密无法防止SQL入,并无法阻止一个有权进入的危险账户。
关于域加密,我的建议是:如果可能的话,尽量避免在现存的数据库中使用加密,而要在含有敏感信息的数据库中构建加密技术。比如,在将信用卡数据从现存系统中分离出来的时候,我的一些大型企业客户正采用信用卡数据来构建安全中心库,这些信用卡数据是用于交易的、并已经经过加密。如果需要在现存系统中分离职责,可以考虑使用媒体保护加密,然后可以添加另一种数据库安全技术——比如数据库活动监控——来实现责任分离。