本发明实施方式涉及数据库技术领域,特别是涉及一种数据库审计方法、装置及系统。
背景技术:
随着物联网、移动互联技术的成熟,相关行业每天产生的数据成爆炸性增长,采用关系型数据库的公司慢慢地往hbase数据库方向转变。国内政府部门、大型连锁企业的转变步伐更为明显。而hbase这种非关系型数据库,对于现有的信息安全审计体系,构成了极大的挑战。顾名思义,非关系型数据库存储是有别与关系型数据库存储的新一代存储解决方法。传统的提取sql语句的方法,在审计上已是捉襟见肘。伴随hadoop平台扩张,对hbase数据库访问安全审计技术研究刻不容缓。
hbase可以动态增加列,支持高并发,基于列存储的,每个columnfamily(列族)都由几个文件保存,不同的columnfamily的文件是分离的。而传统的关系型数据库是基于表格结构和行模式保存的。传统数据库审计方法无法审计全新的hbase操作行为,对返回结果内容亦无从解析。
为了兼容人们对关系型数据库访问习惯,hbase的访问支持sql(结构化查询语言)。sql是通过类hive工具的转化实现对hbase查询语言,由一系列关系数据库功能来提供支持——包括交易、一致性、触发器、存储过程等。sql存取数据,将其作为表的行和列来查看。由于hbase数据实际上存储在columnfamily结构中,因此与传统的关系数据库相比,使用sql的应用程序能够获得更好的性能。
通过javaapi或c++api,借助jdbc(javadatabaseconnectivity,java数据库连接)或odbc(opendatabaseconnectivity,开放数据库互连)直接访问hbase,使用nosql(非关系型的数据库)语句实现,传统数据库审计传面临这种第二报文,亦有心无力,不能解析这种访问。
技术实现要素:
本发明实施方式提供一种数据库审计方法、装置及系统,能够对nosql的访问进行解析。
为解决上述技术问题,第一方面,本发明实施方式采用的一个技术方案是:提供一种数据库审计方法,包括:
建立与服务器的连接,并向服务器发送查询指令;
接收服务器返回的执行结果信息,并将所述执行结果信息保存入库,所述执行结果信息由服务器根据特征码解析并执行所述查询指令后得到。
区别于现有技术,本实施例提供的方法先是通过对第二报文进行特征码的识别,区分不同的指令,然后采用各自的翻译单元进行语句解析,将解析出来的有效操作语句缓存处理后,继续对组好包的回复进行协议分析。
附图说明
图1是本发明实施例提供的应用场景示意图;
图2是本发明提供的一种数据库审计方法的流程图;
图3是本发明提供的又一种数据库审计方法的流程图;
图4是本发明提供的一种数据库审计装置的结构框图;
图5是本发明提供的又一种数据库审计装置的结构框图;
图6是本发明提供的一种电子设备的机构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及本申请实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体本申请实施例仅用以解释本申请,并不用于限定本申请。
图1是本申请实施例提供一种数据库审计方法的可能应用场景。在一些可能应用场景,如图1所示,该应用场景包括计算机1及服务器2。服务器2为搭载有hadoop平台的服务器,其采用非关系型数据库hbase存储数据。计算机1将sql指令或者nosql指令携带于报文中后,发送至服务器,报文中同时还可携带有用于区分不同指令的特征码,服务器2接收到报文后,解析报文,判断里面的特征码是否为缓存标记,如为缓存标记,则将指令缓存后用sqlid对应的指令替换报文中原有的指令。如不为缓存标记,则将指令缓存。接着,解析并执行指令后将执行结果信息通过报文再次发送回计算机1中。计算机1对接收的结果信息进行保存入库。
现有技术中,服务器2与计算机1连接后,服务器2如接收到的指令为nosql指令,往往不能够进行解析。
请再参阅图1,在本申请实施例提供的可能应用场景中,服务器2区分不同的指令,然后采用各自的翻译单元进行语句解析,将解析出来的有效操作语句缓存处理后,继续对组好包的回复进行协议分析。
实施例一
参阅图2,本发明的第一实施例,提供一种数据库审计方法,所述方法包括:
步骤21:建立与服务器的连接,并向服务器发送查询指令。
所述服务器为搭载有hadoop平台的服务器,hadoop是目前大数据处理的最流行平台架构,主要采用非关系型数据库hbase存储数据。
所述查询指令为nosql语句或者sql语句,终端设备将查询指令通过tcp/ip协议或其他网络协议进行组包形成第一报文,并将组包形成的第一报文发送至采用非关系型数据库hbase存储数据的hadoop服务器。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,还包括指令名称与参数信息。指令名称为能够执行的语句的代表符号。参数信息为指令名称可执行的参数。在某些情况下,也可不必包含参数执行,只包含指令名称。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机(“127.0.0.1”)上克隆数据库。
又如,指令“showusers”,该指令只包括指令名称“showusers”,不包括参数信息。整个语句对应的操作为:显示当前所有的用户。
为了区分不同的语句,在第一报文中携带一些用于区分不同语句的标记。如,查询指令为nosql语句,则在第一报文中携带缓存标记。如,查询指令为sql语句,则在第一报文中不携带缓存标记。
步骤22:接收服务器返回的执行结果信息,并将所述执行结果信息保存入库,所述执行结果信息由服务器根据特征码解析并执行所述查询指令后得到。
服务器接收发送的包含查询指令的第一报文后,解析第一报文,获得查询指令和特征码,同时判断特征码是否为缓存标记,如为缓存标记,则对该第一报文中的指令进行缓存。如不为缓存标记,则在对指令缓存后通过sqlid对应的sql指令替换原有的查询指令,并将原有的查询指令中的参数信息保留,供sqlid对应的sql语句执行。
例如,原有的查询指令为db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机(“127.0.0.1”)上克隆数据库。用sqlid对应的sql指令替换db.clonedatabase,并将参数信息“127.0.0.1”供sqlid对应的sql指令执行。
在经过上述步骤后,终端设备发送的查询指令已经为服务器可执行的指令,则服务器对指令进行解析并执行,并将执行结果通过tcp/ip协议进行组包形成第一报文,并将组包形成的第一报文发送至终端设备。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,服务器执行命令的结果信息。终端设备解析第一报文,并将提取出第一报文中的执行结果信息后将执行结果信息进行保存。可进一步对提取出的执行结果信息进行审计。
区别于现有技术,本发明实施例提供的一种数据库审计方法,针对hbase数据库各种指令进行协议解析,发送的包含操作指令的第一报文进行解析后,通过特征码进行区别,将sql操作、nosql操作采用各自的独有翻译单元,整合成与操作格式雷同的语句,同时将相应的回复做解析后,作为一个整体的记录,保存,作为事后参考的依据。
本实施例的方法先是通过对第二报文进行特征码的识别,区分不同的指令,然后采用各自的翻译单元进行语句解析,将解析出来的有效操作语句缓存处理后,继续对组好包的回复进行协议分析。
实施例二
参阅图3,本发明的第二实施例,提供一种数据库审计方法,所述方法包括:
步骤31:建立与终端设备的连接,并接收终端设备发送的查询指令。
所述查询指令携带于终端设备发送的第一报文中。
该方法的执行主体为服务器,所述服务器为搭载有hadoop平台的服务器,hadoop是目前大数据处理的最流行平台架构,主要采用非关系型数据库hbase存储数据。
接收的终端设备发送的所述查询指令为nosql语句或者sql语句,终端设备将查询指令通过tcp/ip协议进行组包形成第一报文,并将组包形成的第一报文发送至采用非关系型数据库hbase存储数据的hadoop服务器。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,还包括指令名称与参数信息。指令名称为能够执行的语句的代表符号。参数信息为指令名称可执行的参数。在某些情况下,也可不必包含参数执行,只包含指令名称。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机(“127.0.0.1”)上克隆数据库。
又如,指令“showusers”,该指令只包括指令名称“showusers”,不包括参数信息。整个语句对应的操作为:显示当前所有的用户。
为了区分不同的语句,在第一报文中携带一些用于区分不同语句的标记。如,查询指令为nosql语句,则在第一报文中携带缓存标记。如,查询指令为sql语句,则在第一报文中不携带缓存标记。
步骤32:根据特征码解析并执行所述查询指令,而后将执行结果信息发送至终端设备。
所述特征码携带于终端设备发送的第一报文中
服务器接收发送的包含查询指令的第一报文后,解析第一报文,获得查询指令和特征码,同时判断第一报文中的特征码是否为缓存标记,如为缓存标记,则对该第一报文中的指令进行缓存。如不为缓存标记,则在对指令缓存后通过sqlid对应的sql指令替换原有的查询指令,并将原有的查询指令中的参数信息保留,供sqlid对应的sql语句执行。
例如,原有的查询指令为db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机(“127.0.0.1”)上克隆数据库。用sqlid对应的sql指令替换db.clonedatabase,并将参数信息“127.0.0.1”供sqlid对应的sql指令执行。
在经过上述步骤后,终端设备发送的查询指令已经为服务器可执行的指令,则服务器对指令进行解析并执行,并将执行结果通过tcp/ip协议进行组包形成第一报文,并将组包形成的第一报文发送至终端设备。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,服务器执行命令的结果信息。终端设备解析第一报文,并将提取出第一报文中的执行结果信息后将执行结果信息进行保存。可进一步对提取出的执行结果信息进行审计。
区别于现有技术,本发明实施例提供的一种数据库审计方法,针对hbase数据库各种指令进行协议解析,发送的包含操作指令的第一报文进行解析后,通过特征码进行区别,将sql操作、nosql操作采用各自的独有翻译单元,整合成与操作格式雷同的语句,同时将相应的回复做解析后,作为一个整体的记录,保存,作为事后参考的依据。
本实施例的方法先是通过对第二报文进行特征码的识别,区分不同的指令,然后采用各自的翻译单元进行语句解析,将解析出来的有效操作语句缓存处理后,继续对组好包的回复进行协议分析。
实施例三
参阅图4,本发明的第三实施例,提供一种数据库审计装置,所述装置包括:
第一连接模块41,用于建立与服务器的连接。
所述服务器为搭载有hadoop平台的服务器,hadoop是目前大数据处理的最流行平台架构,主要采用非关系型数据库hbase存储数据。
第一发送模块42,用于向服务器发送携带于第一报文中的查询指令。
所述查询指令为nosql语句或者sql语句,第一发送模块42将查询指令通过tcp/ip协议进行组包形成第一报文,并将组包形成的第一报文发送至采用非关系型数据库hbase存储数据的hadoop服务器。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,还包括指令名称与参数信息。指令名称为能够执行的语句的代表符号。参数信息为指令名称可执行的参数。在某些情况下,也可不必包含参数执行,只包含指令名称。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机(“127.0.0.1”)上克隆数据库。
又如,指令“showusers”,该指令只包括指令名称“showusers”,不包括参数信息。整个语句对应的操作为:显示当前所有的用户。
为了区分不同的语句,在第一报文中携带一些用于区分不同语句的标记。如,查询指令为nosql语句,则在第一报文中携带缓存标记。如,查询指令为sql语句,则在第一报文中不携带缓存标记。
服务器接收发送的包含查询指令的第一报文后,解析第一报文,获得查询指令和特征码,同时判断第一报文中的特征码是否为缓存标记,如为缓存标记,则对该第一报文中的指令进行缓存。如不为缓存标记,则在对指令缓存后通过sqlid对应的sql指令替换原有的查询指令,并将原有的查询指令中的参数信息保留,供sqlid对应的sql语句执行。
例如,原有的查询指令为db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机(“127.0.0.1”)上克隆数据库。用sqlid对应的sql指令替换db.clonedatabase,并将参数信息“127.0.0.1”供sqlid对应的sql指令执行。
第一执行模块43,用于接收服务器返回的执行结果信息,并将所述执行结果信息保存入库;所述执行结果信息由服务器根据特征码解析并执行所述查询指令后得到。
经过服务器解析后,第一发送模块41发送的查询指令已经为服务器可执行的指令,则服务器对指令进行解析并执行,并将执行结果通过tcp/ip协议进行组包形成第一报文,并将组包形成的第一报文发送至第一执行模块43。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,服务器执行命令的结果信息。第一执行模块43解析第一报文,并将提取出第一报文中的执行结果信息后将执行结果信息进行保存。可进一步对提取出的执行结果信息进行审计。
区别于现有技术,本发明实施例提供的一种数据库审计装置,服务器针对hbase数据库各种指令进行协议解析,服务器对第一发送模块42发送的包含操作指令的第一报文进行解析后,通过特征码进行区别,将sql操作、nosql操作采用各自的独有翻译单元,整合成与操作格式雷同的语句,同时将相应的回复做解析后,第一解析模块44将回复作为一个整体的记录,保存,作为事后参考的依据。
实施例四
参阅图5,本发明的第二实施例,提供一种数据库审计方法,所述方法包括:
第二连接模块51,用于建立与终端设备的连接。
第二连接模块51搭载于服务器中,所述服务器为搭载有hadoop平台的服务器,hadoop是目前大数据处理的最流行平台架构,主要采用非关系型数据库hbase存储数据。
第二接收模块52,并接收终端设备发送的携带于第一报文中的执行指令。
接收的终端设备发送的所述查询指令为nosql语句或者sql语句,终端设备将查询指令通过tcp/ip协议进行组包形成第一报文,并将组包形成的第一报文发送至采用非关系型数据库hbase存储数据的hadoop服务器。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,还包括指令名称与参数信息。指令名称为能够执行的语句的代表符号。参数信息为指令名称可执行的参数。在某些情况下,也可不必包含参数执行,只包含指令名称。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机
(“127.0.0.1”)上克隆数据库。
又如,指令“showusers”,该指令只包括指令名称“showusers”,不包括参数信息。整个语句对应的操作为:显示当前所有的用户。
为了区分不同的语句,在第一报文中携带一些用于区分不同语句的标记。如,查询指令为nosql语句,则在第一报文中携带缓存标记。如,查询指令为sql语句,则在第一报文中不携带缓存标记。
第二执行模块53,用于根据特征码解析并执行所述查询指令,而后将执行结果信息发送至终端设备。
第二执行模块53接收发送的包含查询指令的第一报文后,解析第一报文,获得查询指令和特征码,同时判断第一报文中的特征码是否为缓存标记,如为缓存标记,则对该第一报文中的指令进行缓存。如不为缓存标记,则在对指令缓存后通过sqlid对应的sql指令替换原有的查询指令,并将原有的查询指令中的参数信息保留,供sqlid对应的sql语句执行。
例如,原有的查询指令为db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase为指令名称,其对应的命令为能够执行的从指定主机进行克隆数据的操作命令。其后的“127.0.0.1”为参数信息,其为db.clonedatabase指令名称能够执行的参数。整个语句对应的操作为:从指定主机(“127.0.0.1”)上克隆数据库。用sqlid对应的sql指令替换db.clonedatabase,并将参数信息“127.0.0.1”供sqlid对应的sql指令执行。
经第二解析模块53处理后,终端设备发送的查询指令已经为服务器可执行的指令,则服务器对指令进行解析并执行,并通过第二发送模块54将执行结果通过tcp/ip协议进行组包形成第一报文,并将组包形成的第一报文发送至终端设备。发送的第一报文中,除了携带一些符合tcp/ip协议要求的必要格式信息外,服务器执行命令的结果信息。终端设备解析第一报文,并将提取出第一报文中的执行结果信息后将执行结果信息进行保存。可进一步对提取出的执行结果信息进行审计。
区别于现有技术,本发明实施例提供的一种数据库审计装置,针对hbase数据库各种指令进行协议解析,第二解析模块53对发送的包含操作指令的第一报文进行解析后,通过特征码进行区别,将sql操作、nosql操作采用各自的独有翻译单元,整合成与操作格式雷同的语句,同时将相应的回复做解析后,作为一个整体的记录,保存,作为事后参考的依据。
实施例五
图6是本申请实施例提供的一种数据库审计的电子设备600的硬件结构示意图,如图6所示,该电子设备600包括:
一个或多个处理器601、存储器602,图6中以一个处理器601为例。
处理器601和存储器602可以通过总线或者其他方式连接,图6中以通过总线连接为例。
存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器601通过运行存储在存储器602中的非易失性软件程序、指令以及模块,从而执行各种功能应用以及数据处理,即实现上述方法实施例一的一种数据库审计方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种数据库审计装置的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
所述一个或者多个模块存储在所述存储器602中,当被所述一个或者多个处理器601执行时,执行上述任意方法实施例中的数据库审计方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)其他具有数据交互功能的电子装置。
本申请实施例提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图6中的一个处理器601,可使得上述一个或多个处理器可执行上述任意方法实施例中的数据库审计方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。