一种获取数据库访问过程的方法、装置及系统的制作方法

文档序号:6580879阅读:181来源:国知局
专利名称:一种获取数据库访问过程的方法、装置及系统的制作方法
技术领域
本发明涉及数据库技术领域,尤其涉及一种获取数据库访问过程的方法、装置及
系统。
背景技术
数据库技术是当今信息技术的一个重要组成部分,对核心数据库的安全保护也是 一个重要的课题。获取各种客户端对数据库的访问过程是数据库操作审计的基础技术。
如图l所示,为现有数据库应用系统的部署结构示意图,图1中的客户端应用程 序、客户端库、及数据库服务器是实体,程序调用和网络通讯是过程。其中,应用程序是使用 数据库服务的程序,例如ERP、 MIS等系统。客户端库是应用程序与数据库服务器之间的通 讯桥梁,其提供一些诸如连接数据库、准备语句、执行语句、获取数据等调用,应用程序调用 这些库函数来实现对数据库的访问。程序调用是应用程序和客户端库之间的交互过程,具 体包括调用、回调、参数和结果传递、共享内存结构等方式。网络通讯是客户端库和数据库 服务器之间的通讯过程。数据库服务器提供应用程序要访问的数据库。其中,应用程序、程 序调用、客户端库是在同一台计算机上的,统称为客户端,数据库服务器一般在独立的计算 机上,之间通过网络连接。当然服务器也可以和客户端在同一台计算机上,之间通过虚拟网 络连接。 数据库访问过程就是指应用程序访问数据库的过程。现有技术对于数据库访问过 程的获取通常有如下几种方式 现有技术之一是使用数据库自带的功能,如Oracle的AUDIT命令,在图1中的数 据库服务器上实现数据库访问过程的获取。该方式需要数据库服务器支持,并且占用数据 库服务器的计算资源。此外,审计记录一般也记录在数据库内,需要进一步的导出和管理。 因此,该方式性能开销大,增加数据库服务器的压力。 现有技术之二是以旁路或代理转发机制获取协议数据包,从中解析访问内容。即 在图1中的网络通讯过程中,加入抓包设备来捕获网络通讯内容,然后解析协议还原客户 端访问过程。该方式涉及厂商的知识产权,不容易获取,即使能取得,授权费用也比较高。另 外,数据库通讯协议非常复杂,即使拿到了协议文本和授权,高效的完整实现也非常困难。 随着版本的升级,协议也在不断变化,需要投入很大的力量持续分析和实现。此外,该方式 属于事后机制,无法对危险操作进行拦截。 现有技术之三是分析数据库的事务日志,获取访问信息。其也是一种基于数据库 服务器的机制。现代数据库系统需要提供事务一致性,通常都会对所有的修改操作做日志 和回滚文件。该方式就是利用这些文件的信息来获取数据库的访问过程。然而,该方式同 样会涉及厂商的知识产权,不容易获取,即使能取得,授权费用也比较高。另外,该方式中由 于在事务日志中通常不包含只读查询和结果数据集,因此不能对敏感数据查询做审计。此 外,该方式同样属于事后机制,无法对危险操作进行拦截。
在实现本发明的过程中,发明人经过研究发现如图1所示的部署结构,应用程序要对数据库进行访问一定会经过这些实体和过程,也就可以在这些位置来做捕获。然而,上 述现有技术都是在网络通讯或数据库服务器这两个位置进行数据库访问过程的获取的,并 且都存在各自的优缺点。

发明内容
本发明实施例提供一种获取数据库访问过程的方法、装置及系统,在程序调用过
程实现数据库访问过程的获取,从而实现数据库审计和权限的控制。 本发明实施例提供以下技术方案 —种获取数据库访问过程的方法,包括 截获应用程序APP对数据库客户端库DCL的调用信息; 对所述截获到的调用信息进行处理; 将与所述调用信息对应的结果返回给应用程序。 优选的,所述截获应用程序APP对数据库客户端库DCL的调用信息的方式包括下 述方式中的任意一种 修改数据库客户端库DCL的名字和/或位置,将审计代理库APL替换为数据库客 户端库DCL,使应用程序APP主动加载审计代理库APL,审计代理库APL再加载数据库客户 端库DCL;或者 修改数据库客户端库DCL以及相关函数的入口 ,使应用程序APP指向审计代理库 APL ;或者 修改应用程序APP,将对数据库客户端库DCL函数的调用重定向到审计代理库 APL ;或者 在应用程序APP运行时,动态注入审计代理库APL。
优选的,所述对所述截获到的调用信息进行处理包括 对所述截获到的调用信息进行分析、和/或记录、和/或修改、和/或阻断。
进一步的,若所述调用信息属于数据库连接调用,则所述对所述截获到的调用信 息进行处理包括 记录数据库连接参数,所述连接参数包括对应的主机、用户名、数据库名;和/或
所述数据库连接包括建立连接和关闭连接,建立连接时创建相关描述对象,关闭 连接时释放相关描述对象;和/或 记录当前客户端的名称、命令行、可执行文件位置信息。 进一步的,若所述调用信息属于数据库环境设置调用,则所述对所述截获到的调 用信息进行处理包括 如果环境设置、命令的执行和表示方式有关,则在设置的时候进行分析和记录,以 供记录或展现具体操作时参考; 如果在数据库连接描述对象中有相应的属性,则在修改时同步改变所述属性;
其中,所述数据库环境设置项包括字符集、字符编码、事务提交方式。
进一步的,若所述调用信息属于准备数据库操作指令和参数的调用,则所述对所 述截获到的调用信息进行处理包括 创建语句对象时建立语句描述,释放语句对象时销毁语句描述;
5
其中,所述准备数据库操作指令和参数包括准备语句、设置选项、绑定参数。
进一步的,若所述调用信息属于执行数据库操作指令的调用,则所述调用信息包 括语句的引用;所述对所述截获到的调用信息进行处理包括调用前处理、调用时处理、及 调用后处理;其中 所述调用前处理包括检查所述语句是否符合权限审计要求,对于不符合要求的 拒绝执行;和/或,将执行语句的内容、选项和参数发送到审计服务器进行记录,记录执行 状态为"未执行"; 所述调用后处理包括记录语句的执行结果,数据修改的程度;如果语句执行失 败,更新事务状态为"执行失败";否则如果语句的类型是miL,则更新事务状态为"已执行" 或"已提交";如果语句的类型是DDL或DCL,则更新事务状态为"已提交",并把该次会话内 事务状态为"已执行"的语句全部修改为"已提交"。 进一步的,若所述调用信息属于查询结果数据的调用,则所述对所述截获到的调 用信息进行处理包括 有选择的记录查询的结果数据,所述结果数据包括转换后的结果数据。 进一步的,若所述调用信息属于事务控制的调用,则所述对所述截获到的调用信
息进行处理包括 记录各种语句的事务状态,执行时按照连接当时的事务设定发送,如果不是自动 提交的,则设置为"已执行"; 如果执行ROLLBACK语句,则将审计服务器的记录中连接"已执行"状态的语句执 行全部修改为"已回滚"事务状态; 如果执行COMMIT语句,则将审计服务器的记录中连接"已执行"状态的语句执行 全部修改为"已提交"事务状态。 进一步的,所述将与所述调用信息对应的结果返回给应用程序包括
对所述与所述调用信息对应的结果进行分析、和/或记录、和/或修改。
—种获取数据库访问过程的装置,包括 截获单元,用于截获应用程序对数据库客户端库的调用信息; 处理单元,用于对所述截获单元截获到的调用信息进行处理; 反馈单元,用于将与所述调用信息对应的结果返回给应用程序。 其中,所述截获单元具体用于修改数据库客户端库DCL的名字和/或位置,将审计
代理库APL替换为数据库客户端库DCL,使应用程序APP主动加载审计代理库APL,审计代
理库APL再加载数据库客户端库DCL ;或者 用于修改数据库客户端库DCL以及相关函数的入口,使应用程序APP指向审计代 理库APL;或者 用于修改应用程序APP,将对数据库客户端库DCL函数的调用重定向到审计代理 库APL;或者 用于在应用程序APP运行时,动态注入审计代理库APL。 优选的,所述处理单元具体用于对所述截获到的调用信息进行分析、和/或记录、 和/或修改、和/或阻断。 优选的,所述反馈单元具体用于对所述与所述调用信息对应的结果进行分析、和/
6或记录、和/或修改。 优选的,所述装置设置在客户端内,介于应用程序与数据库客户端库之间。
—种获取数据库访问过程的系统,包括所述的获取数据库访问过程的装置。
本发明实施例提供一种获取数据库访问过程的方法、装置及系统,在程序调用过 程实现数据库访问过程的获取,从而实现数据库审计和权限的控制。本发明可以支持所有 客户端,在客户端和第三方审计平台上执行,无需增加数据库服务器的负担。另外,本发明 不仅可以获取访问过程并且记录完整准确的信息,还可以对访问和返回的数据进行修改, 以及对危险操作进行拦截。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。
图1是现有数据库应用系统的部署结构示意图; 图2是本发明实施例提供的获取数据库访问过程的方法概括流程图; 图3是本发明实施例提供的获取数据库访问过程的方法中各种调用方式的截取
过程示意图; 图4是本发明实施例提供的获取数据库访问过程的方法中操作结果记录结构示 意图; 图5是本发明实施例提供的获取数据库访问过程的装置结构示意图;
图6是本发明实施例提供的获取数据库访问过程的装置应用示意图。
具体实施例方式
本发明实施例提供一种获取数据库访问过程的方法、装置及系统,在程序调用过 程实现数据库访问过程的获取,从而实现数据库审计和权限的控制。为使本发明的目的、技 术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明进一步详细说明。
如图2所示,为本发明实施例提供的获取数据库访问过程的方法概括流程图。所 述方法包括 步骤201、截获应用程序(APP)对数据库客户端库(DCL,简称客户端库)的调用信 息; 步骤202、对所述截获到的调用信息进行处理; 步骤203、将与所述调用信息对应的结果返回给应用程序。 由于如背景技术介绍的,应用程序是调用数据库厂商提供的客户端库的,而不是 调用本发明所述的审计代理库,因此需要本发明实施例提供的方法来让应用程序以为是调 用客户端库而实则调用审计代理库。 具体而言,所述步骤201中,截获应用程序(APP)对客户端库(DCL)的调用信息的 方式包括下述方式中的任意一种 修改客户端库(DCL)的名字和/或位置,将审计代理库(APL)替换为客户端库(DCL),使应用程序(APP)主动加载审计代理库(APL),审计代理库(APL)再加载客户端库 (DCL);或者 修改客户端库(DCL)以及相关函数的入口,使应用程序(APP)指向审计代理库 (APL);或者 修改应用程序(APP),将对客户端库(DCL)函数的调用重定向到审计代理库 (APL);或者 在应用程序(APP)运行时,动态注入审计代理库(APL),也就是说,在运行时注入 客户端进程,动态修改客户端的数据库调用代码。 所述步骤202中,对所述截获到的调用信息进行处理包括对所述截获到的调用 信息进行分析、和/或记录、和/或修改、和/或阻断。具体而言,按照所述调用信息所述的 类型采取不同的处理方式。而所述截获到的调用信息,其与客户端库中各种数据库的访问 接口相对应,通常包括连接到数据库、数据库环境参数设置、准备数据库操作指令和参数、 执行数据块操作指令、获取指令的执行结果以及查询数据、事务控制等。需要说明的是,这 些调用一般都使用内存中的结构来保存信息,以指针作为参数。客户端库会提供内存结构 的说明,或是访问和修改内存对象的调用。以句柄或内存指针的形式实现各种对象相互之 间的引用。 另外,需要说明的是,应用程序和客户端库之间操作各种对象,其通常包括以下类 型数据库连接,如描述客户端到数据库服务器的一个连接;语句;语句参数;结果查询,如 游标。审计代理库建立对象池来识别和跟踪这些对象,在函数被调用的时候解析其实际对 应。这些对象可以以指针或引用来标识。可用不同的对象池来跟踪这些对象,由于单元进 程中内存地址的唯一性和确定性,也可用一个单独的以内存地址(如指针)为索引的对象 池来跟踪。 下面,针对上述已经列举的调用信息的各种类型,具体说明对所述截获到的调用 信息进行处理的内容。 若所述调用信息属于数据库连接调用,则所述对所述截获到的调用信息进行处理 包括记录数据库连接参数,所述连接参数包括对应的主机、用户名、数据库名;和/或所述 数据库连接包括建立连接和关闭连接,建立连接时创建相关描述对象,关闭连接时释放相 关描述对象;和/或记录当前客户端的名称、命令行、可执行文件位置信息。
若所述调用信息属于数据库环境设置调用,则所述对所述截获到的调用信息进行 处理包括如果环境设置、命令的执行和表示方式有关,则在设置的时候进行分析和记录, 以供记录或展现具体操作时参考;如果在数据库连接描述对象中有相应的属性,则在修改 时同步改变所述属性;其中,所述数据库环境设置项包括字符集、字符编码、事务提交方 式。 若所述调用信息属于准备数据库操作指令和参数的调用,则所述对所述截获到的 调用信息进行处理包括创建语句对象时建立语句描述,释放语句对象时销毁语句描述; 其中,所述准备数据库操作指令和参数包括准备语句、设置选项、绑定参数。
若所述调用信息属于执行数据库操作指令的调用,则所述调用信息包括语句的引 用,所述对所述截获到的调用信息进行处理包括调用前处理、调用时处理、及调用后处理; 其中所述调用前处理包括检查所述语句是否符合权限审计要求,对于不符合要求的拒
8CN 101727475 A
说明书
6/8页 绝执行;和/或,将执行语句的内容、选项和参数发送到审计服务器进行记录,记录执行状 态为"未执行";所述调用时处理包括如果语句的类型是DDL,则将该次会话内事务状态为 "已执行"的语句全部修改为"已提交";所述调用后处理包括记录语句的执行结果,数据修 改的程度;如果语句执行失败,更新事务状态为"执行失败";否则如果语句的类型是匿L,则 更新事务状态为"已执行"或"已提交";如果语句的类型是DDL或DCL,则更新事务状态为 "已提交",并把该次会话内事务状态为"已执行"的语句全部修改为"已提交"。
若所述调用信息属于查询结果数据的调用,则所述对所述截获到的调用信息进行 处理包括有选择的记录查询的结果数据,所述结果数据包括转换后的结果数据。
若所述调用信息属于事务控制的调用,则所述对所述截获到的调用信息进行处理 包括记录各种语句的事务状态,执行时按照连接当时的事务设定发送,如果不是自动提交 的,则设置为"已执行";如果执行ROLLBACK语句,则将审计服务器的记录中连接"已执行" 状态的语句执行全部修改为"已回滚"事务状态;如果执行COMMIT语句,则将审计服务器的 记录中连接"已执行"状态的语句执行全部修改为"已提交"事务状态。 需要说明的是,上述所述的记录中,有些内容是可以不记录的,其中应用进程和数 据库连接是必须要记录的,而命令执行、命令参数、数据列定义、以及数据行内容等是可以 不记录的。 另外,对于语句的权限控制可以有很多方法,例如截获语句执行调用;或对语句内 容及其选项和参数进行语法分析,得到涉及的数据库对象,如表、视图等,或得到对数据库 对象执行的操作,如增、删、改、查等,或得到访问数据库对象的哪些具体属性,如表和视图 的哪些列等;或比对权限控制规则,看是否允许当前用户访问这些数据对象,如果不允许, 就不用调用客户端库执行函数,而直接返回相应的错误代码。如果没有合适的错误代码,或 无法所实现错误报告的修改,也可以返回正确执行,但实际不做任何工作,或查不到相关记 录等。 通常,应用程序调用客户端库的方式可以分为三种,即同步调用、异步调用、及回 调。其中,同步调用是客户端库函数等数据库完成处理后再返回,处理结果一般已经知道, 此类调用的截获是最简单的,完成处理后再返回即可。异步调用是客户端库接收请求后即 返回,应用程序可继续执行,等数据库处理完成后,应用程序调用查询函数获取执行结果。 回调是应用程序调用客户端库时提供一个回调函数,客户端库接收请求;等数据库处理完 成后,客户端库调用应用程序提供的回调函数把结果或数据传递给应用程序。具体的,回调 分为同步回调和异步回调两种,同步回调的客户端库函数等应用程序回调函数结束运行返 回后一次返回;异步回调在接收完调用请求后即返回,客户端库在完成数据库处理后,在之 后的查询调用或事件处理线程上调用应用程序回调函数。 下面结合上述调用模式的执行过程,重点说明审计代理库中执行的工作调用前 处理,即发送客户端请求给客户端库函数前的处理工作,包括合规性检查、调用记录等。调 用后处理,即客户端库返回结果给应用程序前的处理工作,包括记录本次调用的结果等。异 步调用注册,异步调用一般回返回一个引用,供结果查询调用使用。这里要记录所述引用, 并和相关的调用对象,如数据库连接、语句等关联。异步调用还原,即通过异步调用引用还 原出关联的对象等,使调用后处理能知道相关调用的上下文。替换回调函数,即把应用程序 传递给客户端库的回调函数替换为审计代理库的回调函数,然后再调用客户端库。调用原
9回调函数,即客户端库会调用注册的回调函数,也就是审计代理库的回调函数,该函数完成
处理后,再调用应用程序的回调函数完成数据库调用返回。需要说明的是,关于调用前处理
和调用后处理,很多处理工作既可以在调用前执行,也可以在调用后执行,对于这样的也可
以统称为调用时处理。如图3所示,为上述各种调用方式的截取过程示意图。 所述步骤203中,将与所述调用信息对应的结果返回给应用程序包括对所述与
所述调用信息对应的结果进行分析、和/或记录、和/或修改。具体的,可以按照如图4所
示的结构图记录操作结果,包括应用程序、数据库连接、命令执行、命令参数、及查询结果数
据。其中,命令执行含有以下属性语句文本;事务状态,例如未执行、已执行(未提交)、已
提交、已回滚、不确定等;执行结果,例如成功与否,影响了多少数据对象等,但不包含查询结果。
如图5所示,为本发明实施例提供的获取数据库访问过程的装置结构示意图。该
装置包括截获单元510、处理单元520、反馈单元530 ;其中 所述截获单元510,用于截获应用程序对数据库客户端库的调用信息; 所述处理单元520,用于对所述截获单元510截获到的调用信息进行处理; 所述反馈单元530,用于将与所述调用信息对应的结果返回给应用程序。 其中,所述截获单元510具体用于修改数据库客户端库DCL的名字和/或位置,将
审计代理库APL替换为数据库客户端库DCL,使应用程序APP主动加载审计代理库APL,审
计代理库APL再加载数据库客户端库DCL ;或者用于修改数据库客户端库DCL以及相关函
数的入口,使应用程序APP指向审计代理库APL;或者用于修改应用程序APP,将对数据库客
户端库DCL函数的调用重定向到审计代理库APL;或者用于在应用程序APP运行时,动态注
入审计代理库APL。 所述处理单元520具体用于对所述截获到的调用信息进行分析、和/或记录、和/ 或修改、和/或阻断。 所述反馈单元530具体用于对所述与所述调用信息对应的结果进行分析、和/或 记录、和/或修改。 需要说明的是,上述方法各实施例的说明也同样适用于装置各实施例。 在实际应用时,所述装置设置在客户端内,介于应用程序与数据库客户端库之间。
如图6所示,为本发明实施例提供的获取数据库访问过程的装置应用示意图。其中,图6中
的审计代理库即为所述的获取数据库访问过程的装置,其结构如上所述,此处不再赘述。所
述的审计代理库实际上是为实现数据库审计而做的数据库访问代理库,其会把数据库的访
问过程发送到审计服务器上保存,也可以根据审计配置修改或拒绝某些数据库访问。 本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可
以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,
该程序在执行时,包括方法实施例的步骤之一或其组合。 另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模 块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如 果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机 可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。 综上所述,本发明提供了一种获取数据库访问过程的的方法、装置及系统,在程序 调用过程实现数据库访问过程的获取,从而实现数据库审计和权限的控制。本发明可以支 持所有客户端,在客户端和第三方审计平台上执行,无需增加数据库服务器的负担。另外, 本发明不仅可以获取访问过程并且记录完整准确的信息,还可以对访问和返回的数据进行 修改,以及对危险操作进行拦截。此外,本发明实现的接口比较简单和稳定,随着版本的变 化,需要修改和重新实现的部分很少;并且只依赖数据库厂商提供的公开信息,不涉及商业 机密,知识产权风险低。 以上对本发明所提供的获取数据库访问过程的的方法、装置及系统进行了详细介 绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只 是用于帮助理解本发明的方案;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发 明的限制。
权利要求
一种获取数据库访问过程的方法,其特征在于,包括截获应用程序APP对数据库客户端库DCL的调用信息;对所述截获到的调用信息进行处理;将与所述调用信息对应的结果返回给应用程序。
2. 根据权利要求1所述的获取数据库访问过程的方法,其特征在于,所述截获应用程 序APP对数据库客户端库DCL的调用信息的方式包括下述方式中的任意一种修改数据库客户端库DCL的名字和/或位置,将审计代理库APL替换为数据库客户端 库DCL,使应用程序APP主动加载审计代理库APL,审计代理库APL再加载数据库客户端库 DCL ;或者修改数据库客户端库DCL以及相关函数的入口,使应用程序APP指向审计代理库APL ;或者修改应用程序APP,将对数据库客户端库DCL函数的调用重定向到审计代理库APL ;或者在应用程序APP运行时,动态注入审计代理库APL。
3. 根据权利要求1所述的获取数据库访问过程的方法,其特征在于,所述对所述截获 到的调用信息进行处理包括对所述截获到的调用信息进行分析、和/或记录、和/或修改、和/或阻断。
4 根据权利要求3所述的获取数据库访问过程的方法,其特征在于,若所述调用信息 属于数据库连接调用,则所述对所述截获到的调用信息进行处理包括记录数据库连接参数,所述连接参数包括对应的主机、用户名、数据库名;和/或 所述数据库连接包括建立连接和关闭连接,建立连接时创建相关描述对象,关闭连接 时释放相关描述对象;和/或记录当前客户端的名称、命令行、可执行文件位置信息。
5. 根据权利要求3所述的获取数据库访问过程的方法,其特征在于,若所述调用信息 属于数据库环境设置调用,则所述对所述截获到的调用信息进行处理包括如果环境设置、命令的执行和表示方式有关,则在设置的时候进行分析和记录,以供记 录或展现具体操作时参考;如果在数据库连接描述对象中有相应的属性,则在修改时同步改变所述属性; 其中,所述数据库环境设置项包括字符集、字符编码、事务提交方式。
6. 根据权利要求3所述的获取数据库访问过程的方法,其特征在于,若所述调用信息 属于准备数据库操作指令和参数的调用,则所述对所述截获到的调用信息进行处理包括创建语句对象时建立语句描述,释放语句对象时销毁语句描述;其中,所述准备数据库操作指令和参数包括准备语句、设置选项、绑定参数。
7. 根据权利要求3所述的获取数据库访问过程的方法,其特征在于,若所述调用信息 属于执行数据库操作指令的调用,则所述调用信息包括语句的引用;所述对所述截获到的 调用信息进行处理包括调用前处理、调用时处理、及调用后处理;其中所述调用前处理包括检查所述语句是否符合权限审计要求,对于不符合要求的拒绝 执行;和/或,将执行语句的内容、选项和参数发送到审计服务器进行记录,记录执行状态 为"未执行";所述调用后处理包括记录语句的执行结果,数据修改的程度;如果语句执行失败,更 新事务状态为"执行失败";否则如果语句的类型是匿L,则更新事务状态为"已执行"或"已 提交";如果语句的类型是DDL或DCL,则更新事务状态为"已提交",并把该次会话内事务状 态为"已执行"的语句全部修改为"已提交"。
8. 根据权利要求3所述的获取数据库访问过程的方法,其特征在于,若所述调用信息 属于查询结果数据的调用,则所述对所述截获到的调用信息进行处理包括有选择的记录查询的结果数据,所述结果数据包括转换后的结果数据。
9. 根据权利要求3所述的获取数据库访问过程的方法,其特征在于,若所述调用信息 属于事务控制的调用,则所述对所述截获到的调用信息进行处理包括记录各种语句的事务状态,执行时按照连接当时的事务设定发送,如果不是自动提交 的,则设置为"已执行";如果执行ROLLBACK语句,则将审计服务器的记录中连接"已执行"状态的语句执行全 部修改为"已回滚"事务状态;如果执行COMMIT语句,则将审计服务器的记录中连接"已执行"状态的语句执行全部 修改为"已提交"事务状态。
10. 根据权利要求1所述的获取数据库访问过程的方法,其特征在于,所述将与所述调 用信息对应的结果返回给应用程序包括对所述与所述调用信息对应的结果进行分析、和/或记录、和/或修改。
11. 一种获取数据库访问过程的装置,其特征在于,包括 截获单元,用于截获应用程序对数据库客户端库的调用信息; 处理单元,用于对所述截获单元截获到的调用信息进行处理; 反馈单元,用于将与所述调用信息对应的结果返回给应用程序。
12. 根据权利要求11所述的获取数据库访问过程的装置,其特征在于,所述截获单元 具体用于修改数据库客户端库DCL的名字和/或位置,将审计代理库APL替换为数据库客 户端库DCL,使应用程序APP主动加载审计代理库APL,审计代理库APL再加载数据库客户 端库DCL;或者用于修改数据库客户端库DCL以及相关函数的入口,使应用程序APP指向审计代理库 APL ;或者用于修改应用程序APP,将对数据库客户端库DCL函数的调用重定向到审计代理库 APL ;或者用于在应用程序APP运行时,动态注入审计代理库APL。
13. 根据权利要求11所述的获取数据库访问过程的装置,其特征在于,所述处理单元 具体用于对所述截获到的调用信息进行分析、和/或记录、和/或修改、和/或阻断。
14. 根据权利要求11所述的获取数据库访问过程的装置,其特征在于,所述反馈单元 具体用于对所述与所述调用信息对应的结果进行分析、和/或记录、和/或修改。
15. 根据权利要求10至14中任意一项所述的获取数据库访问过程的装置,其特征在 于,所述装置设置在客户端内,介于应用程序与数据库客户端库之间。
16. —种获取数据库访问过程的系统,其特征在于,包括如权利要求11至15中任意一 项所述的获取数据库访问过程的装置。
全文摘要
本发明公开了一种获取数据库访问过程的方法、装置及系统。所述方法包括截获应用程序APP对数据库客户端库DCL的调用信息;对所述截获到的调用信息进行处理;将与所述调用信息对应的结果返回给应用程序。本发明在程序调用过程实现数据库访问过程的获取,从而实现数据库审计和权限的控制。
文档编号G06F17/30GK101727475SQ20091017908
公开日2010年6月9日 申请日期2009年10月12日 优先权日2009年10月12日
发明者吴强, 施桂琳 申请人:奇智(上海)信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1