数据库自主安全防护技术的研究与实现
摘 要: 针对目前主流数据库的安全防护功能配置方式不灵活、不能应变需求的问题,在HOOK技术的基础上融入组态思想,设计并实现了一种适用于不同数据库的自主安全防护系统(DSS)。在SQLITE上的相关实验表明,利用DSS完全可以实现独立于特定数据库的自主安全防护,大大提高了数据安全防护的灵活性。关键词: 数据库安全; HOOK API; 访问控制; 数据库审计; SQLITE; 自主安全系统
近年来,有关数据库的安全事故不断出现,例如银行内部数据信息泄露造成的账户资金失密等。因此,高度重视数据库安全防护很有必要。但一直以来,国内数据库产业化发展缓慢,市场份额中较大一部分被国外大型数据库企业占有。这对于国内用户而言,信息的安全性、稳定性等方面都会受到威胁。有的系统涉及使用多个数据库,并且对每个数据库的安防功能要求各不相同。这样,在保障整个系统安全的目标下就需要对每个数据库进行专门配置管理,不但维护难度很大,而且工作也比较繁重。面对这些实际问题,目前的数据库系统自带的安全防护配置方式已不能胜任,如何提出一个灵活独立的安全防护系统迫在眉睫。1 相关安全防护技术介绍 目前,数据库系统面临的主要威胁有:(1)对数据库的不正确访问引起数据库数据的错误。(2)为了某种目的,故意破坏数据库。(3)非法访问不该访问的信息,且又不留痕迹;未经授权非法修改数据。(4)使用各种技术攻击数据库等。多年来,人们在理论和实践上对数据库系统安全的研究做出了巨大的努力,也取得了很多成果。参考文献[1-2]介绍了保护数据库安全的常用技术,包括:存取管理技术、安全管理技术、以及数据库加密技术,并给出了一些实现途径。其中,访问控制和安全审计作为数据库安全的主要保障措施受到了人们广泛关注,参考文献[3]对访问控制技术中的基本策略进行了总结,给出了实现技术及各自的优缺点。参考文献[4]主要针对权限建模过程中的权限粒度问题做了分析,并提出一个基于角色的访问控制框架。进入21世纪以后,访问控制模型的研究重点开始逐渐由集中式封闭环境转向开放式网络环境,一方面结合不同的应用,对原有传统模型做改进,另一方面,也提出一些新的访问控制技术和模型,比较著名的有信任管理、数字版权管理和使用控制模型 [5]。审计通过对数据库内活动的记录和分析来发现异常并产生报警的方式来加强数据库的安全性[6]。目前,在我国使用的商品化关系数据库管理系统大都提供了C2级的审计保护功能,但实现方式和功能侧重有所不同。周洪昊等人[7]分析了Oracle、SQL Server、DB2、Sybase的审计功能,分别从审计系统的独立性、自我保护能力、全面性和查阅能力四个方面对审计功能做出改进[7]。参考文献[8]则针对审计信息冗余、审计配置方式死板以及数据统计分析能力不足等问题,在数据库系统已有的审计模块基础上,重新设计和实现了一种新型的数据库安全审计系统。 但所有的这些工作都是从数据库系统的角度出发,并没有从本质上解决安全防护对数据库系统的依赖性问题,用户还是很难对数据库提供自主的安全防护功能。如果能将安全防护从数据库管理系统中彻底独立出来,针对不同的应用需求允许用户自己实现安全防护功能模块并在逻辑上加入到数据库应用系统中,这样问题也就迎刃而解了。 通过以上分析,本文提出一种独立于具体数据库、可组态的安全防护模型,并给出具体的实现方法。该模型将安全防护从数据库完全独立出来,在多数据库应用中实现集中配置安防,满足用户对于自主防护功能的需求。并在开源的嵌入式数据库产品SQLITE中做了功能测试,实验结果表明,该模型切实可行,达到了预想的效果,既能实现对系统的保护,又大大提高了系统的灵活性。2 自主安全防护系统的设计与实现 自主安全防护系统DSS(Discretionary Safety System)的主要功能是阻止用户对信息的非法访问,在可疑行为发生时自动启动预设的告警流程,尽可能防范数据库风险的发生,在非法操作发生时,触发事先设置好的防御策略,实行阻断,实现主动防御,并按照设置对所发生的操作进行详细记录,以便事后的分析和追查。2.1 系统结构 在DSS中,安全管理员使用角色机制对用户的权限进行管理,通过制定安全策略来设置核心部件Sensor以及访问控制部件。核心部件Sensor侦听用户的数据库操作请求,采用命令映射表将不同的命令映射为系统识别的命令,提取出安全检查所需要的信息,发送到访问控制模块进行安检。安检通过了则允许用户访问数据库,否则拒绝访问,同时根据审计规则生成记录存入审计日志。DSS结构如图1所示。
DSS作为独立的功能模块主要通过向Sensor提供数据库的调用接口的方式保障对数据库信息安全合理地访问。系统有一个默认的访问控制流程,用户也可以自己设定安全策略,系统自动生成相应访问控制流程。本文约定被访问的对象为客体,请求操作的用户为主体,DSS访问控制流程如图2所示。
2.2 系统实现 系统实现主要分为系统数据字典设计、用户登录与用户管理、系统相关策略制定、侦听器(Sensor)的实现、访问控制以及日志审计六部分。原数据库API信息(dll)、用户的自主防护策略作为输入,Sensor核心一方面将用户的防护策略融合在原数据库的API接口中,另一方面记录用户对数据库的操作并生成日志,提供给用户做审计。用户在使用过程中不需要修改原有系统,即可实现自主防护。系统核心Sensor的结构如图3所示。