如何在PLSQL Developer里面监控访问数据库的sql语句

如何在PLSQL Developer里面监控访问数据库的sql语句,第1张

select aSQL_FULLTEXT from v$sql a, v$session b where aADDRESS = bSADDR and bSID = '访问数据库的回话号'

摘 要: 针对目前主流数据库的安全防护功能配置方式不灵活、不能应变需求的问题,在HOOK技术的基础上融入组态思想,设计并实现了一种适用于不同数据库的自主安全防护系统(DSS)。在SQLITE上的相关实验表明,利用DSS完全可以实现独立于特定数据库的自主安全防护,大大提高了数据安全防护的灵活性。

关键词: 数据库安全; HOOK API; 访问控制; 数据库审计; SQLITE; 自主安全系统

近年来,有关数据库的安全事故不断出现,例如银行内部数据信息泄露造成的账户资金失密等。因此,高度重视数据库安全防护很有必要。但一直以来,国内数据库产业化发展缓慢,市场份额中较大一部分被国外大型数据库企业占有。这对于国内用户而言,信息的安全性、稳定性等方面都会受到威胁。有的系统涉及使用多个数据库,并且对每个数据库的安防功能要求各不相同。这样,在保障整个系统安全的目标下就需要对每个数据库进行专门配置管理,不但维护难度很大,而且工作也比较繁重。面对这些实际问题,目前的数据库系统自带的安全防护配置方式已不能胜任,如何提出一个灵活独立的安全防护系统迫在眉睫。

1 相关安全防护技术介绍

目前,数据库系统面临的主要威胁有:(1)对数据库的不正确访问引起数据库数据的错误。(2)为了某种目的,故意破坏数据库。(3)非法访问不该访问的信息,且又不留痕迹;未经授权非法修改数据。(4)使用各种技术攻击数据库等。多年来,人们在理论和实践上对数据库系统安全的研究做出了巨大的努力,也取得了很多成果。参考文献[1-2]介绍了保护数据库安全的常用技术,包括:存取管理技术、安全管理技术、以及数据库加密技术,并给出了一些实现途径。其中,访问控制和安全审计作为数据库安全的主要保障措施受到了人们广泛关注,参考文献[3]对访问控制技术中的基本策略进行了总结,给出了实现技术及各自的优缺点。参考文献[4]主要针对权限建模过程中的权限粒度问题做了分析,并提出一个基于角色的访问控制框架。进入21世纪以后,访问控制模型的研究重点开始逐渐由集中式封闭环境转向开放式网络环境,一方面结合不同的应用,对原有传统模型做改进,另一方面,也提出一些新的访问控制技术和模型,比较著名的有信任管理、数字版权管理和使用控制模型 [5]。审计通过对数据库内活动的记录和分析来发现异常并产生报警的方式来加强数据库的安全性[6]。目前,在我国使用的商品化关系数据库管理系统大都提供了C2级的审计保护功能,但实现方式和功能侧重有所不同。周洪昊等人[7]分析了Oracle、SQL Server、DB2、Sybase的审计功能,分别从审计系统的独立性、自我保护能力、全面性和查阅能力四个方面对审计功能做出改进[7]。参考文献[8]则针对审计信息冗余、审计配置方式死板以及数据统计分析能力不足等问题,在数据库系统已有的审计模块基础上,重新设计和实现了一种新型的数据库安全审计系统。

但所有的这些工作都是从 数据库 系统的角度出发,并没有从本质上解决安全防护对数据库系统的依赖性问题,用户还是很难对数据库提供自主的安全防护功能。如果能将安全防护从数据库管理系统中彻底独立出来,针对不同的应用需求允许用户自己实现安全防护功能模块并在逻辑上加入到数据库应用系统中,这样问题也就迎刃而解了。

通过以上分析,本文提出一种独立于具体数据库、可组态的安全防护模型,并给出具体的实现方法。该模型将安全防护从数据库完全独立出来,在多数据库应用中实现集中配置安防,满足用户对于自主防护功能的需求。并在开源的嵌入式数据库产品SQLITE中做了功能测试,实验结果表明,该模型切实可行,达到了预想的效果,既能实现对系统的保护,又大大提高了系统的灵活性。

2 自主安全防护系统的设计与实现

自主安全防护系统DSS(Discretionary Safety System)的主要功能是阻止用户对信息的非法访问,在可疑行为发生时自动启动预设的告警流程,尽可能防范数据库风险的发生,在非法 *** 作发生时,触发事先设置好的防御策略,实行阻断,实现主动防御,并按照设置对所发生的 *** 作进行详细记录,以便事后的分析和追查。

21 系统结构

在DSS中,安全管理员使用角色机制对用户的权限进行管理,通过制定安全策略来设置核心部件Sensor以及访问控制部件。核心部件Sensor侦听用户的数据库 *** 作请求,采用命令映射表将不同的命令映射为系统识别的命令,提取出安全检查所需要的信息,发送到访问控制模块进行安检。安检通过了则允许用户访问数据库,否则拒绝访问,同时根据审计规则生成记录存入审计日志。

DSS作为独立的功能模块主要通过向Sensor提供数据库的调用接口的方式保障对数据库信息安全合理地访问。系统有一个默认的访问控制流程,用户也可以自己设定安全策略,系统自动生成相应访问控制流程。本文约定被访问的对象为客体,请求 *** 作的用户为主体。

22 系统实现

系统实现主要分为系统数据字典设计、用户登录与用户管理、系统相关策略制定、侦听器(Sensor)的实现、访问控制以及日志审计六部分。原数据库API信息(dll)、用户的自主防护策略作为输入,Sensor核心一方面将用户的防护策略融合在原数据库的API接口中,另一方面记录用户对数据库的 *** 作并生成日志,提供给用户做审计。用户在使用过程中不需要修改原有系统,即可实现自主防护。

Sensor由API处理模块、访问控制模块(Access Control)、Sensor核心模块(Core)、注射模块四部分组成。Core是Sensor的核心部件,主要负责拦截接口,解析并分离接口中的重要信息,使程序转入自定义的安检程序中执行安全检查。Access Control组件实现不同级别的访问控制,根据用户提供的安检信息,组态出对应的安防模块,并在合适的时候调用其进行访问控制。API(dll)主要将数据库系统提供的接口信息,转化为dll以便Sensor侦听时使用。Inject/Eject为Sensor提供远程注射的功能。

Core通过拦截对API的调用来实现定制功能。程序在调用API函数之前,首先要把API所在的动态链接库载入到程序中;然后将API函数的参数、返回地址(也就是函数执行完后,下一条语句的地址)、系统当前的环境(主要是一些寄存器的值)压入系统调用栈;接着,进入到API函数的入口处开始执行API函数,执行过程中从系统调用栈中取出参数,执行函数的功能,返回值存放在EAX寄存器中,最终从堆栈中取出函数的返回值并返回(参数压栈的顺序还要受到调用约定的控制,本文不详细介绍)。

举例说明函数调用时堆栈的情况。假设调用约定采用_stdcall,堆栈由高向低递减,API为Int func(int a, int b, int c)。

拦截主要通过HOOK API技术实现,可以拦截的 *** 作包括DOS下的中断、Windows中的API调用、中断服务、IFS和NDIS过滤等。目前微软提供了一个实现HOOK的函数库Detours。其实现原理是:将目标函数的前几个字节改为jmp指令跳转到自己的函数地址,以此接管对目标函数的调用,并插入自己的处理代码。

HOOK API技术的实质是改变程序流程。在CPU的指令集中,能够改变程序流程的指令包括JMP、CALL、INT、RET、RETF、IRET等。理论上只要改变API入口和出口的任何机器码,都可以实现HOOK。但实际实现上要复杂得多,主要需要考虑如何处理好以下问题:(1)CPU指令长度。在32 bit系统中,一条JMP/CALL指令的长度是5 B,因此只需要替换API中入口处的前5 B的内容,否则会产生不可预料的后果。(2)参数。为了访问原API的参数,需要通过EBP或ESP来引用参数,因此需要明确HOOK代码中此时的EBP/ESP的值。(3)时机问题。有些HOOK必须在API的开头,如CreateFileA( )。有些必须在API的尾部,如RECV()。(4)程序上下文内容的保存。在程序执行中会涉及修改系统栈的内容,因此注意保存栈中原有内容,以便还原。(5)在HOOK代码里尽量杜绝全局变量的使用,以降低程序之间的耦合性。通过以上的分析,整理出如图4所示的实现的流程。

DSS与传统数据库的安全防护功能相比,具有以下特点:

(1)独立于具体的数据库。这种独立性体现在:①DSS只需要数据库提供其接口信息即可工作。②支持不同标准的SQL语句,通过数据库命令映射表可将非标准的SQL语句映射为系统设置的SQL命令。③系统自身数据的物理存储是独立于数据库的。

(2)灵活性和针对性的统一。用户可以根据自己的需要配置针对特定应用的相关规则。

(3)完善的自我安全保护措施。DSS只有数据库安全管理员和安全审计员才能访问。安全管理员和安全审计员是一类特殊的用户,他们只负责安全方面的 *** 作,而不能访问数据库中的数据。这与Oracle等的数据库不同,在这些数据库中,DBA可以进行所有的 *** 作。DSS系统本身具有故障恢复能力,能使系统出现问题时恢复到一个安全的状态。

(4)完备的信息查阅和报警功能。在DSS中,本文提供了便利的设计查阅工具,方便用户对系统进行监控。另外,用户也可以自己定义报警条件和报警处理措施,一旦满足报警条件,系统就会自动地做出响应。

3 实验及结果分析

DSS的开发主要采用VS 2005实现,开发完成后在一台主频为28 GHz、内存2 GB、装有Windows 2000 *** 作系统的普通 PC机上对其进行了功能和性能的测试,使用的数据库是开源的嵌入式数据库SQLite 36。为了搭建测试环境,需要在SQLite中添加初始化系统自身的数据字典,并开发应用程序。测试内容包括:登录、用户管理、Sensor、访问控制、日志审计以及增加DSS前后数据库系统安全性变化等功能性测试和增加DSS系统后对数据库性能的影响两方面。其中,性能测试主要从时间和资源的增加情况来说明,针对不同数据库对象分别在五个级别(20 000、40 000、60 000、80 000、100 000)的数据上进行了插入和查询 *** 作测试。为了做好性能对比,在SQLite中也添加了相同的访问控制功能,记为Inline Processing。

从功能测试结果可以看出,DSS可以为数据库系统提供自主防护。从性能测试的结果中看出,查询 *** 作和插入 *** 作耗时相差比较大,这主要是SQLite工作方式引起的,在执行用户的插入 *** 作时,数据库需将内存中的数据写入磁盘数据库文件中,占用了一部分时间。而查询时,SQLite会将数据库文件部分内容缓存起来,加快了查询的速度。另外,增加DSS会对性能有略微的影响,但是它能实现对数据库系统自主保护。

本文针对传统数据库安全防护功能配置不灵活的问题,提出了一种基于HOOK技术的数据库通用安全防护系统。该系统的最大优点在于,它不受数据库自身的约束,完全独立于数据库系统,为用户提供一种按需定制的功能,不仅增加了安防配置的灵活性而且提高了通用性,可以用于不同的数据库系统中。

用Oracle本身自带的功能,参考下面文章

>

当今社会,信息化、互联网技术高速发展,数据成为政府、金融、教育、医疗等各行业的核心资产,一旦数据被泄漏,会造成严重经济损失和不良的社会影响,因此数据库安全尤为重要。对于SQL注入攻击而言,已经有了Web防火墙,为何还需要数据库防火墙?两者之间的区别在哪?

什么是数据库防火墙?

数据库防火墙是一款抵御并消除由于应用程序业务逻辑漏洞或者缺陷所导致的数据(库)安全问题的安全设备或者产品。

数据库防火墙一般情况下部署在应用程序服务器和数据库服务器之间,采用数据库协议解析的方式完成。但这并不是唯一的实现方式,你可以部署在数据库外部,可以不采用协议解析。从这个定义可以看出,数据库防火墙其本质目标是给业务应用程序打补丁,避免由于应用程序业务逻辑漏洞或者缺陷影响数据(库)安全。

常见的应用程序业务逻辑漏洞和缺陷:SQL注入攻击、CC攻击、非预期的大量数据返回、敏感数据未脱敏、频繁的同类 *** 作、超级敏感 *** 作控制、身份盗用和撞库攻击、验证绕行和会话劫持、业务逻辑混乱。

Web防火墙也能够防御SQL注入攻击,为什么还要部署数据库防火墙?

Web防火墙可以抵御的漏洞与缺陷:SQL注入攻击、XSS攻击、CSRF攻击、SSRF攻击、Webshell后门、弱口令、反序列化攻击、命令/代码执行、命令/代码注入、本地/远程文件包含攻击、文件上传攻击、敏感信息泄露、XML实体注入、XPATH注入、LDAP注入、其他。

从抵御范围来看,Web防火墙和数据库防火墙所承载的目标区别较大,SQL注入攻击攻只是两种不同防火墙的为数不多的交叉点。

数据库防火墙是SQL注入防御的终极解决方案

数据库防火墙和Web防火墙部署位置的不同,决定了两种不同产品对于SQL注入攻击的防御策略和效果会大不相同。

部署位置:Web防火墙作用在浏览器和应用程序之间,数据库防火墙作用在应用服务器和数据库服务器之间。

作用协议:Web防火墙作用在>

通过JMX技术来监控Oracle的JVM

 2  阿里巴巴数据库连接池(具有数据连接监控功能)

Druid是一个JDBC组件,它包括三部分:

DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。

DruidDataSource 高效可管理的数据库连接池。

SQLParser

Druid可以做什么?

1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。

以上就是关于如何在PLSQL Developer里面监控访问数据库的sql语句全部的内容,包括:如何在PLSQL Developer里面监控访问数据库的sql语句、数据库自主安全防护如何实现 数据库自主安全防护技术介绍【详解】、请能人:推荐一个 监控ORACLE数据库的某张表是否被访问过(增、删、改、查)的工具等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10192119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存