基于数据库协议代理的前置式数据库访问控制方法和系统 【技术领域】
本发明涉及一种数据库访问控制方法和系统,具体是一种基于数据库协议代理方式,对客户端和服务器完全透明,独立于数据库管理系统之外,并前置于数据库管理系统的访问控制方法和系统。
背景技术
数据库已成为现代计算机系统的必备部件,几乎所有的行业都将业务运营的关键数据存储在数据库之上。当前的数据库访问控制方法通过数据库管理系统(DBMS)中的访问控制器(包括身份认证过程和访问策略控制过程)来实现。
参见图1,其是当前流行数据库管理系统结构示意图。侦听器110、访问控制器120和执行器130作为数据库管理系统密不可分的模块,每一次客户端的正常或异常访问,都会引起侦听器110、访问控制器120和执行器130的动作,消耗系统资源,并且不可预期。在极端的情况下,恶意攻击访问控制认证器120,会导致整个数据库服务器宕机。一些特殊的访问控制要求,也只能用访问控制器120特定的处理方式来完成。例如,需要限制某个用户只能在特定的时间窗口(例如工作目的早上9:00到下午17:00)通过特定的IP访问数据库,需要编写特定的程序来实现。当前主流商业数据库管理系统的密码处理算法基本被公开,再加上用户身份认证丢失、保管不善、使用随意等状况普遍存在,如果要求在访问控制器120上实现基于动态密码(例如60秒自动变更密码的令牌方式)的访问控制也是目前数据库管理系统所不能轻易胜任的一个复杂过程。在访问控制器120存在漏洞时,还会严重威胁数据库安全。一项由商业数据库厂商委托第三方的调查显示,利用访问控制器120实现最基本的访问监视功能也实际上被用户放弃,缘由就是不能接受不可预期的性能开销。不难推断,当前不安全也不实用的数据库访问控制方法是一系列数据泄密、数据篡改以及数据捣毁事件根源。
【发明内容】
本发明的目的是在不改造现有客户端和数据库结构的前提下提供一种全新的数据库访问控制方法和系统,以解决当前数据库访问控制的缺陷。本发明提供了一种基于数据库协议代理的前置式数据库访问控制方法和系统。其技术方案包括:
一种基于数据库协议代理的前置式数据库访问控制方法,包括:
a、数据库协议代理侦听网络上的数据库协议包,通过协议解析,进行身份认证以及访问控制策略判定,若判定为真,则执行步骤b,若判定为假,则执行步骤c;
b、数据库协议代理依据数据库策略动作对数据库协议包重组后发送给数据库,由数据库进行后续处理并给数据库协议代理返回结果信息,再由数据库协议代理依据客户端策略动作对数据库协议包重组后返回客户端,执行步骤a或结束;
c、将错误信息封装成数据库协议包返回客户端,执行步骤a或结束。
步骤a所述协议解析是指识别出数据库操作符和操作串,数据库操作符包括:数据库连接操作符和数据库访问操作符。数据库连接操作符的操作串是一个五元组:(数据库名称,IP地址,TCP端口,用户名,密码)。该操作串被用于身份认证以及访问策略控制。数据库访问操作符的操作串是一个二元组:(SQL或其扩展语句,绑定参数向量)。该操作串被用于访问策略控制。
步骤b所述数据库策略动作是指如何修改发送给数据库的数据库协议包的动作定义,进一步包括数据库连接操作串和数据库访问操作串的修改要求。
步骤b所述客户端策略动作是指如何修改发送给客户端的数据库协议包的动作定义,进一步包括返回码和返回串的修改要求。
步骤b、c所述执行步骤a或结束,由访问控制动作来定义,对于执行步骤a意味着客户端与数据库协议代理、数据库协议代理与数据库仍然保持连接,而对于结束,意味着客户端与数据库协议代理、数据库协议代理与客户端的连接关闭。所述访问控制动作,包括继续执行、停止执行、修改后执行、放弃执行。其中继续执行、修改后执行和放弃执行会导致步骤a,停止执行会导致结束。
所述数据库进行后续处理,进一步包括:侦听器110、控制器120和执行器130的处理。从而认定前置式数据库访问控制方法实际上是一种双重数据库访问方法。在实际应用时,访问控制可侧重于加载在数据库协议代理之上,避免不必要的数据库后续处理开销。
进一步,可控制数据库协议代理的起停状态实现客户端的可用控制,而无需起停数据库。
进一步,数据库可以同时侦听来自客户端和数据库协议代理的请求,此为混合模式的数据库访问控制方法。在实际应用时,可将信任客户端直接接入数据库,而将不信任客户端经由数据库协议代理再接入数据库。
进一步,数据库协议代理可以同时侦听来自客户端和另一个数据库协议代理的请求,此为多级模式的数据库访问控制方法。在实际应用时,可将复杂的访问控制分散在多个数据库协议代理上,从而形成访问控制网络。
一种基于数据库协议代理的前置式数据库访问控制系统,包括:侦听器、访问控制器和转发器。其中:
所述侦听器,用于侦听特定TCP端口的数据库协议包,并将合法的数据库协议包发送给访问控制器;
所述访问控制器,用于解析数据库协议包的数据库连接操作串和数据库访问操作串,并依据预先定义的认证要求和策略控制要求进行判定;
所述转发器,用于依据数据库策略动作对数据库协议包重组后发送给数据库。
所述转发器,进一步用于依据客户端策略动作对数据库协议包重组后返回客户端。
所述转发器,进一步用于将错误信息封装成数据库协议包返回客户端。
进一步,系统与客户端、数据库工作在同一数据库协议层,从而使得客户端与系统的通信,以及系统与数据库的通信构成会话接续。
本发明的关键是引入了基于数据库协议的代理机制,从而使客户端、数据库协议代理和数据库工作在同一数据库协议层。数据库协议代理的前置判断如果为真,则继续递交到数据库,如果为假,则直接返回。进一步,可限定数据库协议代理的起停状态实现客户端可用控制。进一步,基于数据库协议的代理机制支持混合模式和多级模式的数据库访问控制。因此,本发明实现了一种高效、安全、透明、隔离、专门、灵活、实时、可视的数据库安全控制方法。高效是指尽可能少地影响现有数据库性能;安全是指能提供额外的数据库安全能力;透明是指不影响现有应用的改造;隔离是将数据库连接操作串的五元组屏蔽,避免恶意攻击,不将额外负载引入数据库服务器,代理实现地安全控制机制先于数据库管理系统本身的安全控制机制;专门是仅收集特定数据库访问,不涉及其他信息的采集;灵活是指能够方便地通过加载策略实现多样的安全控制方法;实时是指零等待地获取所有数据库访问语句。可视是能直观地监视及分析任意时间点的数据库访问。从而有效地控制数据库访问安全,进而规避数据泄露、数据篡改、恶意删除、非法访问等风险事件发生。
【附图说明】
图1是当前流行数据库管理系统结构示意图;
图2是根据本发明一实施例实现的基于数据库协议代理的前置式数据库访问控制方法流程示意图;
图3是根据本发明一实施例实现的混合模式的数据库访问控制方法交互示意图;
图4是根据本发明一实施例实现的多级模式的数据库访问控制方法交互示意图;
图5是根据本发明一实施例实现的基于数据库协议代理的前置式数据库访问控制系统结构示意图。
【具体实施方式】
本发明的思路是:引入基于数据库协议的代理,使客户端、数据库协议代理和数据库处于同一数据库协议层次,不改造现有客户端和数据库结构,实现前置式地实施数据库访问控制,进而控制并审计整个数据库通道。
下面结合附图及具体实施例,对本发明作进一步详细说明。
图2是根据本发明一实施例实现的基于数据库协议代理的前置式数据库访问控制方法流程示意图。
步骤210,数据库协议代理侦听网络上的Oracle协议(TNS)包,通过协议解析,进行身份认证和访问控制策略判定,若判定为真,则执行步骤220,若判定为假,则执行步骤230;
步骤220,数据库协议代理依据数据库策略动作对TNS包重组后发送给Oracle数据库,由数据库进行后续处理并给数据库协议代理返回结果信息,再由数据库协议代理依据客户端策略动作对TNS包重组后返回客户端,执行步骤a或结束;
步骤230,将错误信息封装成TNS包返回客户端,执行步骤a或结束。
图3是根据本发明一实施例实现的混合模式的数据库访问控制方法交互示意图。
客户端310通过数据库协议代理330接入Oracle数据库340;
客户端320直接接入Oracle数据库340。
图4是根据本发明一实施例实现的混合模式的数据库访问控制方法交互示意图。
客户端401通过数据库协议代理405,再通过数据库协议代理408接入Oracle数据库410;
客户端402通过数据库协议代理406,再通过数据库协议代理408接入Oracle数据库410;
客户端403通过数据库协议代理406,再通过数据库协议代理408接入Oracle数据库410;
客户端404通过数据库协议代理407,再通过数据库协议代理409接入Oracle数据库410。
本发明还公开了一种基于数据库协议代理的前置式数据库访问控制系统,包括:侦听器501、访问控制器502和转发器503。其中:
侦听器501,用于侦听特定TCP端口(例如1600)的TNS包,并将合法的TNS包发送给访问控制器502;
访问控制器502,用于解析TNS包的数据库连接操作串和数据库访问操作串,并依据预先定义的认证要求和策略控制要求进行判定;
转发器503,用于依据数据库策略动作对TNS包重组后发送给Oracle数据库。
转发器503,进一步用于依据客户端策略动作对TNS包重组后返回客户端。
再有,转发器503,还用于将错误信息封装成TNS包返回客户端。
进一步,系统与客户端、数据库工作在同一数据库协议层,从而使得客户端与系统的通信,以及系统与数据库的通信构成会话接续。
对于客户端而言,本系统提供了类似数据库的五元组,因此对客户端应用完全透明,客户端不需要进行特别的代理配置,只是以一个五元组替换另一个五元组。同时,因为本系统前置于数据库,也屏蔽了真实的数据库五元组,隔离了可能的恶意攻击,也规避了由此产生的性能开销。由于在数据库之外的五元组存在,密码算法可以有更多选择,可配置实现基于令牌的动态密码。
本发明方法及系统不限于Oracle。可以应用于任何C/S(包括B/S)结构的数据库管理系统。如Sybase、SQLServer、DB2、MySQL等。
以上所述仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。