2013年(1)
分类: Oracle
2013-05-14 13:27:35
数据库安全包括多个含义,一个含义是数据库不因意外事故丢失数据,这个方面主要通过备份和恢复策略来保障,服务更高可用的保障还包括集群和备用库,在Oracle可通过RAC和DataGuard来实现。数据库安全的另一个含义是防止有意的攻击和破坏,包括非法查询、非法更改和删除数据,这就需要通过一系列的安全策略来实现。下面讨论的都是针对第2个含义的数据库安全采取的一些措施。
本人所在的是一个对外提供数据录入、查询访问的数据中心,采用一个3层架构的应用程序来使用数据库,即客户端、业务逻辑中间层和后台数据库,分别运行在逻辑上独立的计算机上,彼此之间通过网络来连接。这中间任何一层都能实现对数据库的访问,因此,必须在每一层上保证对数据库的安全。
首先,需要在数据库服务器操作系统一级实行安全策略。
数据库的数据文件和可执行文件均存储在物理硬盘上,在操作系统上,可以执行删除文件、停止进程等危险操作,必须严格限制对操作系统的远程登录。有时候开发人员为了方便,在本机上装一个客户端软件,就使用telnet或ssh访问数据库主机,应该禁止这种行为,方法有2种,一种是在服务器端防火墙增加白名单或黑名单,拒绝未经授权的IP地址访问,另一种是设置一个堡垒主机,执行访问审计和验证,通过验证的用户才能访问数据库服务器。
其次,在数据库一级实行安全策略。(以Oracle为例)
第一种方法是在数据库中创建一个登录触发器,在触发器中限制IP、用户、客户端软件等,但这种方法对SYS等管理员用户无效,只会生成日志信息。第2种方法是在监听的配置文件sqlnet.ora中设置tcp.validnode_checking=yes并在tcp.invited_nodes中列出允许的IP列表。这种方法对数据库的压力更小,且对管理用户有效,当然,对于能访问主机操作系统用户,他也可以修改这个配置,所以,必须首先保证操作系统安全本法才能有效。Oracle还提供了多种安全措施或产品,如审计和Database Vault,提供更多的安全功能和更强的控制能力,并能满足合规性的要求。
再次,在应用服务器层加强保护。
一般而言,用户都是通过合法的应用程序访问数据库,很少直接访问数据库,数据库对合法的应用程序也建立了信任关系,如果通过应用服务器层访问数据库,就有可能绕过IP限制等控制手段,所以,必须对应用服务器主机实现与数据库服务器同样的安全策略。
最后,在应用程序中加强安全设计。
应用程序直接面对最终用户,也直接面对攻击者,如果程序有漏洞,就可能被攻击者利用,轻易地通过应用程序威胁数据库安全。可以采用漏洞扫描软件对常见的漏洞进行查找,及时修改有问题代码,防止被黑客攻击。首要的还是加强安全意识,自觉在设计中考虑安全问题,如只授予必需的权限等。
总之,要综合采取多种手段,保证数据库安全。