CN101853289B - 一种Oracle数据库审计方法和设备 - Google Patents
一种Oracle数据库审计方法和设备 Download PDFInfo
- Publication number
- CN101853289B CN101853289B CN201010182159A CN201010182159A CN101853289B CN 101853289 B CN101853289 B CN 101853289B CN 201010182159 A CN201010182159 A CN 201010182159A CN 201010182159 A CN201010182159 A CN 201010182159A CN 101853289 B CN101853289 B CN 101853289B
- Authority
- CN
- China
- Prior art keywords
- database
- operating instruction
- session
- pairing
- database operating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库审计方法和设备,通过应用本发明的技术方案,能够精确识别数据库操作的内容,可以实现完整的数据库操作行为审计(包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种Oracle数据库审计方法和设备。
背景技术
数据库审计系统是目前数据库安全防护的重要手段,它实时地、智能地解析每一个用户对Oracle数据库的各种操作,并将审计结果记入相关数据库中,以便管理人员进行查询、分析等操作,从而加强数据库应用的行为监管,保障数据库系统的正常运营。由于在金融、电信等行业当中大量使用数据库系统,这种审计需求尤为突出。目前大部分行业内部的大型数据库都采用了Oracle公司研制开发的数据库,Oracle的关系数据库是世界第一个支持SQL语言的数据库,使用的TNS协议较为复杂,驱动协议类型以ODBC和JDBC为主。
对于Oracle数据库,常规的数据库操作都是以SQL语句的方式提交给Oracle数据库进行处理的(比如“select*from table1 where age=28”)。Oracle数据库收到每一条SQL语句后需要进行语法解析、编译、生成访问方案、数据库引擎执行具体操作等一系列步骤,占用较多的CPU资源。目前大部分数据库审计系统都可以实现这种SQL语句访问Oracle数据库的审计。
为了降低Oracle数据库的资源消耗,提高Oracle数据库的性能和吞吐量,Oracle数据库提供了一种使用PreparedStatement模板访问Oracle数据库的方法。使用该模板访问Oracle数据库时,用户首先定义一个PreparedStatement模板,每次访问数据库时只需要修改变量值即可。Oracle数据库在第一次处理PreparedStatement模板时需要进行语法解析、编译、生成访问方案、数据库引擎执行具体操作等一系列步骤,后续使用同一模板时直接进行数据库引擎执行具体操作,从而降低了Oracle数据库的资源消耗,提高了Oracle数据库的性能和吞吐量。但是对于这种使用PreparedStatement模板访问Oracle数据库的方法,由于在SQL语句中存在变量绑定,现有的数据库审计系统只能将包含变量名的SQL语句提取出来,而无法实现变量值的替换。当多个PreparedStatement模板交替执行时,对于非第一次的执行,由于网络报文中不存在SQL语句关键字,现有的数据库审计系统甚至无法审计出该SQL语句的执行。目前已公开的方案中还没有针对使用PreparedStatement模板访问Oracle数据库的审计方法。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
现有的数据库审计系统只能实现一般SQL语句的审计,不支持使用PreparedStatement模板访问Oracle数据库的审计方法。
发明内容
本发明提供一种数据库审计方法和设备,能够精确识别数据库操作的内容,尤其是通过操作模板访问数据库的操作的内容,并对相应的数据库操作内容进行审计。
为达到上述目的,本发明一方面提供了一种Oracle数据库审计方法,具体包括以下步骤:
识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;
如果包含,识别所述对数据库的数据库操作会话中的数据库操作指令;
判断所述数据库操作指令中是否存在SQL语句的关键字;
如果存在SQL语句的关键字,判断所述数据库操作指令中是否包含变量标识;
如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息,并在所述包含数据库操作指令的报文中提取变量值替换所述变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计;如果所述数据库操作指令中没有包含变量标识,则根据所述SQL语句的关键字所对应的操作内容对所述数据库操作指令进行审计;
当所述对数据库的数据库操作会话中后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。
优选的,
所述识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,具体为:
根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;
如果包含,记录所述会话所对应的会话信息和所述会话的驱动协议类型,如果不包含,放弃对所述会话中的报文进行审计处理。
优选的,
所述如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号,具体为:
当所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;
当所述会话的驱动协议类型为ODBC驱动时,记录所述会话所对应的数据库服务器所确定的所述数据库操作指令所对应的操作模板编号。
优选的,
所述当后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计,具体包括:
当后续接收到的数据库操作指令中不包含SQL语句的关键字时,则在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号;
查询所述操作模板编号所对应的操作模板信息;
在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。
另一方面,本发明还提供了一种Oracle数据库审计设备,具体包括:
识别模块,用于识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,并在识别到所述对数据库的数据库操作会话时,进一步识别所述对数据库的数据库操作会话中的数据库操作指令;
判断模块,用于在所述识别模块识别到所述对数据库的数据库操作会话中的数据库操作指令时,判断所述数据库操作指令中是否存在SQL语句的关键字,并在存在SQL语句的关键字时,进一步判断所述数据库操作指令中是否包含变量标识;
记录模块,用于在所述判断模块判断存在变量标识时,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息;
查询模块,用于在所述判断模块判断不存在SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,向所述记录模块查询对应的操作模板信息;
审计模块,用于在所述包含数据库操作指令的报文中提取变量值,通过所述变量值替换所述记录模块记录的,或所述查询模块查询的操作模板信息中的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计;
所述审计模块,进一步用于在所述判断模块判断所述数据库操作指令中没有包含变量标识时,根据所述SQL语句的关键字所对应的操作内容,对所述数据库操作指令进行审计。
优选的,
所述识别模块,具体用于根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;
所述记录模块,进一步用于在所述识别模块的识别结果为包含时,记录所述会话所对应的会话信息和所述会话的驱动协议类型;
所述审计模块,进一步用于在所述识别模块的识别结果为不包含,放弃对所述报文进行审计处理。
优选的,
所述记录模块,还用于:
当记录的所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;
当记录的所述会话的驱动协议类型为ODBC驱动时,记录根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号。
优选的,
当所述判断模块判断数据库操作指令中不包含SQL语句的关键字时,所述查询模块,还用于在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号,根据所述操作模板编号,向所述记录模块查询对应的操作模板信息;
所述审计模块,用于在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,能够精确识别数据库操作的内容,可以实现完整的数据库操作行为审计(包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。
附图说明
图1为本发明所提出的一种数据库审计方法的流程示意图;
图2A为本发明所提出的一种针对使用PreparedStatement模板访问Oracle数据库的审计方法的流程示意图;
图2B为本发明所提出的一种针对使用PreparedStatement模板访问Oracle数据库的审计方法的应用场景的示意图;
图3为本发明所提出的为本发明应用过程中的一种具有Oracle数据流特征的报文的示意图;
图4为本发明所提出的为使用一般SQL语句操作Oracle数据库的报文的示意图;
图5为本发明所提出的使用JDBC驱动,应用PreparedStatement模板,并第一次访问Oracle数据库对应的关键报文的示意图;
图6为本发明所提出的使用JDBC驱动,同一PreparedStatement模板后续访问Oracle数据库对应的关键报文的示意图;
图7为本发明提出的一种数据库审计设备的结构示意图。
具体实施方式
针对背景技术中所存在的问题,本发明提出了一种针对使用操作模板访问Oracle数据库的审计方法,可以实现完整的Oracle数据库行为审计,包括一般SQL语句的审计和使用操作模板访问Oracle数据库的审计,真实还原每一个用户对Oracle数据库的各种操作,并将审计结果记入相关数据库中,以便管理人员进行查询、分析等操作,从而加强数据库应用的行为监管,保障数据库系统的正常运营。
如图1所示,为本发明所提出的一种数据库审计方法的流程示意图,具体包括以下步骤:
步骤S101、识别当前系统所建立的会话中是否包含对数据库的数据库操作会话。
如果包含,执行步骤S102;
如果不包含,继续进行相应的识别。
在具体的应用场景中,本步骤具体为根据DPI(Deep Packet Inspection,深度包检测)识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,如果包含,记录该对数据库的数据库操作会话所对应的会话信息和会话的驱动协议类型。
从而保证该会话中的报文都可以进行是否审计处理的进一步判断,并且驱动协议类型的记录也为后续处理确定了相应的处理策略,具体说明见后,在此不再说明。
需要指出的是,上述根据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数据库在第一次处理PreparedStatement模板时需要进行语法解析、编译、生成访问方案、数据库引擎执行具体操作等一系列步骤,后续使用同一模板时直接进行数据库引擎执行具体操作,从而降低了Oracle数据库的资源消耗,提高了Oracle数据库的性能和吞吐量。但是对于这种使用PreparedStatement模板访问Oracle数据库的方法,由于在SQL语句中存在变量绑定,现有的数据库审计系统只能将包含变量名的SQL语句提取出来,而无法实现变量值的替换。当多个PreparedStatement模板交替执行时,对于非第一次的执行,由于网络报文中不存在SQL语句关键字,现有的数据库审计系统甚至无法审计出该SQL语句的执行。
针对上述问题,本发明提出了一种针对使用PreparedStatement模板访问Oracle数据库的审计方法,可以实现完整的Oracle数据库行为审计,包括一般SQL语句的审计和使用PreparedStatement模板访问Oracle数据库的审计,其流程示意图如图2A所示,应用场景的示意图如图2B所示,该审计方法具体包括以下步骤:
步骤S201、识别Oracle数据流。
在实际的组网环境中,流经数据库审计系统的流量是很大的,而其中只有很少一部分是需要处理的访问Oracle数据库的流量。Oracle数据库审计的前提就是要精确识别访问Oracle数据库的流量。
在具体应用场景中,如图2B所示,相应的数据库审计系统为了不影响网络系统中的正常通信,通常可以对交换机中的网络流量生成镜像流量,而只对镜像流量进行相应的操作处理,从而,在获取到准确的审计结果的前提下,保证网络中正常的网络流量不受影响。
在具体的应用场景中,通常使用DPI识别法识别Oracle数据流,在确定了一个会话的Oracle数据流后,对应该会话的用户在后续处理过程中对Oracle数据库的所有操作都可以在该会话上找到。
为了达到这样效果,在识别到一个会话为Oracle数据流后,需要记录该识别到Oracle数据流的会话为Oracle数据流,保证该会话的后续流量经过数据库审计系统时都能够得到处理,这样的记录可以是记录下该会话的标识信息,也可以是为该会话的后续流量统一添加识别标识,具体的记录方法的变化并不会影响本发明的保护范围。
进一步的,在识别到一个会话为Oracle数据流后,还需要记录该会话使用的驱动协议类型,在具体的应用场景中,一般默认使用ODBC(OpenDatabase Connectivity,开放数据库连接)驱动,但也可能使用JDBC(Java DataBase Connectivity,Java数据库连接)驱动。
使用的驱动协议类型不同,后续处理中提取PreparedStatement模板编号的方法不同,在后续说明中会具体叙述。
如图3所示,为本发明应用过程中的一种具有Oracle数据流特征的报文,该报文的特征字符串为“(DESCRIPTION=(CONNECT_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”,对应的SQL语句为“select*from testtable1where age=23;”。
另一方面,如果包含变量标识,则表示该SQL语句执行报文使用了PreparedStatement模板,并且是使用该模板第一次访问Oracle数据库,这是SQL语句执行报文所对应的处理过程的第二种情况,该情况的说明如下:
情况二、存在SQL语句的关键字,且该SQL语句包含变量标识,没有包含完整的操作内容
这样的SQL语句执行报文没有将完整的操作内容携带在相应的语句中,而是携带了相应的变量标识,需要另行的处理才能确定相应的操作内容。
在此种情况下,该操作对应的报文中存在SQL语句关键字,可以将SQL语句关键字定义为特征字符串进行识别。而在识别到该操作报文后,需要进一步提取其中的SQL语句(SQL语句中存在变量标识符“:”),从而实现相应的PreparedStatement模板处理流程。
同样如图5所示,为使用PreparedStatement模板,第一次访问Oracle数据库的报文,特征字符串为SQL语句关键字“select”,对应的SQL语句为“select*from testtable1 where id_number=:1”。其中,“:1”为第一个变量的占位符。识别到这样的报文后,由于存在变量标识符“:”,需要进行相应的PreparedStatement模板处理流程。
步骤S205、记录该PreparedStatement模板编号以及具体的SQL语句模板信息,从当前报文中提取每个变量的具体赋值还原到SQL语句中。
对应步骤S201中的驱动协议类型的记录结果,本步骤中记录的PreparedStatement模板编号产生方式也存在具体的区别:
当会话的驱动协议类型为JDBC驱动时,如果信令码为0x0347,则数据库操作指令所对应的客户端确定数据库操作指令所对应的操作模板编号,可以按照一定的规则在该数据库操作指令所在的报文中直接提取操作模板编号,如果信令码为0x035e,则数据库操作指令所对应的数据库服务器确定数据库操作指令所对应的操作模板编号,即在该数据库服务器所回应的报文中获取操作模板编号。
当会话的驱动协议类型为ODBC驱动时,数据库操作指令所对应的数据库服务器确定数据库操作指令所对应的操作模板编号,即在该数据库服务器所回应的报文中获取操作模板编号。
具体的处理方式在后续进行说明,在此不再重复叙述。
本步骤执行完毕后,执行步骤S207。
步骤S206、使用当前报文中携带的PreparedStatement模板编号查找对应的SQL语句模板信息,并从当前报文中提取每个变量的具体赋值还原到SQL语句中。
这种情况表示该SQL语句执行报文是应用先前已经记录过的PreparedStatement模板,后续进行Oracle数据库访问的数据流,这是SQL语句执行报文所对应的处理过程的第三种情况,该情况的说明如下:
情况三、不存在SQL语句的关键字,但存在当前报文是SQL语句执行报文的指示信息
这样的SQL语句执行报文没有将完整的操作内容携带在相应的语句中,而是携带了相应的操作模板编号,需要另行的处理才能确定相应的操作内容。
在此种情况下,该操作对应的报文中不存在SQL语句关键字,只存在Oracle执行SQL语句的信令码(即前述的当前报文是SQL语句执行报文的指示信息,如:0x0347和0x035e)和PreparedStatement模板编号,可以通过Oracle执行SQL语句的信令码进行识别。识别到该操作报文后实现相应的PreparedStatement模板处理流程。
同样如图6所示,为使用同一PreparedStatement模板,后续访问Oracle数据库的报文,Oracle执行SQL语句的信令码为0x0347,表示该Oracle数据流是SQL语句执行报文,PreparedStatement模板编号为0x02(前面的0x01表示模板编号占用的字节数)。识别到该报文后,进行相应的PreparedStatement模板处理流程。
步骤S207、对SQL语句进行审计处理。
具体的,对于前述的情况一中的一般的SQL语句操作,可以在本步骤中进行直接的审计处理,在此不再具体说明。
下面,以使用JDBC驱动的会话中,信令码为0347的报文为例,具体说明一下上述的情况二和情况三中的具体处理过程。
如图5所示,为使用JDBC驱动,应用PreparedStatement模板,并第一次访问Oracle数据库对应的关键报文。
当Oracle执行SQL语句的信令码为0x0347时,PreparedStatement模板编号由客户端指定,直接在该报文中获取,具体如图5所示,PreparedStatement模板编号位于0x0347向后偏移4个字节。图5中对应的PreparedStatement模板编号为0x02(前面的0x01表示模板编号占用的字节数)。SQL语句模板为“select*from testtable1 where id_number=:1”。其中“:”为变量标识符,“:1”为该模板中的第一个变量占位符。在该报文的末尾存在变量赋值信息,固定以0x07开始。据此对该报文进行还原后,进行审计。
如图6所示,为使用JDBC驱动,同一PreparedStatement模板后续访问Oracle数据库对应的关键报文。
在该报文中不存在SQL语句,只存在Oracle执行SQL语句的信令码和PreparedStatement模板编号。Oracle执行SQL语句的信令码为0x0347,PreparedStatement模板编号为0x02(前面的0x01表示模板编号占用的字节数)。如图5所示,对应的SQL语句模板为“select*from testtable1 whereid_number=:1”。同样,在该报文的末尾存在变量赋值信息,固定以0x07开始。据此对该报文进行还原后,进行审计。
对于使用PreparedStatement模板访问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数据库的审计),尤其是可以识别通过操作模板访问数据库的操作的内容,可以根据相应的操作模板还原相应的数据库操作内容,并对相应的数据库操作内容进行审计,真实还原每一个用户对数据库的各种操作。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (8)
1.一种Oracle数据库审计方法,其特征在于,具体包括以下步骤:
识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;
如果包含,识别所述对数据库的数据库操作会话中的数据库操作指令;
判断所述数据库操作指令中是否存在SQL语句的关键字;
如果存在SQL语句的关键字,判断所述数据库操作指令中是否包含变量标识;
如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息,并在所述包含数据库操作指令的报文中提取变量值替换所述变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计;如果所述数据库操作指令中没有包含变量标识,则根据所述SQL语句的关键字所对应的操作内容对所述数据库操作指令进行审计;
当所述对数据库的数据库操作会话中后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。
2.如权利要求1所述的方法,其特征在于,所述识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,具体为:
根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;
如果包含,记录所述会话所对应的会话信息和所述会话的驱动协议类型,如果不包含,放弃对所述会话中的报文进行审计处理。
3.如权利要求2所述的方法,其特征在于,所述如果存在变量标识,记录所述数据库操作指令所对应的操作模板编号,具体为:
当所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据所述会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;
当所述会话的驱动协议类型为ODBC驱动时,记录所述会话所对应的数据库服务器所确定的所述数据库操作指令所对应的操作模板编号。
4.如权利要求1所述的方法,其特征在于,所述当后续接收到的数据库操作指令中不包含SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,查询对应的操作模板信息,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计,具体包括:
当后续接收到的数据库操作指令中不包含SQL语句的关键字时,则在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号;
查询所述操作模板编号所对应的操作模板信息;
在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。
5.一种Oracle数据库审计设备,其特征在于,具体包括:
识别模块,用于识别当前系统所建立的会话中是否包含对数据库的数据库操作会话,并在识别到所述对数据库的数据库操作会话时,进一步识别所述对数据库的数据库操作会话中的数据库操作指令;
判断模块,用于在所述识别模块识别到所述对数据库的数据库操作会话中的数据库操作指令时,判断所述数据库操作指令中是否存在SQL语句的关键字,并在存在SQL语句的关键字时,进一步判断所述数据库操作指令中是否包含变量标识;
记录模块,用于在所述判断模块判断存在变量标识时,记录所述数据库操作指令所对应的操作模板编号和对应的操作模板信息;
查询模块,用于在所述判断模块判断不存在SQL语句的关键字时,根据所述数据库操作指令中所携带的操作模板编号,向所述记录模块查询对应的操作模板信息;
审计模块,用于在所述包含数据库操作指令的报文中提取变量值,通过所述变量值替换所述记录模块记录的,或所述查询模块查询的操作模板信息中的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计;
所述审计模块,进一步用于在所述判断模块判断所述数据库操作指令中没有包含变量标识时,根据所述SQL语句的关键字所对应的操作内容,对所述数据库操作指令进行审计。
6.如权利要求5所述的设备,其特征在于,所述识别模块,具体用于根据DPI识别技术识别当前系统所建立的会话中是否包含对数据库的数据库操作会话;
所述记录模块,进一步用于在所述识别模块的识别结果为包含时,记录所述会话所对应的会话信息和所述会话的驱动协议类型;
所述审计模块,进一步用于在所述识别模块的识别结果为不包含,放弃对所述报文进行审计处理。
7.如权利要求6所述的设备,其特征在于,所述记录模块,还用于:
当记录的所述会话的驱动协议类型为JDBC驱动时,根据信令码的类型,记录根据所述会话所对应的客户端的指令所确定的,或根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号;
当记录的所述会话的驱动协议类型为ODBC驱动时,记录根据所述会话所对应的数据库服务器的指令所确定的所述数据库操作指令所对应的操作模板编号。
8.如权利要求5所述的设备,其特征在于,具体包括:
当所述判断模块判断数据库操作指令中不包含SQL语句的关键字时,所述查询模块,还用于在所述后续接收到的数据库操作指令所对应的报文中获取所述数据库操作指令中包含的操作模板编号,并根据所述操作模板编号,向所述记录模块查询对应的操作模板信息;
所述审计模块,用于在所述后续接收到的数据库操作指令所对应的报文中提取变量值,替换所述操作模板信息中所包含的变量标识,还原所述数据库操作指令的内容,并对所述数据库操作指令进行审计。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010182159A CN101853289B (zh) | 2010-05-26 | 2010-05-26 | 一种Oracle数据库审计方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010182159A CN101853289B (zh) | 2010-05-26 | 2010-05-26 | 一种Oracle数据库审计方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101853289A CN101853289A (zh) | 2010-10-06 |
CN101853289B true CN101853289B (zh) | 2012-10-17 |
Family
ID=42804781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010182159A Expired - Fee Related CN101853289B (zh) | 2010-05-26 | 2010-05-26 | 一种Oracle数据库审计方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101853289B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411633A (zh) * | 2011-12-27 | 2012-04-11 | 北京人大金仓信息技术股份有限公司 | 基于模板的数据库审计设置方法 |
CN102609462A (zh) * | 2012-01-14 | 2012-07-25 | 杭州安恒信息技术有限公司 | 一种通过提取sql模板对海量sql压缩存储的方法 |
CN104618192B (zh) * | 2015-02-12 | 2020-08-21 | 网神信息技术(北京)股份有限公司 | 数据库审计设备的测试方法和装置 |
CN105930427B (zh) * | 2016-04-19 | 2019-07-26 | 深信服科技股份有限公司 | 数据库审计方法及装置 |
CN106339305A (zh) * | 2016-08-30 | 2017-01-18 | 孙鸿鹏 | 一种数据库安全监审方法 |
CN106970939B (zh) * | 2017-02-14 | 2019-09-03 | 深圳昂楷科技有限公司 | 一种数据库审计方法及其系统 |
CN107122408A (zh) * | 2017-03-24 | 2017-09-01 | 深圳昂楷科技有限公司 | 信息关联及其数据库审计方法、审计系统 |
CN107463842B (zh) * | 2017-08-23 | 2020-04-07 | 杭州安恒信息技术股份有限公司 | 基于数据库协议的sql注入审计或防护方法及装置 |
CN109409849A (zh) * | 2018-12-05 | 2019-03-01 | 广州中浩控制技术有限公司 | 一种mes系统的审计追踪方法及系统 |
CN110222525B (zh) * | 2019-05-14 | 2021-08-06 | 新华三大数据技术有限公司 | 数据库操作审计方法、装置、电子设备及存储介质 |
CN110517010B (zh) * | 2019-07-31 | 2023-07-11 | 平安科技(深圳)有限公司 | 一种数据处理方法、系统及存储介质 |
CN110941632A (zh) * | 2019-11-19 | 2020-03-31 | 杭州迪普科技股份有限公司 | 一种数据库审计方法、装置及设备 |
CN113420007B (zh) * | 2021-03-31 | 2023-09-26 | 阿里巴巴新加坡控股有限公司 | 数据库访问的审计处理方法、装置及电子设备 |
CN113505367B (zh) * | 2021-06-29 | 2024-05-28 | 杭州华橙软件技术有限公司 | 安全审计方法、装置、系统、电子装置和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388010A (zh) * | 2007-09-12 | 2009-03-18 | 北京启明星辰信息技术有限公司 | 一种Oracle数据库审计方法及系统 |
CN101388899A (zh) * | 2007-09-12 | 2009-03-18 | 北京启明星辰信息技术有限公司 | 一种Web服务器前后台关联审计方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289187A1 (en) * | 2004-06-29 | 2005-12-29 | Oracle International Corporation | System and method for investigating a data operation performed on a database |
US8122066B2 (en) * | 2008-10-14 | 2012-02-21 | Hewlett-Packard Development Company, L.P. | Database query profiler |
-
2010
- 2010-05-26 CN CN201010182159A patent/CN101853289B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388010A (zh) * | 2007-09-12 | 2009-03-18 | 北京启明星辰信息技术有限公司 | 一种Oracle数据库审计方法及系统 |
CN101388899A (zh) * | 2007-09-12 | 2009-03-18 | 北京启明星辰信息技术有限公司 | 一种Web服务器前后台关联审计方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101853289A (zh) | 2010-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101853289B (zh) | 一种Oracle数据库审计方法和设备 | |
CN109445834B (zh) | 基于抽象语法树的程序代码相似性快速比较方法 | |
CN109510737B (zh) | 协议接口测试方法、装置、计算机设备和存储介质 | |
CN107657174B (zh) | 一种基于协议指纹的数据库入侵检测方法 | |
CN102647414B (zh) | 协议解析方法、设备及系统 | |
CN106599322A (zh) | 数据脱敏的方法及设备 | |
US20120179658A1 (en) | Cleansing a Database System to Improve Data Quality | |
WO2019179408A1 (zh) | 机器学习模型的构建 | |
CN112667750A (zh) | 一种报文类别的确定、识别方法及装置 | |
CN101561806B (zh) | Db2数据库操作的信息提取和审计方法及其装置、系统 | |
CN116186759A (zh) | 一种面向隐私计算的敏感数据识别与脱敏方法 | |
CN112580354A (zh) | 一种基于语义物联网中间件的物联网设备智能注册方法及系统 | |
CN101470752A (zh) | 基于关键词解析调度的搜索引擎方法 | |
CN111552792A (zh) | 一种信息查询方法、装置、电子设备及存储介质 | |
US11625630B2 (en) | Identifying intent in dialog data through variant assessment | |
Jain et al. | Database-agnostic workload management | |
CN102364475A (zh) | 基于身份识别对检索结果排序的系统及方法 | |
CN112650716B (zh) | 适用于JavaEE应用服务器的日志系统的设计方法 | |
US20070156712A1 (en) | Semantic grammar and engine framework | |
KR102153127B1 (ko) | 개체명 인식(Named-Entity Recognition)의 정확성 제고를 위한 후처리 과정을 제공하기 위한 방법 및 이를 사용한 서버 | |
CN116340989A (zh) | 一种数据脱敏方法、装置、电子设备及存储介质 | |
CN106020923A (zh) | SELinux策略的编译方法及系统 | |
CN116821903A (zh) | 检测规则确定及恶意二进制文件检测方法、设备及介质 | |
CN110674383A (zh) | 舆情查询方法、装置及设备 | |
CN110597765A (zh) | 一种大零售呼叫中心异构数据源数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121017 Termination date: 20200526 |