一种数据库审计方法和设备的制作方法

文档序号:6603011阅读:195来源:国知局

专利名称::一种数据库审计方法和设备的制作方法
技术领域
:本发明涉及通信
技术领域
,特别涉及一种数据库审计方法和设备。
背景技术
:数据库审计系统是目前数据库安全防护的重要手段,它实时地、智能地解析每一个用户对Oracle数据库的各种操作,并将审计结果记入相关数据库中,以便管理人员进行查询、分析等操作,从而加强数据库应用的行为监管,保障数据库系统的正常运营。由于在金融、电信等行业当中大量使用数据库系统,这种审计需求尤为突出。目前大部分行业内部的大型数据库都采用了Oracle公司研制开发的数据库,Oracle的关系数据库是世界第一个支持SQL语言的数据库,使用的TNS协议较为复杂,驱动协议类型以ODBC和JDBC为主。对于Oracle数据库,常规的数据库操作都是以SQL语句的方式提交给Oracle数据库进行处理的(比如“select*fromtablelwhereage=28”)。Oracle数据库收到每一条SQL语句后需要进行语法解析、编译、生成访问方案、数据库引擎执行具体操作等一系列步骤,占用较多的CPU资源。目前大部分数据库审计系统都可以实现这种SQL语句访问Oracle数据库的审计。为了降低Oracle数据库的资源消耗,提高Oracle数据库的性能和吞吐量,Oracle数据库提供了一种使用PreparedStatement模板访问Oracle数据库的方法。使用该模板访问Oracle数据库时,用户首先定义一个Pr印aredStatement模板,每次访问数据库时只需要修改变量值即可。Oracle数据库在第一次处理Pr印aredStatement模板时需要进行语法解析、编译、生成访问方案、数据库引擎执行具体操作等一系列步骤,后续使用同一模板时直接进行数据库引擎执行具体操作,从而降低了Oracle数据库的资源消耗,提高了Oracle数据库的性能和吞吐量。但是对于这种使用Pr印aredStatement模板访问Oracle数据库的方法,由于在SQL语句中存在变量绑定,现有的数据库审计系统只能将包含变量名的SQL语句提取出来,而无法实现变量值的替换。当多个Pr印aredStatement模板交替执行时,对于非第一次的执行,由于网络报文中不存在SQL语句关键字,现有的数据库审计系统甚至无法审计出该SQL语句的执行。目前已公开的方案中还没有针对使用Pr印aredStatement模板访问Oracle数据库的审计方法。在实现本发明的过程中,发明人发现现有技术至少存在以下问题现有的数据库审计系统只能实现一般SQL语句的审计,不支持使用PreparedStatement模板访问Oracle数据库的审计方法。
发明内容本发明提供一种数据库审计方法和设备,能够精确识别数据库操作的内容,尤其是通过操作模板访问数据库的操作的内容,并对相应的数据库操作内容进行审计。为达到上述目的,本发明一方面提供了一种数据库审计方法,具体包括以下步骤4识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;如果包含,识别所述对数据库的数据库操作会话中的数据库操作指令;判断所述数据库操作指令中是否存在SQL语句的关键字;如果存在SQL语句的关键字,判断所述数据库操作指令中是否包含变量标识;如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息,并在所述包含数据库操作指令的报文中提取变量值替换所述变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计;当所述对数据库的数据库操作会话中后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。优选的,所述识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,具体为根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;如果包含,记录所述会话所对应的会话信息和所述会话的驱动协议类型,如果不包含,放弃对所述会话中的报文进行审计处理。优选的,所述如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号,具体为当所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;当所述会话的驱动协议类型为ODBC驱动时,记录所述会话所对应的数据库服务器所确定的所述数据库操作指令所对应的操作模板编号。优选的,所述如果存在SQL语句的关键字,判断所述数据库操作指令中是否包含变量标识之后,还包括如果判断所述数据库操作指令中没有包含变量标识,则根据所述SQL语句的关键字所对应的操作内容对所述数据库操作指令进行审计。优选的,所述当后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计,具体包括当后续接收到的数据库操作指令中不包含SQL语句的关键字时,则在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号;查询所述操作模板编号所对应的操作模板信息;在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。另一方面,本发明还提供了一种数据库审计设备,具体包括识别模块,用于识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,并在识别到所述对数据库的数据库操作会话时,进一步识别所述对数据库的数据库操作会话中的数据库操作指令;判断模块,与所述识别模块相连接,用于在所述识别模块识别到所述对数据库的数据库操作会话中的数据库操作指令时,判断所述数据库操作指令中是否存在SQL语句的关键字,并在存在SQL语句的关键字时,进一步判断所述数据库操作指令中是否包含变量标识;记录模块,与所述判断模块相连接,用于在所述判断模块判断存在变量标识时,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息;查询模块,与所述判断模块和所述记录模块相连接,用于在所述判断模块判断不存在SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,向所述记录模块查询对应的操作模板信息;审计模块,与所述记录模块和所述查询模块相连接,用于在所述包含数据库操作指令的报文中提取变量值,通过所述变量值替换所述记录模块记录的,或所述查询模块查询的操作模板信息中的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。优选的,所述识别模块,具体用于根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;所述记录模块,进一步与所述识别模块相连接,用于在所述识别模块的识别结果为包含时,记录所述会话所对应的会话信息和所述会话的驱动协议类型;所述审计模块,进一步与所述识别模块相连接,用于在所述识别模块的识别结果为不包含,放弃对所述报文进行审计处理。优选的,所述记录模块,还用于当记录的所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;当记录的所述会话的驱动协议类型为ODBC驱动时,记录根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号。优选的,所述审计模块,进一步与所述判断模块相连接,用于在所述判断模块判断所述数据库操作指令中没有包含变量标识时,根据所述SQL语句的关键字所对应的操作内容,对所述数据库操作指令进行审计。优选的,当所述判断模块判断数据库操作指令中不包含SQL语句的关键字时,所述查询模6块,还用于在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号,根据所述操作模板编号,向所述记录模块查询对应的操作模板信息;所述审计模块,用于在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。与现有技术相比,本发明具有以下优点通过应用本发明的技术方案,能够精确识别数据库操作的内容,可以实现完整的数据库操作行为审计(包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。图1为本发明所提出的一种数据库审计方法的流程示意图;图2A为本发明所提出的一种针对使用Pr印aredStatement模板访问Oracle数据库的审计方法的流程示意图;图2B为本发明所提出的一种针对使用Pr印aredStatement模板访问Oracle数据库的审计方法的应用场景的示意图;图3为本发明所提出的为本发明应用过程中的一种具有Oracle数据流特征的报文的示意图;图4为本发明所提出的为使用一般SQL语句操作Oracle数据库的报文的示意图;图5为本发明所提出的使用JDBC驱动,应用Pr印aredStatement模板,并第一次访问Oracle数据库对应的关键报文的示意图;图6为本发明所提出的使用JDBC驱动,同一Pr印aredStatement模板后续访问Oracle数据库对应的关键报文的示意图;图7为本发明提出的一种数据库审计设备的结构示意图。具体实施例方式针对
背景技术
中所存在的问题,本发明提出了一种针对使用操作模板访问Oracle数据库的审计方法,可以实现完整的Oracle数据库行为审计,包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计,真实还原每一个用户对Oracle数据库的各种操作,并将审计结果记入相关数据库中,以便管理人员进行查询、分析等操作,从而加强数据库应用的行为监管,保障数据库系统的正常运营。如图1所示,为本发明所提出的一种数据库审计方法的流程示意图,具体包括以下步骤步骤S101、识别当前系统所建立的会话中是否包含对数据库的数据库操作会话。如果包含,执行步骤S102;如果不包含,继续进行相应的识别。在具体的应用场景中,本步骤具体为根据DPI(De印PacketInspection,深度包检测)识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,如果包含,记录该对数据库的数据库操作会话所对应的会话信息和会话的驱动协议类型。从而保证该会话中的报文都可以进行是否审计处理的进一步判断,并且驱动协议类型的记录也为后续处理确定了相应的处理策略,具体说明见后,在此不再说明。需要指出的是,上述根据DPI识别技术识别会话的情况实际上是针对报文的识别,即在判断一个报文是针对数据库进行操作的报文时,确认该报文所对应的会话为对数据库的数据库操作会话。步骤S102、识别对数据库的数据库操作会话中的数据库操作指令。如果包含,执行步骤S103;如果不包含,执行步骤S106。即在该会话中查找包含执行SQL语句的数据库操作指令,只有这样的语句才会进行进一步的审计处理,而且,在实际应用场景中,一般对于在步骤S101中所识别的会话中向数据库发送的单向报文都会携带自身是否是数据库操作指令的指示信息,可以据此判断该报文是否为数据库操作指令。步骤S103、判断数据库操作指令中是否存在SQL语句的关键字。如果存在SQL语句的关键字,执行步骤S104;如果不存在SQL语句的关键字,执行步骤S107。步骤S104、判断数据库操作指令中是否包含变量标识。如果存在变量标识,执行步骤S105;如果不存在变量标识,执行步骤S108。步骤S105、记录数据库操作指令所对应的操作模板编号和对应的操作模板信息,并在包含数据库操作指令的报文中提取变量值替换变量标识,还原数据库操作指令的内容,并对数据库操作指令进行审计。对应步骤S101中的驱动协议类型的记录结果,本步骤中记录数据库操作指令所对应的操作模板编号的处理分为以下两种情况情况一、当会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据该会话所对应的客户端的指令所确定的,或根据该会话所对应的数据库服务器的指令所确定的数据库操作指令所对应的操作模板编号。情况二、当会话的驱动协议类型为ODBC驱动时,记录该会话所对应的数据库服务器所确定的数据库操作指令所对应的操作模板编号。步骤S106、放弃对报文进行审计处理。步骤S107、根据数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原数据库操作指令的内容,并对数据库操作指令进行审计。首先,本步骤的实现前提在于应用相同操作模板的数据库操作指令已经进行过了一次审计,并记录了相应的操作模板编号和操作模板信息,在此种情况下,本步骤的具体处理过程如下首先,当后续接收到的数据库操作指令中不包含SQL语句的关键字时,则在后续接收到的数据库操作指令所对应的报文中获取数据库操作指令中包含的操作模板编号。进一步的,查询该操作模板编号所对应的操作模板信息。然后,在后续接收到的数据库操作指令所对应的报文中提取变量值,替换操作模板信息中所包含的变量标识,还原数据库操作指令的内容,并对数据库操作指令进行审计。步骤S108、根据SQL语句的关键字所对应的操作内容对数据库操作指令进行审计。与现有技术相比,本发明具有以下优点通过应用本发明的技术方案,能够精确识别数据库操作的内容,可以实现完整的数据库操作行为审计(包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。在具体的实施例中,本发明将以PreparedStatement模板作为前述的操作模板的具体示例进行后续技术方案的说明,这仅是具体应用场景中的一种示例,操作模板名称或者具体类型的变化并不会影响本发明的保护范围。Oracle数据库在第一次处理Pr印aredStatement模板时需要进行语法解析、编译、生成访问方案、数据库引擎执行具体操作等一系列步骤,后续使用同一模板时直接进行数据库引擎执行具体操作,从而降低了Oracle数据库的资源消耗,提高了Oracle数据库的性能和吞吐量。但是对于这种使用Pr印aredStatement模板访问Oracle数据库的方法,由于在SQL语句中存在变量绑定,现有的数据库审计系统只能将包含变量名的SQL语句提取出来,而无法实现变量值的替换。当多个Pr印aredStatement模板交替执行时,对于非第一次的执行,由于网络报文中不存在SQL语句关键字,现有的数据库审计系统甚至无法审计出该SQL语句的执行。针对上述问题,本发明提出了一种针对使用Pr印aredStatement模板访问Oracle数据库的审计方法,可以实现完整的Oracle数据库行为审计,包括一般SQL语句的审计和使用PreparedStatement模板访问Oracle数据库的审计,其流程示意图如图2A所示,应用场景的示意图如图2B所示,该审计方法具体包括以下步骤步骤S201、识别Oracle数据流。在实际的组网环境中,流经数据库审计系统的流量是很大的,而其中只有很少一部分是需要处理的访问Oracle数据库的流量。Oracle数据库审计的前提就是要精确识别访问Oracle数据库的流量。在具体应用场景中,如图2B所示,相应的数据库审计系统为了不影响网络系统中的正常通信,通常可以对交换机中的网络流量生成镜像流量,而只对镜像流量进行相应的操作处理,从而,在获取到准确的审计结果的前提下,保证网络中正常的网络流量不受影响。在具体的应用场景中,通常使用DPI识别法识别Oracle数据流,在确定了一个会话的Oracle数据流后,对应该会话的用户在后续处理过程中对Oracle数据库的所有操作都可以在该会话上找到。为了达到这样效果,在识别到一个会话为Oracle数据流后,需要记录该识别到Oracle数据流的会话为Oracle数据流,保证该会话的后续流量经过数据库审计系统时都能够得到处理,这样的记录可以是记录下该会话的标识信息,也可以是为该会话的后续流量统一添加识别标识,具体的记录方法的变化并不会影响本发明的保护范围。进一步的,在识别到一个会话为Oracle数据流后,还需要记录该会话使用的驱动协议类型,在具体的应用场景中,一般默认使用ODBC^penDatabaseConnectivity,开放数据库连接)驱动,但也可能使用JDBC(JavaDataBaseConnectivity,Java数据库连接)驱动。使用的驱动协议类型不同,后续处理中提取Pr印aredStatement模板编号的方法不同,在后续说明中会具体叙述。如图3所示,为本发明应用过程中的一种具有Oracle数据流特征的报文,该报文的特征字符串为“(DESCRIPTION=(C0NNECT_DATA=”,字符串“_jdbc_”表示该会话使用的驱动协议类型为JDBC。具体的,识别到Oracle数据流后,从该会话的后续流量中审计该用户对Oracle数据库执行的每个操作。在实际应用当中,Oracle客户端与服务器之间的交互是通过SQL语句传递的,因此,后续步骤进一步开始识别其中的SQL语句。同时,如果没有识别到Oracle数据流,则放弃进行审计处理。步骤S202、识别Oracle数据流中的当前报文是否为SQL语句执行报文。即识别当前报文中是否包含SQL语句,如果判断结果为不是,则放弃进行审计处理。与现有的数据库审计系统不同的是,除了审计一般SQL语句访问Oracle数据库的操作外,本发明的技术方案中还需要审计使用PreparedStatement模板访问Oracle数据库的相关操作。在具体的应用场景中,这样的识别一般通过判断是否存在SQL语句的关键字,是否存在当前报文是SQL语句执行报文的指示信息,以及其他的识别信息来实现。因此,在具体的应用场景中,基于这样的处理思路,可以使用DPI识别法完成上述识别,进行如下处理步骤S203、判断SQL语句执行报文是否包含SQL关键字。如果包含SQL语句的关键字,执行步骤S204;如果不包含SQL语句的关键字,执行步骤S206。步骤S204、判断SQL语句执行报文是否包含变量。如果包含变量,执行步骤S205;如果不包含变量,执行步骤S207。其中,如果不包含变量,则表示该SQL语句执行报文为一般的SQL语句操作,这是SQL语句执行报文所对应的处理过程的第一种情况,该情况的说明如下情况一、存在SQL语句的关键字,且该SQL语句包含完整的操作内容这样的SQL语句执行报文直接将完整的操作内容携带在相应的语句中,无需另行的处理即可确定相应的操作内容。在此种情况下,可以将SQL语句关键字定义为特征字符串进行识别。识别到该操作报文后,直接提取完整的SQL语句进行审计处理。如图4所示,为使用一般SQL语句操作Oracle数据库的报文,特征字符串为SQL语句关键字"select,,,对应的SQLi吾句为"select*fromtesttablelwhereage=23;,,。另一方面,如果包含变量标识,则表示该SQL语句执行报文使用了Pr印aredStatement模板,并且是使用该模板第一次访问Oracle数据库,这是SQL语句执行报文所对应的处理过程的第二种情况,该情况的说明如下情况二、存在SQL语句的关键字,且该SQL语句包含变量标识,没有包含完整的操作内容这样的SQL语句执行报文没有将完整的操作内容携带在相应的语句中,而是携带了相应的变量标识,需要另行的处理才能确定相应的操作内容。在此种情况下,该操作对应的报文中存在SQL语句关键字,可以将SQL语句关键字定义为特征字符串进行识别。而在识别到该操作报文后,需要进一步提取其中的SQL语句(SQL语句中存在变量标识符“”),从而实现相应的Pr印aredStatement模板处理流程。同样如图5所示,为使用Pr印aredStatement模板,第一次访问Oracle数据库的报文,特征字符串为SQL语句关键字“select”,对应的SQL语句为“select*fromtesttablelwhereid_number=:1”。其中,“1”为第一个变量的占位符。识别到这样的报文后,由于存在变量标识符“”,需要进行相应的Pr印aredStatement模板处理流程。步骤S205、记录该Pr印aredStatement模板编号以及具体的SQL语句模板信息,从当前报文中提取每个变量的具体赋值还原到SQL语句中。对应步骤S201中的驱动协议类型的记录结果,本步骤中记录的PreparedStatement模板编号产生方式也存在具体的区别当会话的驱动协议类型为JDBC驱动时,如果信令码为0x0347,则数据库操作指令所对应的客户端确定数据库操作指令所对应的操作模板编号,可以按照一定的规则在该数据库操作指令所在的报文中直接提取操作模板编号,如果信令码为0x035e,则数据库操作指令所对应的数据库服务器确定数据库操作指令所对应的操作模板编号,即在该数据库服务器所回应的报文中获取操作模板编号。当会话的驱动协议类型为ODBC驱动时,数据库操作指令所对应的数据库服务器确定数据库操作指令所对应的操作模板编号,即在该数据库服务器所回应的报文中获取操作模板编号。具体的处理方式在后续进行说明,在此不再重复叙述。本步骤执行完毕后,执行步骤S207。步骤S206、使用当前报文中携带的Pr印aredStatement模板编号查找对应的SQL语句模板信息,并从当前报文中提取每个变量的具体赋值还原到SQL语句中。这种情况表示该SQL语句执行报文是应用先前已经记录过的Pr印aredStatement模板,后续进行Oracle数据库访问的数据流,这是SQL语句执行报文所对应的处理过程的第三种情况,该情况的说明如下情况三、不存在SQL语句的关键字,但存在当前报文是SQL语句执行报文的指示信息这样的SQL语句执行报文没有将完整的操作内容携带在相应的语句中,而是携带了相应的操作模板编号,需要另行的处理才能确定相应的操作内容。在此种情况下,该操作对应的报文中不存在SQL语句关键字,只存在Oracle执行SQL语句的信令码(即前述的当前报文是SQL语句执行报文的指示信息,如0x0347和0x035e)和Pr印aredStatement模板编号,可以通过Oracle执行SQL语句的信令码进行识别。识别到该操作报文后实现相应的Pr印aredStatement模板处理流程。同样如图6所示,为使用同一Pr印aredStatement模板,后续访问Oracle数据库的报文,Oracle执行SQL语句的信令码为0x0347,表示该Oracle数据流是SQL语句执行报文,PreparedStatement模板编号为0x02(前面的0x01表示模板编号占用的字节数)。识别到该报文后,进行相应的Pr印aredStatement模板处理流程。步骤S207、对SQL语句进行审计处理。具体的,对于前述的情况一中的一般的SQL语句操作,可以在本步骤中进行直接的审计处理,在此不再具体说明。下面,以使用JDBC驱动的会话中,信令码为0347的报文为例,具体说明一下上述的情况二和情况三中的具体处理过程。如图5所示,为使用JDBC驱动,应用Pr印aredStatement模板,并第一次访问Oracle数据库对应的关键报文。当Oracle执行SQL语句的信令码为0x0347时,PreparedStatement模板编号由客户端指定,直接在该报文中获取,具体如图5所示,PreparedStatement模板编号位于0x0347向后偏移4个字节。图5中对应的Pr印aredStatement模板编号为0x02(前面的0x01表示模板编号占用的字节数)。SQL语句模板为“select*fromtesttablelwhereid_number=:1”。其中“”为变量标识符,“1”为该模板中的第一个变量占位符。在该报文的末尾存在变量赋值信息,固定以0x07开始。据此对该报文进行还原后,进行审计。如图6所示,为使用JDBC驱动,同一Pr印aredStatement模板后续访问Oracle数据库对应的关键报文。在该报文中不存在SQL语句,只存在Oracle执行SQL语句的信令码和Pr印aredStatement模板编号。Oracle执行SQL语句的信令码为0x0347,PreparedStatement模板编号为0x02(前面的0x01表示模板编号占用的字节数)。如图5所示,对应的SQL语句模板为“select*fromtesttablelwhereid_number=:1”。同样,在该报文的末尾存在变量赋值信息,固定以0x07开始。据此对该报文进行还原后,进行审计。对于使用Pr印aredStatement模板访问Oracle数据库的操作,经过本模块处理后精确还原出了具体执行的SQL语句,送到审计模块进行处理。经过上述的处理,最终得到了具体执行的SQL语句信息,并配合相关信息生成审计结果,记入相关数据库中,以便管理人员进行查询、分析等操作。与现有技术相比,本发明具有以下优点通过应用本发明的技术方案,能够精确识别数据库操作的内容,可以实现完整的数据库操作行为审计(包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。为了实现本发明的技术方案,本发明还提出了一种数据库审计设备。如图7所示,为本发明提出的一种数据库审计设备的结构示意图,具体包括识别模块71,用于识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,并在识别到对数据库的数据库操作会话时,进一步识别对数据库的数据库操作会话中的数据库操作指令;判断模块72,与识别模块71相连接,用于在识别模块识别到对数据库的数据库操作会话中的数据库操作指令时,判断数据库操作指令中是否存在SQL语句的关键字,并在存在SQL语句的关键字时,进一步判断数据库操作指令中是否包含变量标识;记录模块73,与判断模块72相连接,用于在判断模块72判断存在变量标识时,记录数据库操作指令所对应的操作模板编号和对应的操作模板信息;查询模块74,与判断模块72和记录模块73相连接,用于在判断模块72判断不存在SQL语句的关键字时,根据数据库操作指令中所携带的操作模板编号,向记录模块73查询对应的操作模板信息;审计模块75,与记录模块73和查询模块74相连接,用于在包含数据库操作指令的报文中提取变量值,通过变量值替换记录模块73记录的,或查询模块74查询的操作模板信息中的变量标识,还原数据库操作指令的内容,并对数据库操作指令进行审计。在具体的应用场景中,识别模块71,具体用于根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;记录模块73,进一步与识别模块71相连接,用于在识别模块71的识别结果为包含时,记录会话所对应的会话信息和会话的驱动协议类型;审计模块75,进一步与识别模块71相连接,用于在识别模块71的识别结果为不包含,放弃对报文进行审计处理。进一步的,记录模块73,还用于当记录的会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据该会话所对应的客户端的指令所确定的,或根据该会话所对应的数据库服务器的指令所确定的数据库操作指令所对应的操作模板编号;当记录的会话的驱动协议类型为ODBC驱动时,记录根据会话所对应的数据库服务器的指令所确定的数据库操作指令所对应的操作模板编号。另一方面,审计模块75,进一步与判断模块72相连接,用于在判断模块72判断数据库操作指令中没有包含变量标识时,根据SQL语句的关键字所对应的操作内容,对数据库操作指令进行审计。在具体的应用场景中,当判断模块72判断数据库操作指令中不包含SQL语句的关键字时,查询模块74,还用于在后续接收到的数据库操作指令所对应的报文中获取数据库操作指令中包含的操作模板编号,并根据操作模板编号,向记录模块73查询对应的操作模板信息;审计模块75,用于在后续接收到的数据库操作指令所对应的报文中提取变量值,替换操作模板信息中所包含的变量标识,还原数据库操作指令的内容,并对数据库操作指令进行审计。与现有技术相比,本发明具有以下优点通过应用本发明的技术方案,能够精确识别数据库操作的内容,可以实现完整的数据库操作行为审计(包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。权利要求一种数据库审计方法,其特征在于,具体包括以下步骤识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;如果包含,识别所述对数据库的数据库操作会话中的数据库操作指令;判断所述数据库操作指令中是否存在SQL语句的关键字;如果存在SQL语句的关键字,判断所述数据库操作指令中是否包含变量标识;如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息,并在所述包含数据库操作指令的报文中提取变量值替换所述变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计;当所述对数据库的数据库操作会话中后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。2.如权利要求1所述的方法,其特征在于,所述识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,具体为根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;如果包含,记录所述会话所对应的会话信息和所述会话的驱动协议类型,如果不包含,放弃对所述会话中的报文进行审计处理。3.如权利要求2所述的方法,其特征在于,所述如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号,具体为当所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据所述会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;当所述会话的驱动协议类型为ODBC驱动时,记录所述会话所对应的数据库服务器所确定的所述数据库操作指令所对应的操作模板编号。4.如权利要求1所述的方法,其特征在于,所述如果存在SQL语句的关键字,判断所述数据库操作指令中是否包含变量标识之后,还包括如果判断所述数据库操作指令中没有包含变量标识,则根据所述SQL语句的关键字所对应的操作内容对所述数据库操作指令进行审计。5.如权利要求1所述的方法,其特征在于,所述当后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计,具体包括当后续接收到的数据库操作指令中不包含SQL语句的关键字时,则在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号;查询所述操作模板编号所对应的操作模板信息;在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。6.一种数据库审计设备,其特征在于,具体包括识别模块,用于识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,并在识别到所述对数据库的数据库操作会话时,进一步识别所述对数据库的数据库操作会话中的数据库操作指令;判断模块,与所述识别模块相连接,用于在所述识别模块识别到所述对数据库的数据库操作会话中的数据库操作指令时,判断所述数据库操作指令中是否存在SQL语句的关键字,并在存在SQL语句的关键字时,进一步判断所述数据库操作指令中是否包含变量标识;记录模块,与所述判断模块相连接,用于在所述判断模块判断存在变量标识时,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息;查询模块,与所述判断模块和所述记录模块相连接,用于在所述判断模块判断不存在SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,向所述记录模块查询对应的操作模板信息;审计模块,与所述记录模块和所述查询模块相连接,用于在所述包含数据库操作指令的报文中提取变量值,通过所述变量值替换所述记录模块记录的,或所述查询模块查询的操作模板信息中的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。7.如权利要求6所述的设备,其特征在于,所述识别模块,具体用于根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;所述记录模块,进一步与所述识别模块相连接,用于在所述识别模块的识别结果为包含时,记录所述会话所对应的会话信息和所述会话的驱动协议类型;所述审计模块,进一步与所述识别模块相连接,用于在所述识别模块的识别结果为不包含,放弃对所述报文进行审计处理。8.如权利要求7所述的设备,其特征在于,所述记录模块,还用于当记录的所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据所述会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;当记录的所述会话的驱动协议类型为ODBC驱动时,记录根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号。9.如权利要求6所述的设备,其特征在于,所述审计模块,进一步与所述判断模块相连接,用于在所述判断模块判断所述数据库操作指令中没有包含变量标识时,根据所述SQL语句的关键字所对应的操作内容,对所述数据库操作指令进行审计。10.如权利要求6所述的设备,其特征在于,具体包括当所述判断模块判断数据库操作指令中不包含SQL语句的关键字时,所述查询模块,还用于在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号,并根据所述操作模板编号,向所述记录模块查询对应的操作模板信息;所述审计模块,用于在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。全文摘要本发明公开了一种数据库审计方法和设备,通过应用本发明的技术方案,能够精确识别数据库操作的内容,可以实现完整的数据库操作行为审计(包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。文档编号G06F17/30GK101853289SQ201010182159公开日2010年10月6日申请日期2010年5月26日优先权日2010年5月26日发明者吴淞,邹文宇申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1