确定作为数据库活动的起源的应用程序用户的制作方法

文档序号:6461929阅读:145来源:国知局
专利名称:确定作为数据库活动的起源的应用程序用户的制作方法
确定作为数据库活动的起源的应用程序用户
背景技术
各种各样的机构使用数据库和查询那些数据库的应用程序的组合来 为用户提供观看和操作信息的功能。例如,在电子商务背景下,商家可 以拥有存储诸如货物照片、产品描述和价格/可用性信息之类的产品信息 的数据库。潜在的顾客能够通过访问所述商家的网站并通过与商家的网 站服务器所生产的各种网页进行交互来观看该信息。在企业背景下,雇
员可以使用顾客关系管理(CRM )应用程序来访问和/或更新存储在CRM 数据库上的顾客信息。
允许终端用户与数据库进行交互对于确保向那些用户呈现最新的信 息而言是一种便利和有效的方式。不幸的是,没有适当的保护,怀有恶 意的个人可能能够采用诸如SQL注入攻击之类的技术对数据库提交恶意 查询,诸如导致信用卡或其他秘密信息暴露或价格信息修改的那些恶意 查询。
虽然诸如日志分析工具之类的传统安全产品能够显示已经发生了数 据库攻击,但是典型地,其无法提供对所述攻击负责的个人的身份。其 中一个原因是,典型地,应用程序使用同一组证明向数据库验证自己, 而所述证明不考虑哪一个终端用户与所述应用程序进行交互。此外,由 潜在地非常大量的应用程序用户同时生成的查询可以在相对小数量的数 据库连接上进行多路复用,这使得难以进行关联不同日志的侦破尝试。
录该信息。不幸的是,'这样的方法是侵^和效率低下的,需要程序员对 每个数据库应用程序中潜在的繁瑣下特征进4亍修改、测试和维护。而且, 在应用程序由第三方供应的情况下(例如,作为现成产品),是不可能对 所述应用程序进行修改的。
另一种方法是记录用户和应用程序之间的交互(例如,使用代理) 并随后尝试将那些交互中出现的文字与SQL语句中出现的文字进行关 联。不幸的是,在多个SQL语句包含相同文字时(例如,当多个用户同 时在应用程序上进行相似的活动)或者在SQL语句中没有文字时可能无 法识别恶意查询的起源。因此,需要具有一种更好的方式来确定数据库活动的起源。

发明内容
公开了确定作为数据库活动的起源的应用程序用户的方法。接收通 信。被配置为处理所述通信的线程与应用程序用户相关联,所述通信与 所述应用程序用户相关联。所述应用程序用户与所述线程所生产的数据 库查询相关联。在一些实施例中,向下游阅读器提供所述查询与所述应 用程序用户相关联的指示。在一些实施例中,提供所述指示包括生产哑
查询(dummy query )。在一些实施例中,所述哑查询包4舌后续查询与所 述应用程序用户相关联的指示。


以下的详细说明和附图中公开了本发明的各个实施例。 图1是图示具有数据库安全的环境的框图。 图2是图示用于确定数据库活动起源的过程实施例的流程图。 图3是图示用于确定数据库活动起源的系统实施例的框图。 图4图示用于确定应用程序用户和过程或线程之间的关联的过程实 施例的流程图。
图5是图示用于提供数据库活动起源的指示的过程实施例的流程图。
具体实施例方式
本发明能够以各种方式来实施,包括作为过程、装置、系统、事物 组成、诸如计算机可读存储介质之类的计算机可读介质或者其中通过光 或通信链接发送程序指令的计算机网络。在该说明书中,这些实施方式 或本发明可以采取的任何其他形式可以被称作技术。被描述为被配置成 执行任务的诸如处理器或存储器之类的组件包括在给定时刻临时配置类
在本发明的范围内,所公开过程的步骤顺序可以改变。
以下连同图示本发明原则的附图提供本发明的 一个或多个实施例的 详细描述。本发明关于这些实施例进行描述,但是本发明并不局限于任 何实施例。本发明的范围仅由权利要求来限定,并且本发明包含多种变 化、修改和等同物。为了提供对于本发明的全面理解,以下的说明中给 出了多种特定细节。这些细节是为了示例而提供的,并且本发明可以根 据没有这些特定细节中的一些或全部的权利要求来实践。出于简要的目 的,没有对关于本发明的技术领域中已知的技术素材进行详细描述,从而不会对本发明造成不必要的混淆。
当网络应用程序服务器接收新的用户请求时(例如,来自用户"Ul"),
典型地,其产生用于处理任务的线程("tr),所述任务诸如执行与该用 户请求相关的应用程序^t块、商业逻辑和数据库语句。典型地,网络应 用程序服务器具有能够被用来开发定制模块的接口,所述定制模块用于 解释对网络应用程序的所有请求和响应并且增进对网络应用程序会话对 象的访问,而不会干扰现有的网络应用程序。在一些实施例中,定制模 块被配置成获取ul的用户名(和/或与其相关联的其他身份或其他信息)
并且将其与线程tl相关联。无论线程tl何时执行语句sl,所述用户和语
句都能够彼此关联而不对应用程序代码进行修改。
典型地,网络应用程序通过数据库连接器与数据库进行通信,所述
数据库连接器能够被定制数据库连接器所包装(wrap)。当线程tl调用 定制数据库连接器内的函数时,所述定制数据库连接器能够被配置成记 录线程tl的身份以及该线程通过所述函数调用所执行的语句sl。如可适 用的,能够使用各种技术将用于特定语句的终端用户用户名(IP地址等) 发送到数据库安全监视器,并且所述数据库安全监视器能够将该信息结 合到其监视过程中。
图1是图示具有数据库安全的环境的框图。在所示示例中,各种网 络应用程序用户102- 106通过网络108与网络应用程序服务器110进行 通信。如这里所使用的,术语"应用程序用户"是指经由一个或多个连 接与数据库进行交互的应用程序的用户、个人或其他个体,所述数据库
理解为与所述应用程序相关联,但是不必是应用程序的任何特定或个别 用户。在各个实施例中,如可适用的,网络108是互联网,局域网、广 域网络或这些网络的 一些组合。应用程序用户可以4吏用各种平台访问网 络应用程序服务器IIO,例如个人计算机(例如102)、膝上计算机(104) 和蜂窝电话/个人数字助理(106),以及诸如机顶盒、游戏控制台、宽带 路由器和数码录像机之类的其他类型的信息应用设备(未示出)。
在所示示例中,数据库112和114是(经由交换才几118)进行联网, 并存储收集的信息,其中一些信息是秘密的(诸如信用卡号和/或薪水信 息)。在各个实施里中,数据库112和114是关系数据库(诸如Oracle数 据库、IBMDB2和微软SQLServer之类的产品)、平面文件数据库或不 同类型的数据库,由此在此所描述的技术是适用的。图1所示的环境还
可以包括单个数据库来取代多个数据库。数据库管理员可以使用客户端
122访问数据库112和114,在该示例中,所述客户端122是管理控制台。
网络应用程序服务器110执行一个或多个应用程序,所述应用程序 基于应用程序用户(诸如应用程序用户102- 106)所提供的信息生成对 数据库(诸如数据库U2和数据库114)的查询。网络应用程序服务器110 使用登录/密码对向数据库112验证自己。在各个实施例中,不同于口令 认证或除了口令认证之外,使用其他认证」忮术,诸如使用数字证书。
在所示示例中,网络应用程序服务器IIO使用HTTP与应用程序用 户102- 106进行通信,并且以SQL来表达查询。也可以使用用于传输 信息(例如,XML、 SOAP、 LDAP、 SMTP和消息队列)和表示查询的 其他语言或技术,并且这里所描述的技术适于作为可适用的。如以下更 加详细的描述,(多个)应用程序作为响应接收查询结果并且网络应用程 序服务器110将它们提供给适当的应用程序用户。
数据库安全监视器116例如通过使用交换机118上的抽头端口 ( tap port)来观察数据库112和网络应用程序服务器110之间发送的业务量。 在各个实施例中,使用其他的业务量监视技术,诸如由内嵌的数据库安 全监视器116使用远程交换端口分析器(RSPAN)部件,或使用交换端 口分析器(SPAN)部件。在一些实施例中,数据库安全监视器116被配 置成基于训练识别合法查询。如果观察到异常查询,则将所述查询记入 曰志并可以执行其他行动,诸如向管理员发送警告,阻止所述查询的执 行,等等。如以下更加详细的描述,网络应用程序服务器110可以被配 置成为数据库安全监视器116提供识别数据活动的起源的信息(例如, 用户名、IP地址、机器名、MAC地址等)。
所述环境中可以包括其他组件,诸如备用服务器120和防火墙、网 络入侵检测系统等(未示出)。
图2是图示用于确定数据库活动的起源的过程实施例的流程图。在 一些实施例中,图2所示的过程由网络应用程序服务器110来执行。当 接收到通信时,在202开始所述过程。假设网络应用程序服务器110被 配置成提供在应用程序用户102的计算机上执行的具有HTML和/基于 JavaScript的表单的网络浏览器。所述网络浏览器在应用程序用户的计算 机上显示该表单,并且所述用户(例如,正在搜索产品)为所述表单中 的(多个)字段提供输入。当应用程序用户按下提交按钮时,所述网络
浏览器将所述输入提供给网络应用程序服务器110。在202,网络应用程 序服务器110接收所述输入(通信)。
在204,将被配置成处理所述通信的线程与所述通信所关联的应用程 序用户相关联。例如,当应用程序用户首先接触网络应用程序服务器110 时(例如,登录),网络应用程序服务器110能够被配置成提取所述网络 应用程序用户的用户名(和/或诸如IP地址、MAC地址、网络浏览器类 型、主机、查询哞、cookie等之类的信息,此后称作"所提取信息"), 并接着将所述用户名(和所提取信息)与网络应用程序服务器所创建的
会话对象相关联。无论何时接收到对于事先存在的会话的请求,都能够 查找与所述请求的会话ID相关联的用户名。网络应用程序服务器110能 够读取其线程ID并且将该线程ID与所述用户名相关联。在一些实施例 中,不同于线程或除了线程之外,所述用户名还与过程(例如,过程ID) 相关联,并且在此所描述的技术,皮采用,如可适用的。因此,在这里术 语"线程"能够与"过程,,互换使用。
在206,将由所述线程所生成的数据库查询与处理线程所关联的应用 程序用户相关联。存在于网络应用程序服务器110上的网络应用程序通 过数据库连接器与诸如数据库112之类的数据库进行通信。请求处理线 程调用数据库连接器函数来向数据库发送查询并从所述数据库接收结 果。当请求处理线程调用数据库连接器内的函数时,所述数据库连接器 将记录调用方线程ID和所述线程通过所述函数调用所执行的SQL语句。 由于给定线程作执行的一组SQL语句是已知的,并且由于与所述线程相 关联的网络应用程序用户是已知的,所以能够将网络应用程序用户和他/ 她的动作所生成的SQL语句链接起来。
如以下更加详细的描述,表示特定网络应用程序用户和他/她的SQL 语句之间的链接的信息能够以各种方式被提供给数据库安全监视器116 (以及被配置成使用所述信息的任意其他组件)。在一些实施例中,数据 库安全监视器116在数据库112、网络应用程序服务器110 (例如,作为 过程)或图1所示的环境的其他组件上进行配置。类似地,用户名/SQL 语句信息能够被提供给除数据库安全监视器116之外的各种组件。在各 个实施例中,作为可适用的,合并或省略所示环境的一部分。例如,可 以省略客户端122和备份服务器120。
图3是图示用于确定数据库活动的起源的系统实施例的框图。网络
应用程序服务器110包括能够被用来开发定制模块的接口,所述定制模
块用于解释对网络应用程序的所有请求和响应并且增进对网络应用程序 会话对象的访问,而不会干扰现有的网络应用程序。在所示示例中,网
络应用程序服务器110运行JBoss应用程序服务器并且包括截听HTTP 请求的定制过滤器202。在其他体系结构(例如,微软IIS)中,作为可 适用的,可以使用其他组件来截听HTTP (或XML、 SOAP等)请求, 诸如孩i软ISAPI扩展。
配置所述定制模块以使得在应用程序用户登录时,所述定制模块截 听和解析所述请求来提取用户名并接着将所述用户名与网络应用程序服
务器110所创建的会话对象相关联。所述定制模块接着将把所提取的用 户名连同所创建的会话对象的ID—起存储在静态存储区域中。无论何时 接收到对于事先存在的对话的请求,所述定制模块都搜索其静态存储区 域来查找与所述请求的会话ID相关联的用户名。所述定制模块还将读取 其自己的线程ID并且将该线程ID与从所述静态存储区域所查找的用户 名相关联。因此,能够确定代表正在处理任务的给定请求处理线程的应 用程序用户的用户名(例如,"ul")。
网络应用程序304 (例如,电子商务应用程序)经由诸如数据库连接 器308之类的数据库连接器与诸如数据库112之类的数据库进行通信。 请求处理线程调用数据库连接器函数来向数据库112发送查询并从数据 库112接收结杲。在所示示例中,数据库连接器308基于JDBC。在所示 示例中,定制连接器包装器306位于网络应用程序304和数据连接器308 之间。网络应用程序304被配置成使用连接器包装器306,而连接器包装 器306接着被配置成将所有SQL语句和数据传送到数据库连接器308。 在各个实施例中,网络应用程序304由第三方提供和/或其代码不,皮修改。 连接器包装器306起到数据库连接器308上的包装器的作用,并且在一 些实施例中不需要应用程序的任何修改。
当请求处理线程(例如,tl)调用连接器包装器306内的函数时,连 接器包装器306将记录调用方线程ID tl和所述线程通过所述函数调用所 执行的SQL语句(例如,si )。
在一些情况下,网络应用程序304是交互式和事务定向的,以使得 网络应用程序用户希望立即对他们的请求进行响应。在一些情况下,网 络应用程序304被配置成从主应用程序线程(例如,Tl)中产生多个线 程(例如,Tx、 Ty、 Tz)。连接器包装器306能够^L配置成观察在线程 Tx执行SQL语句(例如,"Sa")时,线程Tx不与用户名相关联。在这 样的情况下,连接器包装器306将接着单步调试(step through ) Tx线程 层次直至具有与其相关联的用户名的请求处理线程T1。
在各个实施例中,位于网络应用程序服务器110和数据库112之间 的其他组件以及这里所描述的技术能够适于通过那些附加组件来传播信 息。因此,除了这里所描述的三层体系结构之外,可以使用附加级别的 体系结构(例如,四层),由此在此所描述的技术是适用的。例如,可以 利用其自己的过滤器挂钩和包装器而以与网络服务器110类似的方式来 配置SOAP服务器。
图4是图示用于确定应用程序用户和过程或线程之间的关联的过程 实施例的流程图。当接收到通信时,在402开始所述过程。如以上结合 图2的部分202所描述的,接收通信的一个示例包括网络应用程序服务 器110接收包括POST/GET方法的HTTP通信。
在404,确定与所述通信相关联的应用程序用户和用来处理请求的线 程之间的唯一关联。如以上结合图2的部分204所描述的,网络应用程 序服务器110能够被配置成从通信提取用户名。
在406,所述线程具有与其相关联的数据,所述数据向数据的下游阅 读者指示所确定的关联。例如,在406,可以使用线程局部变量来关联用 户名和线程。在各个实施例中(例如,基于体系结构),可以以其他方式 进行关联,诸如通过配置网络应用程序服务器110来存储将用户名和线 程在能够由下游阅读者读取的日志文件中进行关联的信息。
图5是图示用于提供数据库活动起源的指示的过程实施例的流程图。 在一些实施例中,图5所示的过程由诸如连接包装器306之类的连接包 装器来执行。
当接收到数据库查询时,在502开始所述过程。例如,在502,连接 包装器306从网络应用程序304接收数据库查询。在504,确定所述查询 所关联的线程。在506,读取指示所述线程所关联的应用程序用户的数据。 例如,在506,包装器连接器306使用在图4的406存储在线程局部变量
中的用户名。
在508,提供所述查询与应用程序用户相关联的指示。例如,在508, 连接器包装器306可以修改所述查询以便包括该查询可归属于特定网络 应用程序用户的注释(和/或提供其他信息,诸如网络应用程序用户的IP
地址、MAC地址等,作为也能够在网络应用程序用户和应用程序服务器 IIO之间建立会话时提取的名称值对)。在这样的情形下,数据库112将 忽略所述查询的注释部分,而诸如数据库安全监视器116之类的模块可 以被配置成识别并处理这些注释中所包括的信息。在一些实施例中,在 带外(outofband)提供指示。例如,当连接器包装器306将查询转发到 数据库连接器308时,连接器包装器306还能够被配置成发送包括所述 查询和相关联的用户名的电子邮件,写入远程日志文件,等等。
在一些实施例中,出于诸如效率的原因以及为了保持低的所需系统 资源,可以在网络应用程序服务器110和诸如数据库112之类的数据库之 间开启的同时连接的数目明显小于可以与网络应用程序服务器110开启 会话的应用程序用户的数目。例如,虽然允许数百个或数千个用户同时 访问网络服务器应用程序服务器110,但是仅允许网络应用程序服务器 IIO开启10个与数据库112的同时连接。在这样的情形下,在508提供 的指示可以包括由连接器包装器306所进行的"哑"查询的传输,这指 示由数据库连接器308在特定连接(例如,IO个连接之一)上所发送的 任何后续查询与特定用户相关联(直至发送了另一个这样的哑消息)。所 述哑消息可以被完全注释,以使得数据库112忽略它们。数据库安全模 块116由此能够被配置成针对这些哑查询监视数据库业务量。
一旦被提供给数据库安全模块116,所述信息可以被用于各种目的, 诸如通过将其合并到数据库安全模块的正常数据库活动的简档中,使用 其改善入侵检测和核查功能性和/或提供更完整的特征集。例如,使用到 数据库安全模块116的接口,管理员将能够搜索特定用户活动的异常发 生;了解哪些用户已经执行了特定查询,确定与异常相关联的IP地址范 围,等等。当检阅有嫌疑的异常和更新所述简档时,管理员能够利用精 细的粒度对所述简档进4亍提纯(refine),例如通知特定用户可以或不可 以执行查询,或者当阈值数量的用户执行相同的异常查询时适当地其应 当自动列入优良名单或黑名单。
虽然已经为了简要理解的目的在某种程度上详细描述了以上实施 例,但是本发明并不局限于所提供的细节。实施本发明有许多选择性的 方式。所公开的实施例是说明性而非限定性的。
权利要求
1.一种用于确定作为数据库活动的起源的应用程序用户的方法,包括接收通信;将被配置成处理所述通信的线程与所述通信所关联的应用程序用户相关联;和将所述应用程序用户与所述线程所生成的数据库查询相关联。
2. 如权利要求l所述的方法,进一步包括向下游阅读器提供所述查 询与所述应用程序用户相关联的指示。
3. 如权利要求2所述的方法,其中所述下游阅读器是数据库安全监视器。
4. 如权利要求2所述的方法,其中所述指示包括向所述查询插入注释。
5. 如权利要求2所述的方法,其中提供指示包括向所述下游阅读器 发送电子邮件。
6. 如权利要求2所述的方法,其中提供指示包括生成哑查询。
7. 如权利要求6所述的方法,其中所述哑查询包括后续查询与所述 应用程序用户相关联的指示。
8. 如权利要求2所述的方法,其中提供指示包括写入日志文件。
9. 如权利要求l所述的方法,其中所述通信是请求。
10. 如权利要求1所述的方法,其中所述通信是要求与数据库进行 交互的请求。
11. 如权利要求1所述的方法,其中将被配置成处理所述通信的线 程与应用程序用户相关联包括使用线程局部变量。
12. 如权利要求1所述的方法,其中所述通信是与事务相关联的多 个通信之一。
13. 如权利要求1所述的方法,其中将被配置成处理所述通信的线 程与应用程序用户相关联包括将所述线程与至少一条所提取信息相关联。
14. 一种用于确定作为数据库活动的起源的应用程序用户的系统, 包括处理器;和与所述处理器耦合的存储器,其中所述存储器被配置成向所述处理器提供指令,当执行所述指令时,使得所述处理器 接收通信;将被配置成处理所述通信的线程与所述通信所关联的应用程序用户 相关联;和将所述应用程序用户与所述线程所生成的数据库查询相关联。
15. 如权利要求14所述的系统,其中所述存储器被进一步配置成向 所述处理器提供指令,当执行所述指令时,使得所述处理器向下游阅读 器提供所述查询与所述应用程序用户相关联的指示。
16. 如权利要求15所述的系统,其中所述下游阅读器是数据库安全 监视器。
17. 如权利要求15所述的系统,其中提供指示包括生成哑查询。
18. —种用于确定作为数据库活动的起源的应用程序用户的计算机 程序产品,所述计算机程序产品收录于计算机可读介质中并且包括计算 机指令,用于接收通信;将被配置成处理所述通信的线程与所述通信所关联的应用程序用户 相关联;和将所述应用程序用户与所述线程所生成的数据库查询相关联。
19. 如权利要求18所述的计算机程序产品,所述计算机程序产品进 一步包括计算机指令,用于向下游阅读器提供所述查询与所述应用程序 用户相关联的指示。
20. 如权利要求19所述的计算机程序产品,其中所述下游阅读器是 数据库安全监视器。
全文摘要
公开了确定作为数据库活动的起源的应用程序用户。接收通信。将被配置成处理所述通信的线程与所述通信所关联的应用程序用户相关联。将所述应用程序用户与所述线程所生成的数据库查询相关联。
文档编号G06F17/30GK101345751SQ20081008815
公开日2009年1月14日 申请日期2008年3月28日 优先权日2007年3月30日
发明者A·K·拉尔, R·A·德塞, R·-C·胡, V·M·钱德兰 申请人:赛门铁克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1