ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据管理的三权分立

数据管理的三权分立

原创 Linux操作系统 作者:bryanxu 时间:2009-04-30 11:25:28 0 删除 编辑
这篇文章已经发表在《软件世界》2009年第4期上。这里是作者本人的转载。 

我的数据真的安全吗

在今年的央视3.15晚会上,最受关注的是曝光了倒卖个人信息的黑幕。虽然说曝光的内容主要是黑客通过病毒木马盗窃个人信息,但是也让大众对自己的个人信息安全提出了疑问:我在银行、电信、医院、政府部门登记的各种信息是不是一定能保证安全呢?

其实需要被保护的数据远远不止我们的个人信息,还有企业的财务数据、客户资料、政府部门的各种统计数据、税务资料等等。英国就曾经发生记录有全国所有接受儿童津贴的家庭详细信息的光盘在快递过程中遗失,最后导致税务署长辞职,财务大臣出面向公众道歉的事。

最容易发生数据泄漏的是保存在文件系统(包括光盘)上的各种数据,例如一些Excel表格,或者更简单的文本文件。这些文件很容易被人拷贝走,因为很少有人对目录和文件的访问权限进行严格的管理。有些保存数据的目录被临时共享,但是共享时没有对可以访问者加以限制,甚至有人忘了取消共享;有些笔记本被盗,或者还有些机器中了木马,这些情况下文件系统中的数据都会完全暴露给了信息窃取者。

好在目前大量的数据都是保存在数据库中的。数据库提供了基本的用户名/口令保护,必须有相应的用户名/口令才能查询到数据,而且不同用户之间也不能随意看到对方的数据。

但是数据一旦保存在数据库里就真的安全了吗?事实并非如此简单。因为在数据库中还存在一些所谓的“超级用户”(也称为DBA——数据库管理员的英文文缩写),例如Oracle数据库中的syssystem用户,IBM DB2数据库的db2admin用户, Microsoft SQL ServerSybase数据库的 sa用户。只要用这些超级用户登录数据库,就可以看到数据库中所有用户的数据,也可以修改任何用户的数据。

 

过度集中的权力带来高风险

为什么会存在这些超级用户呢?这些超级用户是数据库创建过程中的缺省用户,可以认为是数据库中的“造物主”,因为所有新的用户都是由他们创建的。他们就象Unix系统的root 用户,WindowsAdminstrator用户,有着至高无上的权力。当然,为了安全,一般这种超级用户的口令都被掌握在极少数人手里。

但是过度集中的权力都会带来问题,当超级用户拥有最高权力的时候,意味着他或她可以做任何想做的事,而且可以不留下任何痕迹。这种诱惑力太大了,如果你也看过科幻电影《透明人(Hollow Man)》,就知道这种诱惑可能会让一个原本善良的人滑向罪恶的深渊。

事实上,我们有过这么一些例子:某大型企业的DBA在公司的财务系统数据库中查到老总的工资,晒到了网上;某外包公司的技术人员利用非法获取的DBA口令在移动公司的数据库中篡改充值卡数据,为自己牟利了三百多万;爱尔兰的某个政府雇员利用自己的管理员身份把高收入人群的信息偷出来交给自己的弟弟,而他弟弟据此勒索那些富人的钱财;美国一个金融服务公司的DBA在五年时间内盗取了八百多万客户的名单,自己开了家公司靠出卖这些信息赢利;而金融危机爆发以后,也有听到被裁员的员工带走公司机密的案例。

举这些例子并不是想说明DBA是不可靠的(事实上绝大部分的DBA都是称职的数据保护者),而是过于集中的权力给DBA这个角色带来了很大的风险。

那么如何防止这些滥用特权的行为呢?有些企业想的办法是把超级用户的密码分成两段,必须由两个人一起输入才能登录,所有操作也必须两人同时在场。这看上去更安全了,但是就象保管金库的两个人可以串通了一起监守自盗一样,这个方法并不能解决本质的问题。

 

三权分立

现实世界里解决权力过度集中的方式之一就是三权分立(这里的“三”可以泛指为“多”)。我们想象一下,如果有人可以执行管理数据的操作,有人负责控制管理数据的规则,另外还有人监督和审计前两类人的行为,那么权力过度集中的问题就可以通过互相制约被解决。这就和政治学里著名的行政、立法、司法三权分立不谋而合。

 SHAPE  \* MERGEFORMAT

以下是数据管理三权分立的详细规划:

第一类用户是数据库管理员,他们有数据的管理权(行政权)。他们可以授予和取消普通用户数据访问的权限,执行数据管理的各种操作。他们仍然能做一些特殊的,需要数据库级权限的操作,例如备份整个数据库的数据。但是传统的数据库管理员的“万能”的权力被大大削减,包括创建新用户的权限也会被收回。

第二类用户是安全管理员,他们拥有安全规则的制定权(立法权),和之前的由DBA管理用户权限不同的是,他们在数据库原有的权限管理之外,对数据的访问控制做更周密和灵活的规则设置。例如指定某些敏感数据的集合只能被指定的用户访问,如果没有被指定,即使是DBA也无法访问。又例如,即使是数据的所有者,也可以被安全管理员限制不能删除自己的数据。安全管理员可以规定某些操作只能在某个时间段内执行,或者某些操作只能在指定的IP地址上执行。

但是安全管理员不能为用户授予各种权限,也就是说,如果要想让某个用户(包括安全管理员自己)看到另一个用户的数据,还必须由另一个用户自身或者数据库管理员先对该用户授权。

这是一种互相制约的机制。安全管理员可以创建新用户,可以指定新用户为某些敏感数据的允许访问者,这是个必要条件。但是并不意味着这个新用户就可以看到这些敏感数据,他还需要得到DBA的授权。而DBA也不再能随意查询或修改其他用户的数据。DBA原来的种种特权也可以被安全管理员根据实际需求通过命令规则进行限制。

第三类用户是审计管理员,他们拥有数据操作的审计权(司法权)。他们可以监督前两类用户的操作,如果发现有不符合法规或内部控制要求的活动,他们可以调查这些活动的细节。这些活动可能包括数据库管理员将权限授给不合适的用户,或者安全管理员临时取消某些安全规则,以方便某些用户执行非法操作等等。

审计管理员和安全管理员一样,本身都不能执行对其他用户的具体数据的操作,这是一种平衡。但是审计管理员拥有一套机制,可以保护审计记录数据不会被数据库管理员或者安全管理员删除或者篡改。

对于普通的数据库用户,相当于平民大众,他们的日常操作不会受到任何影响,所有访问数据库的应用程序也不需要做任何修改。但是他们对敏感数据的所有操作,也可以被记录下来,受到审计管理员的审计和监督。

至此,滥用数据库超级用户特权的安全漏洞可以完全被堵住。整个数据管理的安全性也得到了本质的提高。

 

数据库发展的新方向

这套三权分立的机制看上去比较复杂,而且需要至少三个人才能实现。但是如果被管理的数据确实很重要,泄漏或破坏的后果非常严重的话,那么相信我,建立这么一套机制是必要的。

尤其是设立审计管理员之后,对一些没有事先采取防范措施导致的事故可以做事后的追溯,从而可以清楚地区分事故的责任。

有人要问,我只有一个DBA,如何做三权分立?其实,只要有一个安全控制和审计软件系统,安全管理员和审计管理员并不需要由专职的懂数据库的技术人员担当,因为他们的操作非常简单,都是通过图形化的界面完成。举个例子,审计管理员就可以由IT部门经理自己担任,他只需要通过报表和报警信息就可以完成日常的审计,而且还可以了解自己的下属都在做什么。

也有人要问,三权分立看上去很不错,但是实现起来是不是很困难呢?事实上,数据管理的三权分立已经成为数据库发展新的方向之一。首先,各种主流的数据库都已经提供了数据库审计的功能,而以Oracle Audit Vault为代表的数据库审计软件能把企业组织内部所有的数据库(无论是Oracle, DB2, 还是SQL Server, Sybase)的审计信息集中管理起来,解决了审计管理员的问题。其次,在安全控制上,各主流的数据库厂商也已经或即将推出相应的解决方案。

当然,目前对基于文件系统的数据管理实现三权分立还有些难度,所以,还是把敏感的数据存放在数据库中吧,这是更好的选择。

DBMgmtChknBlns.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/241166/viewspace-592356/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-09-18

  • 博文量
    4
  • 访问量
    49598