可左右滑动选省市

一种数据库审计方法、装置、系统及计算机存储介质

更新时间:2024-06-16
一种数据库审计方法、装置、系统及计算机存储介质 专利申请类型:发明专利;
源自:上海高价值专利检索信息库;

专利名称:一种数据库审计方法、装置、系统及计算机存储介质

专利类型:发明专利

专利申请号:CN202111046245.4

专利申请(专利权)人:上海观安信息技术股份有限公司
权利人地址:上海市浦东新区泥城镇云端路1412弄15号二层1室

专利发明(设计)人:衡相忠,张巧丽,张乃淦,丁玉军,王亭景,朱涛,缪钱勇

专利摘要:本发明公开一种数据库审计方法、装置、系统及计算机存储介质。其中,该方法包括:获取所有访问数据;将所述所有访问数据的特征值与预设特征值进行匹配,若匹配得分低于第一预设阈值时,通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别;反之,认为匹配成功,得到数据库访问数据以及相对应的数据库数据类别;对所述数据库访问数据进行解析,并根据获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。通过本发明,解决了现有技术中对数据库访问数据内容做全扫描、人工配置数据库信息、人工配置策略规则造成的效率低、浪费时间的问题。

主权利要求:
1.一种数据库审计方法,其特征在于,包括:
获取所有访问数据;
将所述所有访问数据的特征值与预设特征值进行匹配,若匹配得分低于第一预设阈值时,通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别;反之,认为匹配成功,得到数据库访问数据以及相对应的数据库数据类别;
对所述数据库访问数据进行解析,并根据实时获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签;
所述对所述数据库访问数据进行解析,并根据实时获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签包括:根据所述数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,得到数据库会话信息;其中,所述数据库会话信息包括:登录信息、sql语句、结果集、所述sql语句访问的数据库、表名和字段名;
根据数据库表的粒度或数据库表字段名的粒度,对所述数据库会话信息进行数据还原,得到虚拟表;以及将所述虚拟表作为样本数据,发送给消息队列;
将所述sql语句访问的数据库、表名、字段名与所述获取的敏感表目录对比,判断对应的数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签;
所述敏感表目录的获取包括:
实时监听所述消息队列,获取所述虚拟表;
根据预设敏感数据规则和算法判断所述虚拟表的字段是否为敏感表字段,若是,根据所述敏感表字段建立敏感表目录;
将所述敏感表目录发送至所述消息队列;
所述通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别包括:将同一IP地址和端口的所述未匹配成功的访问数据,根据预设访问数据数量依次送入到每类所述流量解析器中进行解析,直至解析成功率超过第二预设阈值时,则认为匹配上了该类流量解析器,得到对应的数据库访问数据以及该类流量解析器相对应的数据库数据类别。
2.根据权利要求1所述的方法,其特征在于,
所述访问数据包括:IP地址和端口;
所述通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别之后,包括:将所有的所述数据库数据类别存储整合,得到数据库信息表;
根据所述IP地址、所述端口和所述数据库信息表识别后续获取的数据库访问数据,得到相对应的数据库数据类别。
3.一种数据库审计装置,其特征在于,所述装置包括:
获取单元,用于获取所有访问数据;其中,所述访问数据包括:IP地址和端口;
第一识别单元,用于将所述所有访问数据的特征值与预设特征值进行匹配,若匹配得分低于第一预设阈值时,通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别;反之,认为匹配成功,得到数据库访问数据以及相对应的数据库数据类别;
判断单元,用于对所述数据库访问数据进行解析,并根据实时获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签;
所述判断单元包括:
解析子单元,用于根据所述数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,得到数据库会话信息;其中,所述数据库会话信息包括:登录信息、sql语句、结果集、所述sql语句访问的数据库、表名和字段名;
还原子单元,用于根据数据库表的粒度或数据库表字段名的粒度,对所述数据库会话信息进行数据还原,得到虚拟表;以及将所述虚拟表作为样本数据,发送给消息队列;
判断子单元,用于将所述sql语句访问的数据库、表名、字段名与所述获取的敏感表目录对比,判断对应的数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签;
所述敏感表目录的获取包括:
实时监听所述消息队列,获取所述虚拟表;
根据预设敏感数据规则和算法判断所述虚拟表的字段是否为敏感表字段,若是,根据所述敏感表字段建立敏感表目录;
将所述敏感表目录发送至所述消息队列;
所述通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别包括:将同一所述IP地址和端口的所述未匹配成功的访问数据,根据预设访问数据数量依次送入到每类所述流量解析器中进行解析,直至解析成功率超过第二预设阈值时,则认为匹配上了该类流量解析器,得到对应的数据库访问数据以及该类流量解析器相对应的数据库数据类别。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括:整合单元,用于将所有的所述数据库数据类别存储整合,得到数据库信息表;
第二识别单元,用于根据所述IP地址、所述端口和所述数据库信息表识别后续获取的数据库访问数据,得到相对应的数据库数据类别。
5.一种数据库审计系统,其特征在于,包括:权利要求3‑4任一项所述的数据库审计装置。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至2中任一项所述的数据库审计方法。 说明书 : 一种数据库审计方法、装置、系统及计算机存储介质技术领域[0001] 本发明涉及数据库技术领域,具体而言,涉及一种数据库审计方法、装置、系统及计算机存储介质。背景技术[0002] 敏感数据是指泄漏后可能会给社会或个人带来严重危害的数据。包括个人隐私数据,如姓名、身份证号码、住址、电话、银行账号、邮箱、密码、医疗信息等;数据库审计是指模拟攻击者对业务系统进行安全性测试,提前发现漏洞,防止个人隐私数据泄露、资产受损、数据被篡改等风险。[0003] 现有技术中,数据库审计多是通过配置审计数据库信息、策略规则,对访问数据内容做全扫描并进行匹配,最后得出匹配的风险内容,该过程需要人工配置数据库信息、人工配置策略规则,并且没有充分利用数据库表的特点,效率低、浪费时间。[0004] 针对现有技术中对数据库访问数据内容做全扫描、人工配置数据库信息、人工配置策略规则造成的效率低、浪费时间的问题,目前尚未提出有效的解决方案。发明内容[0005] 本发明实施例中提供一种数据库审计方法、装置、系统及计算机存储介质,以解决现有技术中对数据库访问数据内容做全扫描、人工配置数据库信息、人工配置策略规则造成的效率低、浪费时间的问题。[0006] 为达到上述目的,一方面,本发明提供了一种数据库审计方法,其中,该方法包括:获取所有访问数据;将所述所有访问数据的特征值与预设特征值进行匹配,若匹配得分低于第一预设阈值时,通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别;反之,认为匹配成功,得到数据库访问数据以及相对应的数据库数据类别;对所述数据库访问数据进行解析,并根据获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0007] 可选的,所述访问数据包括:IP地址和端口;所述通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别之后,包括:将所有的所述数据库数据类别存储整合,得到数据库信息表;根据所述IP地址、所述端口和所述数据库信息表识别后续获取的数据库访问数据,得到相对应的数据库数据类别。[0008] 可选的,所述通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别包括:将同一所述IP地址和端口的所述未匹配成功的访问数据,根据预设访问数据数量依次送入到每类所述流量解析器中进行解析,直至解析成功率超过第二预设阈值时,则认为匹配上了该类流量解析器,得到对应的数据库访问数据以及该类流量解析器相对应的数据库数据类别。[0009] 可选的,所述对所述数据库访问数据进行解析,并根据获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签包括:根据所述数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,得到数据库会话信息;其中,所述数据库会话信息包括:登录信息、sql语句、结果集、所述sql语句访问的数据库、表名和字段名;根据数据库表的粒度或数据库表字段名的粒度,对所述数据库会话信息进行数据还原,得到虚拟表;以及将所述虚拟表作为样本数据,发送给消息队列;将所述sql语句访问的数据库、表名、字段名与所述获取的敏感表目录对比,判断对应的数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0010] 可选的,所述敏感表目录的获取包括:实时监听所述消息队列,获取所述虚拟表;根据预设敏感数据规则和算法判断所述虚拟表的字段是否为敏感表字段,若是,根据所述敏感表字段建立敏感表目录;将所述敏感表目录发送至所述消息队列。[0011] 另一方面,本发明提供了一种数据库审计装置,所述装置包括:获取单元,用于获取所有访问数据;其中,所述访问数据包括:IP地址和端口;第一识别单元,用于将所述所有访问数据的特征值与预设特征值进行匹配,若匹配得分低于第一预设阈值时,通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别;反之,认为匹配成功,得到数据库访问数据以及相对应的数据库数据类别;判断单元,用于对所述数据库访问数据进行解析,并根据获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0012] 可选的,所述装置还包括:整合单元,用于将所有的所述数据库数据类别存储整合,得到数据库信息表;第二识别单元,用于根据所述IP地址、所述端口和所述数据库信息表识别后续获取的数据库访问数据,得到相对应的数据库数据类别。[0013] 可选的,所述判断单元包括:解析子单元,用于根据所述数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,得到数据库会话信息;其中,所述数据库会话信息包括:登录信息、sql语句、结果集、所述sql语句访问的数据库、表名和字段名;还原子单元,用于根据数据库表的粒度或数据库表字段名的粒度,对所述数据库会话信息进行数据还原,得到虚拟表;以及将所述虚拟表作为样本数据,发送给消息队列;判断子单元,用于将所述sql语句访问的数据库、表名、字段名与所述获取的敏感表目录对比,判断对应的数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0014] 另一方面,本发明还提供了一种数据库审计系统,包括上述的数据库审计装置。[0015] 另一方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的数据库审计方法。[0016] 本发明的有益效果:[0017] 本发明提供了一种数据库审计方法,该方法中,通过对获取的所有访问数据进行特征匹配,以及将未匹配成功的所述访问数据通过流量解析器进行遍历,可自动识别出数据库访问数据;并且本申请中,根据敏感表目录判断虚拟表或虚拟表的字段是否为敏感表字段,进而判断对应的数据库访问数据是否为敏感数据,无需对访问数据内容做全扫描,大大提升了敏感数据发现的效率,节省了时间。附图说明[0018] 图1是本发明实施例提供的一种数据库审计方法的流程图;[0019] 图2是本发明实施例提供的在识别出数据库访问数据以及相对应的数据库数据类别之后的流程图;[0020] 图3是本发明实施例提供的判断所述数据库访问数据是否为敏感数据的流程图;[0021] 图4是本发明实施例提供的一种数据库审计装置的结构示意图;[0022] 图5是本发明实施例提供的判断单元的结构示意图。具体实施方式[0023] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。[0024] 现有技术中,数据库审计多是配置审计数据库信息,配置策略规则,对访问数据内容做全扫描并进行匹配,最后得出匹配的风险内容,该过程需要人工配置数据库信息、人工配置策略规则,并且没有充分利用数据库表的特点,效率低、浪费时间。[0025] 因而,本发明提供了一种数据库审计方法,图1是本发明实施例提供的一种数据库审计方法的流程图,如图1所示,该方法包括:[0026] S101.获取所有访问数据;[0027] 在一个可选的实施方式中,获取所有的访问数据,例如:http、ftp、smp、pop3、数据库访问数据。[0028] S102.将所述所有访问数据的特征值与预设特征值进行匹配,若匹配得分低于第一预设阈值时,通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别;反之,认为匹配成功,得到数据库访问数据以及相对应的数据库数据类别;[0029] 在一个可选的实施方式中,将所有的访问数据的特征值与预设特征值进行匹配,例如:一个访问数据符合数据库访问数据的预设种类的特征值,我们认为该访问数据是数据库访问数据的概率为80%(即第一预设阈值),将所有的访问数据分别与上述数据库访问数据的预设种类的特征值进行匹配,若匹配成功,则认为匹配得分达到或超过所述第一预设阈值,就认为该访问数据为数据库访问数据并且能够得到相对应的数据库类别,反之,若匹配得分低于所述第一预设阈值,则再将该访问数据通过流量解析器进行遍历,识别出是否是数据库访问数据,若是,识别出相对应的数据库类别。[0030] 例如:postgresql数据库访问数据,其application_name、is_superuser为其特征值,当一个访问数据符合postgresql数据库访问数据的这两个特征值时,就认为该访问数据是postgresql数据库访问数据的概率为80%。[0031] S105.对所述数据库访问数据进行解析,并根据获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0032] 在一个可选的实施方式中,对上述得到的数据库访问数据进行解析,将解析后的所述数据库访问数据与获取的敏感数据发现系统中的敏感表目录进行对比,判断该数据库访问数据是否为敏感目录,若是,就为所述数据库访问数据打上敏感标签。反之,对所述数据库访问数据不打敏感标签,并判断该数据库访问数据是否超过样本检测数量,若没有超过,将该数据库访问数据作为样本发送给敏感数据发现系统。具体的,例如,敏感数据发现系统需要100条id的数据作为样本进行检测是否是敏感数据。如果目前已经送出去了100条id的数据,那么就不需要再将101条id的数据作为样本送出给敏感数据发现系统。反之,若没有超过,继续将其作为样本送出给敏感数据发现系统。[0033] 本发明中,通过对获取的所有访问数据进行特征匹配,以及将未匹配成功的所述访问数据通过流量解析器进行遍历,可自动识别出数据库访问数据,在保证效率的同时,实现了自动部署,无需人工配置。[0034] 在一个可选的实施方式中,图2是本发明实施例提供的在识别出数据库访问数据以及相对应的数据库数据类别之后的流程图,如图2所示,所述访问数据包括:IP地址和端口;[0035] 所述S102之后,包括:[0036] S103.将所有的所述数据库数据类别存储整合,得到数据库信息表;[0037] 在一个可选的实施方式中,当所有的数据库数据类别都获取后,将其存储整合,得到一个数据库信息表,以便于后续调用。[0038] S104.根据所述IP地址、所述端口和所述数据库信息表识别后续获取的数据库访问数据,得到相对应的数据库数据类别。[0039] 在一个可选的实施方式中,对于后续获取的数据库访问数据,可直接根据该数据的IP地址、端口信息,比对上述得到的数据库信息表,直接识别出是否是数据库访问数据,并得到相对应的数据库数据类别。特别的,对于一个新的数据库访问数据(即该数据的IP地址、端口信息都是不存在数据库信息表中的),可将该访问数据通过特征匹配以及流量解析器进行遍历,识别出是否是数据库访问数据,若是,识别出相对应的数据库数据类别。[0040] 在一个可选的实施方式中,所述S102包括:将同一所述IP地址和端口的所述未匹配成功的访问数据,根据预设访问数据数量依次送入到每类所述流量解析器中进行解析,直至解析成功率超过第二预设阈值时,则认为匹配上了该类流量解析器,得到对应的数据库访问数据以及该类流量解析器相对应的数据库数据类别。[0041] 在一个可选的实施方式中,将同一所述IP地址和端口的所述未匹配成功的访问数据,根据预设访问数据数量依次送入到每类所述流量解析器中进行解析,例如,根据IP地址和端口将连续的10条或者20条或者30条访问数据依次送入到一个mysql解析器中,若都能正确解析出来,则足以证明该访问数据和mysql解析器是匹配的,并且同时得到mysql解析器相对应的mysql数据库(数据库数据类别);否则,则送入下一个流量解析器中,例如oracle解析器中,若都能正确解析出来,则足以证明该访问数据和oracle解析器是匹配的,并且同时得到oracle解析器相对应的oracle数据库(数据库数据类别);以此类推,直至找到了最匹配的流量解析器。[0042] 特别的,若所有类的流量解析器都不匹配,则认为该访问数据不是数据库访问数据。[0043] 需要说明的是,所述连续的10条或者20条或者30条访问数据,只是本实施方式的一个示例,其只是为了更好的对本实施例进行说明,所以并不能以此作为对本发明的限制。[0044] 在一个可选的实施方式中,图3是本发明实施例提供的判断所述数据库访问数据是否为敏感数据的流程图,如图3所示,所述S105包括:[0045] S1051.根据所述数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,得到数据库会话信息;其中,所述数据库会话信息包括:登录信息、sql语句(结构化查询语言)、结果集、所述sql语句访问的数据库、表名和字段名;[0046] 在一个可选的实施方式中,当识别出数据库访问数据以及相对应的数据库数据类别后,根据数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,例如:若识别出数据库数据类别为mysql数据库,则使用相对应的mysql数据库解析模块对该mysql数据库访问数据进行解析,解析出数据库会话信息,包括:登录信息(用户名、访问数据库名称、访问工具)、sql语句(结构化查询语言)、结果集、所述sql语句访问的数据库、表名和字段名。[0047] S1052.根据数据库表的粒度或数据库表字段名的粒度,对所述数据库会话信息进行数据还原,得到虚拟表;以及将所述虚拟表作为样本数据,发送给消息队列;[0048] 在一个可选的实施方式中,对解析出的sql语句(结构化查询语言)、结果集、所述sql语句访问的数据库、表名和字段名,按照数据库表的粒度或数据库表字段名的粒度进行数据还原,得到虚拟表。[0049] 例如:sql为:selectid,phonefromstafflimit3;[0050] 结果集为:42068119951202094513714653433[0051] 42068119951101220218923456778[0052] 52058818881022234512345678921[0053] (i)按照数据库表的粒度还原虚拟表,表名staff:[0054]id phone420681199512020945 13714653433420681199511012202 18923456778520588188810222345 12345678921[0055] (ii)按照数据库表字段名的粒度还原虚拟表,有两个虚拟表列(字段名);[0056] 1.表名staff,字段名id:[0057]id420681199512020945420681199511012202520588188810222345[0058] 2.表名staff,字段名phone:[0059]phone137146534331892345677812345678921[0060] 将上述虚拟表作为样本数据,发送给消息队列。[0061] S1053.将所述sql语句访问的数据库、表名、字段名与所述获取的敏感表目录对比,判断对应的数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0062] 在一个可选的实施方式中,将该phone字段与敏感表目录对比,判断敏感表目录中是否有phone这个敏感表字段,若是,则判定对应的数据库访问数据(mysql数据库)为敏感数据,并打上敏感标签。[0063] 特别的,目前已经发现staff这个表的phone这个字段是敏感表字段,接下来,解析出一条数据库访问数据,这条数据库访问数据解析出的sql语句为selectphonefromstaff;但是获取的结果集中没有显示包含电话号码(138XXXXXXX),由于这个sql语句试图获取phone字段内容,而phone又是敏感表字段,则可认为该条数据库访问数据是意图访问敏感数据的。该过程无需对phone的全部内容进行扫描即可得知是否在访问敏感数据。[0064] 本发明,通过该方法,无需对字段内容做全扫描,仅需根据是否带有敏感表字段的敏感表目录或某列敏感表字段即可确认是否访问了敏感数据。[0065] 在一个可选的实施方式中,所述敏感表目录的获取包括:[0066] S10521.实时监听所述消息队列,获取所述虚拟表;[0067] S10522.根据预设敏感数据规则和算法判断所述虚拟表的字段是否为敏感表字段,若是,根据所述敏感表字段建立敏感表目录;[0068] 在一个可选的实施方式中,例如:获取了100条phone的数据,根据预设敏感数据规则和算法发现有80条满足电话号码的规则,那可以认为phone这个字段是敏感表字段;根据所述敏感表字段建立敏感表目录。[0069] S10523.将所述敏感表目录发送至所述消息队列。[0070] 在一个可选的实施方式中,实时更新所述敏感表目录,并将其发送至消息队列。[0071] 图4是本发明实施例提供的一种数据库审计装置的结构示意图,如图4所示,所述装置包括:[0072] 获取单元201,用于获取所有访问数据;其中,所述访问数据包括:IP地址和端口;[0073] 在一个可选的实施方式中,获取所有的访问数据,例如:http、ftp、smp、pop3、数据库访问数据。[0074] 第一识别单元202,用于将所述所有访问数据的特征值与预设特征值进行匹配,若匹配得分低于第一预设阈值时,通过流量解析器将未匹配成功的所述访问数据遍历,识别出数据库访问数据以及相对应的数据库数据类别;反之,认为匹配成功,得到数据库访问数据以及相对应的数据库数据类别;[0075] 在一个可选的实施方式中,将所有的访问数据的特征值与预设特征值进行匹配,例如:一个访问数据符合数据库访问数据的预设种类的特征值,我们认为该访问数据是数据库访问数据的概率为80%(即第一预设阈值),将所有的访问数据分别与上述数据库访问数据的预设种类的特征值进行匹配,若匹配成功,则认为匹配得分达到或超过所述第一预设阈值,就认为该访问数据为数据库访问数据并且能够得到相对应的数据库类别,反之,若匹配得分低于所述第一预设阈值,则再将该访问数据通过流量解析器进行遍历,识别出是否是数据库访问数据,若是,识别出相对应的数据库类别。[0076] 例如:postgresql数据库访问数据,其application_name、is_superuser为其特征值,当一个访问数据符合postgresql数据库访问数据的这两个特征值时,就认为该访问数据是postgresql数据库访问数据的概率为80%。[0077] 整合单元203,用于将所有的所述数据库数据类别存储整合,得到数据库信息表;[0078] 在一个可选的实施方式中,当所有的数据库数据类别都获取后,将其存储整合,得到一个数据库信息表,以便于后续调用。[0079] 第二识别单元204,用于根据所述IP地址、所述端口和所述数据库信息表识别后续获取的数据库访问数据,得到相对应的数据库数据类别;[0080] 在一个可选的实施方式中,对于后续获取的数据库访问数据,可直接根据该数据的IP地址、端口信息,比对上述得到的数据库信息表,直接识别出是否是数据库访问数据,并得到相对应的数据库数据类别。特别的,对于一个新的数据库访问数据(即该数据的IP地址、端口信息都是不存在数据库信息表中的),可将该访问数据通过特征匹配以及流量解析器进行遍历,识别出是否是数据库访问数据,若是,识别出相对应的数据库数据类别。[0081] 判断单元205,用于对所述数据库访问数据进行解析,并根据获取的敏感表目录判断解析后的所述数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0082] 在一个可选的实施方式中,对上述得到的数据库访问数据进行解析,将解析后的所述数据库访问数据与获取的敏感数据发现系统中的敏感表目录进行对比,判断该数据库访问数据是否为敏感目录,若是,就为所述数据库访问数据打上敏感标签。反之,对所述数据库访问数据不打敏感标签,并判断该数据库访问数据是否超过样本检测数量,若没有超过,将该数据库访问数据作为样本发送给敏感数据发现系统。具体的,例如,敏感数据发现系统需要100条id的数据作为样本进行检测是否是敏感数据。如果目前已经送出去了100条id的数据,那么就不需要再将101条id的数据作为样本送出给敏感数据发现系统。反之,若没有超过,继续将其作为样本送出给敏感数据发现系统。[0083] 本发明中,通过对获取的所有访问数据进行特征匹配,以及将未匹配成功的所述访问数据通过流量解析器进行遍历,可自动识别出数据库访问数据,在保证效率的同时,实现了自动部署,无需人工配置。[0084] 在一个可选的实施方式中,所述第一识别单元202包括:将同一所述IP地址和端口的所述未匹配成功的访问数据,根据预设访问数据数量依次送入到每类所述流量解析器中进行解析,直至解析成功率超过第二预设阈值时,则认为匹配上了该类流量解析器,得到对应的数据库访问数据以及该类流量解析器相对应的数据库数据类别。[0085] 在一个可选的实施方式中,将同一所述IP地址和端口的所述未匹配成功的访问数据,根据预设访问数据数量依次送入到每类所述流量解析器中进行解析,例如,根据IP地址和端口将连续的10条或者20条或者30条访问数据依次送入到一个mysql解析器中,若都能正确解析出来,则足以证明该访问数据和mysql解析器是匹配的,并且同时得到mysql解析器相对应的mysql数据库(数据库数据类别);否则,则送入下一个流量解析器中,例如oracle解析器中,若都能正确解析出来,则足以证明该访问数据和oracle解析器是匹配的,并且同时得到oracle解析器相对应的oracle数据库(数据库数据类别);以此类推,直至找到了最匹配的流量解析器。[0086] 特别的,若所有类的流量解析器都不匹配,则认为该访问数据不是数据库访问数据。[0087] 需要说明的是,所述连续的10条或者20条或者30条访问数据,只是本实施方式的一个示例,其只是为了更好的对本实施例进行说明,所以并不能以此作为对本发明的限制。[0088] 在一个可选的实施方式中,图5是本发明实施例提供的判断单元的结构示意图,如图5所示,所述判断单元205包括:[0089] 解析子单元2051,用于根据所述数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,得到数据库会话信息;其中,所述数据库会话信息包括:登录信息、sql语句(结构化查询语言)、结果集、所述sql语句访问的数据库、表名和字段名;[0090] 在一个可选的实施方式中,当识别出数据库访问数据以及相对应的数据库数据类别后,根据数据库数据类别相对应的数据库解析模块,对该类的每条数据库访问数据进行解析,例如:若识别出数据库数据类别为mysql数据库,则使用相对应的mysql数据库解析模块对该mysql数据库访问数据进行解析,解析出数据库会话信息,包括:登录信息(用户名、访问数据库名称、访问工具)、sql语句(结构化查询语言)、结果集、所述sql语句访问的数据库、表名和字段名。[0091] 还原子单元2052,用于根据数据库表的粒度或数据库表字段名的粒度,对所述数据库会话信息进行数据还原,得到虚拟表;以及将所述虚拟表作为样本数据,发送给消息队列;[0092] 在一个可选的实施方式中,对解析出的sql语句(结构化查询语言)、结果集、所述sql语句访问的数据库、表名和字段名,按照数据库表的粒度或数据库表字段名的粒度进行数据还原,得到虚拟表。[0093] 例如:sql为:selectid,phonefromstafflimit3;[0094] 结果集为:42068119951202094513714653433[0095] 42068119951101220218923456778[0096] 52058818881022234512345678921[0097] (i)按照数据库表的粒度还原虚拟表,表名staff:[0098]id phone420681199512020945 13714653433420681199511012202 18923456778520588188810222345 12345678921[0099] (ii)按照数据库表字段名的粒度还原虚拟表,有两个虚拟表列(字段名);[0100] 1.表名staff,字段名id:[0101]id420681199512020945420681199511012202520588188810222345[0102] 2.表名staff,字段名phone:[0103]phone137146534331892345677812345678921[0104] 将上述虚拟表作为样本数据,发送给消息队列。[0105] 判断子单元2053,用于将所述sql语句访问的数据库、表名、字段名与所述获取的敏感表目录对比,判断对应的数据库访问数据是否为敏感数据,若是,为所述数据库访问数据打敏感标签。[0106] 在一个可选的实施方式中,将该phone字段与敏感表目录对比,判断敏感表目录中是否有phone这个敏感表字段,若是,则判定对应的数据库访问数据(mysql数据库)为敏感数据,并打上敏感标签。[0107] 本发明,通过该方法,无需对字段内容做全扫描,仅需根据是否带有敏感表字段的敏感表目录或某列敏感表字段即可确认是否访问了敏感数据。[0108] 在一个可选的实施方式中,所述获取的敏感表目录包括:[0109] 实时监听所述消息队列,获取所述虚拟表;[0110] 根据预设敏感数据规则和算法判断所述虚拟表的字段是否为敏感表字段,若是,根据所述敏感表字段建立敏感表目录;[0111] 在一个可选的实施方式中,例如:获取了100条phone的数据,根据预设敏感数据规则和算法发现有80条满足电话号码的规则,那可以认为phone这个字段是敏感表字段;根据所述敏感表字段建立敏感表目录。[0112] 将所述敏感表目录发送至所述消息队列。[0113] 在一个可选的实施方式中,实时更新所述敏感表目录,并将其发送至消息队列。[0114] 本发明还提供了一种数据库审计系统,包括上述的数据库审计装置。[0115] 本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的数据库审计方法。[0116] 上述存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。[0117] 本发明的有益效果:[0118] 本发明提供了一种数据库审计方法,该方法中,通过对获取的所有访问数据进行特征匹配,以及将未匹配成功的所述访问数据通过流量解析器进行遍历,可自动识别出数据库访问数据;并且本申请中,根据敏感表目录判断虚拟表或虚拟表的字段是否为敏感表字段,进而判断对应的数据库访问数据是否为敏感数据,无需对访问数据内容做全扫描,大大提升了敏感数据发现的效率,节省了时间。[0119] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

专利地区:上海

专利申请日期:2021-09-08

专利公开日期:2024-06-18

专利公告号:CN113704825B

电话咨询
读内容
搜本页
回顶部