数据库审计的方法和设备的制造方法_4

文档序号:9506187阅读:来源:国知局
置头指针。
[0123]优选地,在步骤S12中:判断所述数据包是否合法,当所述数据包不合法时,拒绝处理所述数据包;接着,判断所述数据包是否为分包,将是分包的数据包写入环形缓存池,以进行缓存处理。
[0124]在此,数据库如mysql、sqlserver、DB2、Oracle等,不同的数据库具有不同的数据库的协议,对数据包头部有不同的格式要求,例如,若要审计Oracle数据库,则根据Oracle对数据包包头的要求进行识别判断获取的数据包是否满足Oracle的要求,若满足,则进行下一步的处理,若不满足,则拒绝处理该数据包。接着,对满足Oracle的数据包进行判断是否为分包,基于数据包的包头中的长度域与数据包的长度是否相等来确定数据包是否为分包,如果相等则不是分包,否则为分包。
[0125]优选地,所述数据包的待处理状态包括:第一状态、第二状态、第三状态和第四状态;其中,当将需要写入的数据包写入所述环形缓存池缓存出错时,则所述数据包的待处理状态为第一状态;当将需要写入的数据包写入所述环形缓存池还需要后续拼包时,则所述数据包的待处理状态为第二状态;当将需要写入的数据包写入所述环形缓存池并完成拼包且其后还有后续数据包时,则所述数据包的待处理状态为第三状态;当将需要写入的数据包写入所述环形缓存池拼包结束且其后无后续数据包时,则所述数据包的待处理状态为第四状态。
[0126]在一具体实施例中,识别数据包为分包后,将数据包写入环形缓存池进行缓存处理,从缓存池尾部开始缓存数据,移动尾指针到数据的尾端。完成缓存后返回不同的缓存状态,此时,数据包的缓存状态即为数据包的待处理状态,根据各待处理状态进行下一步的数据包的处理操作,为方便表述,在具体实施例中依次用和“2”代表不同的缓存状态,即依次分别代表待处理状态中的第一状态、第二状态、第三状态和第四状态,具体表示如下:
[0127]-1-第一状态,表示缓存出错,例如数据包不合法、长度越界,缓存过程中发生数据紊乱等的数据包的待处理状态;
[0128]0—第二状态,表示需要拼包,继续接收后面的数据包时的数据包的待处理状态;
[0129]1一第三状态,表示数据包拼包完成,但是还有后续的协议数据包时的数据包的待处理状态;
[0130]2—第四状态,表示数据包拼包结束,不再进行拼包处理,原因可能是正常拼包完成,或者发现丢包时的数据包的待处理状态。
[0131]优选地,步骤S12还包括:当所述数据包不分包时,不写入所述环形缓存池,并将所述不写入所述环形缓存池的数据包生成所述数据包的待处理状态。在此,基于数据包的包头中的长度域与数据包的长度是否相等来确定数据包是否为分包,如果相等则不是分包,否则为分包;当数据包不是分包时,则不写入环形缓存池,且此数据包生成其对应的待处理状态。
[0132]优选地,所述数据包的待处理状态包括第五状态,其中,当所述数据包不需要写入环形缓存池时,则所述数据包的待处理状态为第五状态。例如,在判断出数据包不是分包时,则不需要进入环形缓存池,直接返回数据包,此时的待处理状态为第五状态,可记为“3”,可表示如下:
[0133]3—第五状态,表示不是数据分包,不需要进入环形缓存池的数据包的待处理状
??τ ο
[0134]本领域技术人员应能理解,上述的缓存状态的表示方式仅为举例,其他现有的或今后可能出现的缓存状态的表示方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0135]优选地,在步骤S13中,所述待处理状态为第一状态,则重置数据包处理函数;所述待处理状态为第二状态,则所述数据包的待处理状态返回第二状态,接收后续数据包继续进行缓存;所述待处理状态为第三状态,则调用数据包处理函数进行所述数据包的处理;所述待处理状态为第四状态,则调用数据包处理函数进行所述数据包的处理并对所述数据包进行解析。
[0136]接前例,数据包处理函数根据缓存的状态进行相应的处理:
[0137]-1-第一状态(表示缓存出错),则进行的相应的处理为直接返回-1,并重置回调函数;
[0138]1-第三状态(表示数据包拼包完成,但还有后续的数据包),则进行的相应的处理为回调函数处理完数据后,需要返回解析的数据长度,并保持回调函数不变;
[0139]2—第四状态(表示数据包拼包结束),则进行的相应的处理为进行数据包的解析。
[0140]其中,数据包处理函数可包括回调函数,不同的数据包的回调函数不同,调用回调函数对事件进行处理后需要重置回调函数。数据包处理函数对数据包进行协议解析,解析后获取数据长度并根据解析的协议格式提取相应的数据信息,例如,用户登录时的用户名、用户对数据库进行的一些操作。
[0141]优选地,步骤S13还包括:所述待处理状态为第五状态,则对所述数据包进行解析。例如,当待处理状态为第五状态“3”时,则表示没有分包,数据包处理函数对此状态的数据包进行解析。
[0142]更优选地,所述对为第四状态的数据包进行解析后包括:若是请求数据包,则数据包处理函数切换为处理响应包的数据包处理函数;若是响应数据包,则重置数据包处理函数,提交审计结果并调用审计规则进行策略匹配。
[0143]更优选地,所述对为第五状态的数据包进行解析后包括:若是请求数据包,则数据包处理函数切换为处理响应包的数据包处理函数;若是响应数据包,则重置数据包处理函数,提交审计结果并调用审计规则进行策略匹配。
[0144]在此,请求数据包主要是解析客户端的SQL请求语句;响应数据包主要是解析服务器返回的结果集和sql执行结果。提交审计结果会把客户端的sql请求语句和服务器返回的执行结果全部提交,提交到后续的SQL分析模块。响应数据包解析后,表示一次“请求一响应”过程的完成,需要重置数据包处理函数以便进行下一轮的“请求一响应”过程。不同的请求、响应数据包具有不同的回调函数,基本循环过程为:回调函数a处理请求包一回调函数b处理响应包一重置回调函数一回调函数a处理请求包一回调函数b处理响应包—重置回调函数一……,依此循环。
[0145]本领域技术人员应能理解,上述SQL (Structured Query Language)为结构化查询语言,是专为数据库建立的操作命令集。
[0146]另外,调用审计规则进行策略匹配,数据库审计可以灵活定义审计策略,从而满足不同数据库的不同审计要求。例如,解析数据包提取出用户执行的SQL语句后,调用所在数据库的相应审计规则进行分析用户的一些操作是否合法,如用户对数据库的登录、注销及用户到数据库表的查询、插入、修改、删除、创建等操作是否合法。若出现非法、违规操作,及时报警响应处理。报警方式包括气泡报警、声音报警和邮件报警等多种报警方式。
[0147]优选地,在步骤S14中,基于数据包处理函数处理数据返回处理的数据长度;基于第一状态或第四状态的相应处理结果,清空环形缓存池,并重置头、尾指针;基于第三状态的相应处理结果,根据数据包处理函数处理的数据长度清空所述环形缓存池的头部,并重新设置头指针。
[0148]继续接上述具体实施例,回调函数处理完数据后,返回数据的数据长度;当对缓存状态-1或2进行相应的处理后,需要清空环形缓存池,并重置头、尾指针,当对缓存状态1进行相应的处理后,按照回调函数处理的数据长度,从环形缓存池的头部清空数据,并重新设置头指针。
[0149]本申请中实施例所提供的数据库审计的方法和设备,通过对数据包的缓存采用环形缓存池的技术,每次缓存写入数据的时候,只需要在尾部添加数据,并重新设置尾指针,避免对内存的频繁申请、释放、以及内存间的数据拷贝。当缓存数据满足一个协议数据包时,调用相应的回调函数进行数据处理,处理完毕后,根据之前的缓存状态决定保持、切换、重置回调函数,并返回已经处理的数据长度。最后,还是依据缓存状态进行数据清理:或者重置环形缓存池,或者只清空环形缓存池的头部数据、重新设置头指针。因此大大提高了对数据的处理效率,同时,依据不同的数据库协议,只需要修改相应的回调函数,就可以快速开发出其它类型数据库的审计程序,具有一定的扩展性。
[0150]需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
[0151]另外,本申请的一部分可被应用为计算机程序产品,
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1