一种数据库对象脚本危险操作的审计方法与流程

文档序号:11830567阅读:363来源:国知局

本发明是关于信息安全技术领域,特别涉及一种数据库对象脚本危险操作的审计方法。



背景技术:

随着信息技术的发展,数据库成了很多企业的核心资产,特别是金融、互联网等企业,数据库一旦出现故障整个企业的业务立刻瘫痪,因此数据库安全越来越受到人们的重视。目前数据库系统越来越先进,功能也越来越强大,人们可以在数据库上开发各种对象供应用程序调用,比如各种存储过程、视图、触发器等,这方便了应用程序的开发,但同时也带来了各种安全问题。由于这些对象运行在数据库服务器上,能直接操作数据库,如果数据库对象开发人员开发时无意或有意的犯错,就可能会在数据库上留下后门或使数据库丢失数据,这些都会对数据库造成巨大的影响。因此对这些对象脚本的安全审计非常重要,但是很多时候由于审计人员经验欠缺或疏忽,这些对象脚本的危险操作不能被全部发现。而且很多时候由于没有审计人员,这些脚本直接写进了数据库。因此必须有方法能快速全面地发现脚本中的危险操作,降低脚本安全审计的难度。

目前常见的数据库安全扫描软件主要检测数据库系统配置风险和数据库软件本身的安全漏洞,分析的都是数据库系统的信息,没有对数据库对象脚本进行分析的功能。



技术实现要素:

本发明的主要目的在于克服现有技术中的不足,提供一种能够发现数据库对象脚本危险操作的方法。为解决上述技术问题,本发明的解决方案是:

提供一种数据库对象脚本危险操作的审计方法,包括下述步骤:

(1)扫描数据库的系统表,获取所有用户编写的数据库对象脚本;

(2)将危险操作关键字符表导入到内存中;

(3)对脚本根据对象类型、所属用户进行关键字智能匹配分析,判断是否有危险操作;具体包括下述子步骤:

步骤D:取步骤(1)返回的一个对象的脚本数据;

步骤E:对步骤D中选取的对象脚本,根据对象的类型选择危险操作关键字符表中不同的关键字(例如类型为VIEW的对象脚本,如果脚本里有INSERT、DELETE、UPDATE关键字就可能是危险操作);

步骤F:对步骤D中选取的对象脚本,根据对象所属用户选择危险操作关键字符表中不同的关键字(例如对象所属的用户是普通用户,如果脚本里包含了对系统表、业务核心表的操作,就可能是危险操作);

步骤G:对步骤D中选取的对象脚本,利用步骤E、步骤F中选取的所有关键字,采用智能匹配方法判断是否包含危险操作(比如:对类型VIEW,可以用\bUPDATE[]+\w*[]+SET的格式进行匹配,\bUPDATE的意思是一个UPDATE单词,像AUPDATE、SETUPDATE就不符合这个格式,能排除;[]+的意思是一个或多个空格;\w*的意思是一个或多个字母或数字或下划线,用来匹配数据库里的一个表名;[]+SET的意思是一个或多个空格后跟单词SET,SET是UPDATE关键字的副关键字);

步骤H:循环执行步骤D、步骤E、步骤F、步骤G,直至完成对步骤(1)返回的所有对象脚本数据进行判断;

(4)将步骤H中得出的危险操作结果,根据对象所属的用户和关键字进行危险等级判断(比如系统管理员创建的对象危险等级高,对数据库权限进行操作的一些关键字危险等级高),根据危险程度(高危、中危、低危),分等级列出有危险操作的脚本所在对象名和行号,形成扫描报告输出。

在本发明中,所述步骤(1)中,获取的数据库对象脚本包括存储过程、视图、触发器等数据库系统中用户能二次开发的对象。

在本发明中,所述步骤(1)具体包括下述子步骤:

步骤A:连接数据库;

步骤B:用SELECT语句获取数据库中各个对象的脚本(以Oracle数据库为例,获取数据库的系统视图All_SOURCE里各个对象的脚本),同时用WHERE语句排除系统的对象,得到用户编写的对象脚本;

步骤C:将步骤B中获得的用户对象脚本列表按对象类型和所属用户区分排序后返回。

在本发明中,所述步骤C中,对用户对象脚本根据类型和所属用户分类,包括下述操作:

操作a:获取一个用户编写的对象;

操作b:根据TYPE字段判断用户对象的类别;

操作c:根据OWNER字段判断对象是属于哪个用户的。

在本发明中,所述步骤(2)中,危险操作关键字符表采用默认的危险操作关键字符表或者自定义的危险操作关键字符表,自定义的危险操作关键字符表是指用户根据自己系统的特点定义新的关键字添加到默认的危险操作关键字符表。

与现有技术相比,本发明的有益效果是:

本发明能快速自动发现数据库中所有用户编写的脚本里的危险操作,利用智能匹配以及用户对象识别技术降低漏报误报率;并且用户可以扩展危险操作的范围,自定义关键字。

本发明采用危险等级区分和脚本定位技术,使用户能快速定位需要及时处理的危险操作。

附图说明

图1为本发明的工作流程图。

具体实施方式

首先需要说明的是,本发明涉及数据库技术,是计算机技术在信息安全技术领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明,凡本发明申请文件提及的均属此范畴,申请人不再一一列举。

下面结合附图与具体实施方式对本发明作进一步详细描述:

如图1所示,假设要对Oracle10g数据库进行对象脚本危险操作审计,具体包括下述步骤:

步骤A:连接数据库。

步骤B:用SELECT语句获取数据库的系统视图All_SOURCE里各个对象的脚本,同时用WHERE语句排除系统用户的对象,得到用户编写的对象脚本。

步骤C:将步骤B中获得的用户对象脚本列表根据TYPE字段按对象类型排序和根据OWNER字段按所属用户区分排序后返回。

步骤D:定义关键字符表;例如针对VIEW类型的对象脚本,定义\bUPDATE[]+\w*[]+SET、\bINSERT[]+INTO[]+\w*、\bDELETE[]+FROM[]+\w*。

步骤E:将整理好的关键字符表加载到内存中。

步骤F:取步骤C返回的一个对象的脚本数据。

步骤G:对步骤F中选取的对象脚本,根据对象的类型选择不同的关键字;例如类型为VIEW的对象脚本,选择针对性的\bUPDATE[]+\w*[]+SET、\bINSERT[]+INTO[]+\w*、\bDELETE[]+FROM[]+\w*等关键字。

步骤H:对步骤F中选取的对象脚本,根据对象所属用户选择不同的关键字;例如对象所属的用户是普通用户,选择针对性的\bsys.user$\b、\bsys.obj$\b、\bsys.sysauth$\b等关键字。

步骤I:对步骤H选好关键字的对象脚本采用智能匹配的方法判断是否包含危险操作。

匹配方法为:例如对类型VIEW,可以用\bUPDATE[]+\w*[]+SET的格式进行匹配;\bUPDATE的意思是一个UPDATE单词,像AUPDATE、SETUPDATE就不符合这个格式,能排除;[]+的意思是一个或多个空格;\w*的意思是一个或多个字母或数字或下划线,用来匹配数据库里的一个表名;[]+SET的意思是一个或多个空格后跟单词SET,SET是UPDATE关键字的副关键字。

通过这样的智能匹配,可以减少漏报误报,审计出真正的危险操作关键字。以上仅对UPDATE关键字的智能匹配方法做了简单说明,其他的关键字有各自不同的匹配格式,由于数量多,不一一说明。

步骤J:循环执行步骤F、步骤G、步骤H、步骤I,直至完成对步骤C返回的所有对象脚本数据进行判断。

步骤K:将步骤J中得出的危险操作结果根据高危、中危、低危分等级列出,并显示危险操作所在的对象名称和行号,形成扫描报告提供给用户。

最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1