如果在几年以前,谈起数据库的安全,估计没有多少人会理解其重要性。但是,现在不同了,因为更多敏感信息的泄露或篡改而导致身份窃取和财务违规的现象,让企业,特别是上市公司,不得不重视安全问题。
目前,减轻内部安全威胁的呼声越来越高,加之美国萨班法案(Sarbanes-Oxley)、美国HIPAA法案(Health Insurance Portability and Accountability Act)、日本个人信息保护法案、欧盟隐私和电子通信指令等法规和隐私保护指令的不断出台,保护数据免受未授权访问已经成为当务之急。
为了解决这个问题,oracle去年推出了Oracle Database Vault,一个从数据库层面上解决安全问题的产品。 Oracle Database Vault帮助客户保护敏感信息免遭内部威胁,并实施分责指令,要求敏感任务由多人完成。但是数据库至少是9208或者是10.2.3,在oracle 11g有进一步的加强。database vault可通过下列方法解决一些最为常见的安全问题和内部威胁:
·限制特权DBA,如sysdab以及有select any table的授权用户访问应用程序数据。
·防止应用程序 DBA 操纵数据库和访问其他应用程序。
·更好的控制何人、何时、何地可以访问应用程序。
Oracle Database Vault体现出来的三权为:
管理dba:通常是sysdba,如果安装并激活了database vault,sysdba的权限将大大减少,操作系统认证也将失效,没有alter user等等特权,不能查看由Oracle Database Vault保护起来的业务数据。举一个例子,你有一个业务用户叫HR,已经被database vault给保护起来了,你就是有再大的查看权限,如select any table,你也查看不了HR用户下的数据。所以,管理dba的作用就是启动关闭数据库,管理数据文件,管理表空间等等。
应用或者是开发dba:因为不能通过OS认证登陆数据库,所以,他们在没有sys等特权用户的密码的情况下,是不能管理数据库的。但是,他们知道应用用户的密码,如能登陆HR用户,看到HR用户下的数据。但是,每个用户也是分割的,如HR用户可以看到HR下面的数据,但是不能看到finance用户下的数据。
审计用户/管理员:这个用户可以配置database vault策略,也拥有一些alter user之类的特权命令的执行权,他们还可以查看管理dba与开发dba的一些违规操作。但是,最主要的是,他们要指定好策略,实现上面所说的,更好的控制何人、何时、何地可以访问应用程序。如,可以规定,这个数据库的某个用户数据,只能在特定的IP地址的机器上能访问;也可以规定,比如财务数据,只能从早上8点到晚上18点能接受访问,其它时间任何人都不能访问到该数据。
Oracle Database Vault是甲骨文公司安全产品系列的一个组成部分,可与Oracle标记安全(OracleLabel Security)、Oracle透明数据加密(Oracle Transparent Data Encryption)、Oracle虚拟专有数据库(Oracle Virtual Private Database)、Oracle安全备份(Oracle Secure Backup)等其他Oracle数据库安全产品一起使用,以实现更高级别的信息保护。
现在database vault遭遇到的最大的困难可能还是可靠度方面以及性能方面的问题,到底有多少人用到了这个东西,是否有bug,性能影响到底有多大等等。在性能方面,因为它会改变select语句的行为(权限),我怀疑一个策略的改变将引发众多语句的重新编译,这个情况在高可用的OLTP环境中则是比较恐怖的。
其实,数据库的安全,也仅仅是所有安全策略中的一个小部分,如果安全做的好,我们就不再仅仅是依靠dba或者是sa的人品了。


