数据库粗粒度安全审计方法
【技术领域】
[0001]本发明属于数据库领域,特别是数据库粗粒度安全审计方法。
【背景技术】
[0002]数据库是现代信息系统的重要支撑,其安全性对信息和系统安全具有决定性作用。安全审计作为信息安全的重要支撑技术,在数据库安全中也起到非常重要的作用。数据库安全审计作为实现数据库操作可审查性的机制,受到数据库管理系统厂商和信息安全厂商的高度重视。前者在自己的数据库管理系统中提供了安全审计功能,后者则研发专门的数据库审计系统来实现数据库访问的安全审计。
[0003]目前广泛使用的四大数据库管理系统如Oracle、Microsoft SQL Server、Sybase和IBM DB2、MySQL等,它们都有自己的审计功能。总体上看,数据库管理系统支持的审计功能基本上是对主体访问客体的数据库操作,如Select、Insert、Update、Delete等进行记录。
[0004]针对数据库审计的重要性,很多信息安全厂商也推出了自己的数据库安全审计产品。这些产品基本上都是通过截获网络数据包,解析得到SQL语句,然后对SQL语句进行记录。
[0005]无论是数据库管理系统内嵌的审计功能还是专门的数据库安全审计产品,都是实现细粒度的审计,记录的是SQL语句可以表达的操作,是数据层面的,审计记录不能反映这些操作的业务含义。另外,由于这种细粒度的审计记录数据量很大,一旦启用审计功能,数据库系统的整体性能将受到很大影响。
【发明内容】
[0006]本发明针对数据库管理系统的审计功能和数据库安全审计系统不能满足数据库应用系统面向功能审计要求的现实,给出数据库粗粒度安全审计方法,包括学习和审计两个阶段。
[0007]学习阶段包括如下步骤:
[0008]I)截获应用系统执行功能时与数据库管理系统交互的SQL语句;
[0009]2)解析并抽象化截获的SQL语句;
[0010]3)存储应用系统功能名称及其执行的SQL语句的抽象化结果。
[0011]审计阶段包括如下步骤:
[0012]I)截获应用系统与数据库管理系统交互的SQL语句;
[0013]2)解析截获的SQL语句;
[0014]3)与学习阶段存储的抽象化SQL语句匹配,成功则记录相应功能被执行的审计记录,失败则告警,并可根据安全配置终止SQL语句执行。
[0015]由于数据库粗粒度安全审计方法记录的审计信息不是应用系统执行的SQL语句,而是执行的功能名称,因此审计记录的意思更加明确,记录的数据量大大减少。明确的功能执行记录能够满足应用系统面向功能审计的要求。记录的数据量的大大减少使审计的空间和时间性能得到大大提高,克服了数据库安全审计资源消耗过大的问题。
[0016]数据库粗粒度安全审计方法通过学习过程对应用系统的正常SQL语句执行情况进行了建模,因此可以识别非法的SQL语句执行模式并阻断。
[0017]虽然数据库粗粒度安全审计方法只记录应用系统执行的功能,记录的数据量大大减少,但信息量并不减少,因为根据审计记录的功能名称可以获得执行的SQL语句。
【附图说明】
[0018]图1数据库系统架构图
[0019]图2数据库安全审计的访问接口架构图
[0020]图3数据库安全审计的安全代理架构图
[0021]图4数据库粗粒度安全审计方法处理框图
【具体实施方式】
[0022]下面结合附图对本发明作更进一步的说明。
[0023]数据库系统一般包括数据库应用系统APP(Applicat1n)、数据库管理系统DBMS (Database Management System)、数据库 DB (Database)等组成部分,APP 通过数据库访问接口 DBAI (Database Access Interface)和 DBMS 交互,而 DBAI 和 DBMS 间一般是通过网络进行通信。如图1所示。
[0024]现要对数据库访问进行安全审计,可采取访问接口和安全代理两种架构,如图2和图3所示。
[0025]通过安全数据库访问接口 SecDBAI截获应用系统执行的SQL语句并进行审计的系统架构如图2所示。APP可被配置为通过SecDBAI访问数据库,SecDBAI实现标准的访问数据库的接口,如ODBC、JDBC, OLEDB等。在SecDBAI中,获得SQL语句并进行必须的处理后,再交给数据库管理系统的DBAI去执行。这种实现架构具有符合工业标准和实现简单的特点,可兼容不同的数据库管理系统和不同版本的数据库管理系统。
[0026]采用安全代理技术,从网络通信数据包中分析获取SQL语句并进行审计的系统架构如图3所示。安全代理SecProxy被部署在DBAI和DBMS之间,DBAI和DBMS间的网络通信必须经过SecProxy转发,这样SecProxy就可以对数据包进行分析,并对关心的数据包进行处理。这种方式需要针对特定数据库管理系统的特定版本进行应用层的通信协议分析,兼容性较差,分析的复杂度较高。
[0027]无论是采用SecDBAI还是SecProxy技术,目的就是截获应用系统APP和DBMS间交互的SQL语句,为后续的SQL语句分析处理做好准备。
[0028]数据库粗粒度安全审计方法对SQL语句的处理过程如图4所示。SQL截获模块可采用SecDBAI或SecProxy技术,其输出为SQL语句。如果系统处于学习阶段,截获的SQL语句将交给学习引擎进行处理。如果系统处于审计阶段,截获的SQL语句将交给审计引擎进行处理。
[0029]在学习引擎中,SQL语句首先被解析,形成内部词法和语法结构,然后被抽象化,去掉一些常数参数和可变部分。经过解析和抽象化后的SQL语句,被添加到应用系统功能名称对应的SQL语句集合并被记录到配置文件。经过处理后,SQL语句被转发给数据库管理系统继续执行。
[0030]在审计引擎中,SQL语句首先被解析形成内部语法结构,然后和从配置文件中读取的SQL语句集合进行匹配。如果和某一集合匹配成功,则向审计数据库中记录对应的应用功能的名称等相关审计信息,并将SQL语句转发给数据库管理系统继续执行。如果匹配失败,则可根据审计策略配置情况采取记录警告信息、报警、终止SQL语句的执行等动作。
【主权项】
1.数据库粗粒度安全审计方法,其特征在于包括学习和审计两个阶段,学习阶段包括截获应用系统执行功能时与数据库管理系统交互的SQL语句、解析并抽象化截获的SQL语句、存储应用系统功能名称及其执行的SQL语句的抽象化结果三个步骤;审计阶段包括截获应用系统与数据库管理系统交互的SQL语句、解析截获的SQL语句、根据与学习阶段存储的抽象化SQL语句匹配成功与否决定记录相应功能被执行的审计记录或告警并根据安全配置终止SQL语句执行。2.根据权利要求1所述的数据库粗粒度安全审计方法,其特征在于学习阶段可以人工干预,审计阶段无需人工干预。3.根据权利要求1所述的数据库粗粒度安全审计方法,其特征在于截获应用系统执行的SQL语句时可采用网络通信数据包截获并分析和开发符合标准的数据库访问接口两种方法。4.根据权利要求1所述的数据库粗粒度安全审计方法,其特征在于应用系统执行功能时与数据库管理系统交互的SQL语句要经过抽象化处理,去掉无用和可变信息再存储,而不是直接将SQL语句存储下来供匹配用。5.根据权利要求1所述的数据库粗粒度安全审计方法,其特征在于存储SQL语句抽象化结果时采用压缩技术,有效减少存储量并提高存储效率。6.根据权利要求1所述的数据库粗粒度安全审计方法,其特征在于学习阶段实质是对应用系统正常执行功能时SQL语句执行情况的建模。7.根据权利要求1所述的数据库粗粒度安全审计方法,其特征在于可配置SQL语句匹配失败时阻断其执行,防止非法SQL语句访问和操作数据库。8.根据权利要求2所述的数据库粗粒度安全审计方法,其特征在于人工干预包括启动和停止学习模式、为应用系统执行的功能命名、选择抽象化SQL语句中的可变参数。9.根据权利要求3所述的数据库粗粒度安全审计方法,其特征在于开发的符合标准的数据库访问接口可基于数据库管理系统自身的访问接口,尽量利用其功能。
【专利摘要】本发明公开了数据库粗粒度安全审计方法,包括学习和审计两个阶段。学习阶段包括以下步骤:1)截获应用系统执行功能时与数据库管理系统交互的SQL语句;2)解析并抽象化截获的SQL语句;3)存储应用系统功能名称及其执行的SQL语句的抽象化结果。审计阶段包括如下步骤:1)截获应用系统与数据库管理系统交互的SQL语句;2)解析截获的SQL语句;3)与学习阶段存储的抽象化SQL语句匹配,成功则记录相应功能被执行的审计记录,失败则告警,并可根据安全配置终止SQL语句执行。本发明具有审计记录语意准确、存储量小、记录效率高,审计功能应用系统透明,可阻断非法语句执行等优点。
【IPC分类】G06F21/50
【公开号】CN105653930
【申请号】
【发明人】黄保华, 霍林, 覃海生
【申请人】广西大学
【公开日】2016年6月8日
【申请日】2014年10月21日