用于确定对数据库进行操作的白名单的方法和装置转让专利

申请号 : CN201810630607.6

文献号 : CN108804947B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈越

申请人 : 上海点融信息科技有限责任公司

摘要 :

本发明提供了一种用于确定对数据库进行操作的白名单的方法,该方法包括:S1、在预先确定的第一时间间隔内,获取多个第一数据库操作语句;S2、确定与多个第一数据库操作语句相对应的多个数据库操作语句模型;S3、基于多个数据库操作语句模型确定数据库操作语句模型组,其中,数据库操作语句模型组包括由多个数据库操作语句模型形成的至少一类数据库操作语句模型;S4、确定至少一类数据库操作语句模型在第一时间间隔内的出现次数,进而确定与数据库操作语句模型组相关联的白名单。采用本发明提供的方法可以发现潜在的内鬼等高隐蔽的安全问题,通过构建白名单可以节省大量系统资源,不必全部流量都要通过规则引擎的检测。

权利要求 :

1.一种用于确定对数据库进行操作的白名单的方法,所述方法包括:S1、在预先确定的第一时间间隔内,获取多个第一数据库操作语句;

S2、确定与所述多个第一数据库操作语句相对应的多个数据库操作语句模型;

S3、基于所述多个数据库操作语句模型确定数据库操作语句模型组,其中,所述数据库操作语句模型组包括由所述多个数据库操作语句模型形成的至少一类数据库操作语句模型;

S4、确定所述至少一类数据库操作语句模型在所述第一时间间隔内的出现次数,进而通过以下步骤确定与所述数据库操作语句模型组相关联的白名单:将所述至少一类数据库操作语句模型中的每一类数据库操作语句模型在所述第一时间间隔内的出现次数与第一阈值进行比较;

在存在所述第一时间间隔内的出现次数大于所述第一阈值的数据库操作语句模型的情况下,将所述至少一类数据库操作语句模型中在所述第一时间间隔内的出现次数大于所述第一阈值的每一类数据库操作语句模型作为所述白名单的一部分;

在存在所述第一时间间隔内的出现次数小于所述第一阈值的数据库操作语句模型的情况下,将所述至少一类数据库操作语句模型中在所述第一时间间隔内的出现次数小于所述第一阈值的每一类数据库操作语句模型作为灰名单的一部分,以供在第二时间间隔内从中选出可归入所述白名单的数据库操作语句模型。

2.根据权利要求1所述的方法,其中,所述步骤S4中确定与所述数据库操作语句模型组相关联的白名单的步骤还包括:将所述灰名单中的每一类数据库操作语句模型在所述第二时间间隔内的出现次数与第二阈值进行比较并且确定所述灰名单中的每一类数据库操作语句模型是否规律性出现;

在存在所述第二时间间隔内的出现次数大于所述第二阈值并且规律性出现的数据库操作语句模型的情况下,将所述灰名单中在所述第二时间间隔内的出现次数大于所述第二阈值并且规律性出现的每一类数据库操作语句模型作为所述白名单的一部分;

其中,所述第二时间间隔大于所述第一时间间隔。

3.根据权利要求1或2中任一项所述的方法,还包括:

获取第二数据库操作语句;

确定与所述第二数据库操作语句相对应的第二数据库操作语句模型;

在所述第二数据库操作语句模型不属于所述白名单并且通过规则引擎确定所述第二数据库操作语句模型异常的情况下,输出告警信息。

4.根据权利要求3所述的方法,还包括:

在所述第二数据库操作语句模型不属于所述白名单并且通过规则引擎确定所述第二数据库操作语句模型正常的情况下,确定所述第二数据库操作语句模型在第三时间间隔内的出现次数是否小于第三阈值;

在所述第二数据库操作语句模型在所述第三时间间隔内的出现次数小于所述第三阈值并且TCP连接下所述第二数据库操作语句模型异常的情况下,输出告警信息。

5.根据权利要求4所述的方法,还包括:

在所述第二数据库操作语句模型在所述第三时间间隔内的出现次数大于第四阈值的情况下,将所述第二数据库操作语句模型添加到所述白名单中,其中,所述第四阈值大于所述第三阈值。

6.根据权利要求4所述的方法,还包括:

在所述第二数据库操作语句模型在所述第三时间间隔内的出现次数大于所述第三阈值并且小于第四阈值的情况下,确定所述第二数据库操作语句模型在第四时间间隔内的出现次数是否大于第五阈值并且是否规律性出现;

在所述第二数据库操作语句模型在所述第四时间间隔内的出现次数大于所述第五阈值并且规律性出现的情况下,将所述第二数据库操作语句模型添加到所述白名单中。

7.一种用于确定对数据库进行操作的白名单的装置,所述装置包括:处理器;以及

存储器,其用于存储指令,当所述指令被执行时使得所述处理器执行以下操作:在预先确定的第一时间间隔内,获取多个第一数据库操作语句;

确定与所述多个第一数据库操作语句相对应的多个数据库操作语句模型;

基于所述多个数据库操作语句模型确定数据库操作语句模型组,其中,所述数据库操作语句模型组包括由所述多个数据库操作语句模型形成的至少一类数据库操作语句模型;

确定所述至少一类数据库操作语句模型在所述第一时间间隔内的出现次数,进而执行以下操作以确定与所述数据库操作语句模型组相关联的白名单:将所述至少一类数据库操作语句模型中的每一类数据库操作语句模型在所述第一时间间隔内的出现次数与第一阈值进行比较;

在存在所述第一时间间隔内的出现次数大于所述第一阈值的数据库操作语句模型的情况下,将所述至少一类数据库操作语句模型中在所述第一时间间隔内的出现次数大于所述第一阈值的每一类数据库操作语句模型作为所述白名单的一部分;

在存在所述第一时间间隔内的出现次数小于所述第一阈值的数据库操作语句模型的情况下,将所述至少一类数据库操作语句模型中在所述第一时间间隔内的出现次数小于所述第一阈值的每一类数据库操作语句模型作为灰名单的一部分,以供在第二时间间隔内从中选出可归入所述白名单的数据库操作语句模型。

8.根据权利要求7所述的装置,其中,当所述指令被执行时使得所述处理器还执行以下操作:将所述灰名单中的每一类数据库操作语句模型在所述第二时间间隔内的出现次数与第二阈值进行比较并且确定所述灰名单中的每一类数据库操作语句模型是否规律性出现;

在存在所述第二时间间隔内的出现次数大于所述第二阈值并且规律性出现的数据库操作语句模型的情况下,将所述灰名单中在所述第二时间间隔内的出现次数大于所述第二阈值并且规律性出现的每一类数据库操作语句模型作为所述白名单的一部分;

其中,所述第二时间间隔大于所述第一时间间隔。

9.根据权利要求7或8中任一项所述的装置,当所述指令被执行时使得所述处理器还执行以下操作:获取第二数据库操作语句;

确定与所述第二数据库操作语句相对应的第二数据库操作语句模型;

在所述第二数据库操作语句模型不属于所述白名单并且通过规则引擎确定所述第二数据库操作语句模型异常的情况下,输出告警信息。

10.根据权利要求9所述的装置,当所述指令被执行时使得所述处理器还执行以下操作:在所述第二数据库操作语句模型不属于所述白名单并且通过规则引擎确定所述第二数据库操作语句模型正常的情况下,确定所述第二数据库操作语句模型在第三时间间隔内的出现次数是否小于第三阈值;

在所述第二数据库操作语句模型在所述第三时间间隔内的出现次数小于所述第三阈值并且TCP连接下所述第二数据库操作语句模型异常的情况下,输出告警信息。

11.根据权利要求10所述的装置,当所述指令被执行时使得所述处理器还执行以下操作:在所述第二数据库操作语句模型在所述第三时间间隔内的出现次数大于第四阈值的情况下,将所述第二数据库操作语句模型添加到所述白名单中,其中,所述第四阈值大于所述第三阈值。

12.根据权利要求10所述的装置,当所述指令被执行时使得所述处理器还执行以下操作:在所述第二数据库操作语句模型在所述第三时间间隔内的出现次数大于所述第三阈值并且小于第四阈值的情况下,确定所述第二数据库操作语句模型在第四时间间隔内的出现次数是否大于第五阈值并且是否规律性出现;

在所述第二数据库操作语句模型在所述第四时间间隔内的出现次数大于所述第五阈值并且规律性出现的情况下,将所述第二数据库操作语句模型添加到所述白名单中。

13.一种计算机可读存储介质,所述存储介质包括指令,当所述指令被执行时,所述计算机的处理器执行权利要求1-6中任一项所述的方法。

说明书 :

用于确定对数据库进行操作的白名单的方法和装置

技术领域

[0001] 本发明的实施例涉及网络安全,尤其涉及用于确定对数据库进行操作的白名单的方法、装置及计算机可读存储介质。

背景技术

[0002] 现有的数据库审计、IDS(Intrusion Detection Systems,入侵检测系统)、IPS(Intrusion Prevention System,入侵防御系统)产品往往是通过规则、或类似手段来防止黑客攻击,并且大多专注于防范黑客的SQL注入攻击,这些方式首先会有被黑客绕过的可能性,其次也存在无法发现内鬼或黑客内网渗透后直连数据库操作等行为(与正常业务SQL很相似,且无SQL注入特征),从而产生安全隐患。
[0003] 因此,亟需一种能够准确确定对数据库进行操作的白名单的方法,以便于较好地对恶意操作行为进行识别,从而对数据库做好安全防护。

发明内容

[0004] 针对上述问题以及其他潜在的技术问题,本发明实施例的一方面提供了一种用于确定对数据库进行操作的白名单的方法,所述方法包括:S1、在预先确定的第一时间间隔内,获取多个第一数据库操作语句;S2、确定与所述多个第一数据库操作语句相对应的多个数据库操作语句模型;S3、基于所述多个数据库操作语句模型确定数据库操作语句模型组,其中,所述数据库操作语句模型组包括由所述多个数据库操作语句模型形成的至少一类数据库操作语句模型;S4、确定所述至少一类数据库操作语句模型在所述第一时间间隔内的出现次数,进而确定与所述数据库操作语句模型组相关联的白名单。
[0005] 本发明另一方面还提供了一种用于确定对数据库进行操作的白名单的装置,所述装置包括:处理器;以及存储器,其用于存储指令,当所述指令被执行时使得所述处理器执行以下操作:在预先确定的第一时间间隔内,获取多个第一数据库操作语句;确定与所述多个第一数据库操作语句相对应的多个数据库操作语句模型;基于所述多个数据库操作语句模型确定数据库操作语句模型组,其中,所述数据库操作语句模型组包括由所述多个数据库操作语句模型形成的至少一类数据库操作语句模型;确定所述至少一类数据库操作语句模型在所述第一时间间隔内的出现次数,进而确定与所述数据库操作语句模型组相关联的白名单。
[0006] 本发明另一方面还提供了一种计算机可读存储介质,所述存储介质包括指令,当所述指令被执行时,所述计算机的处理器执行用于确定对数据库进行操作的白名单的方法。
[0007] 采用本发明提供的用于确定对数据库进行操作的白名单的方法可以发现潜在的内鬼等高隐蔽的安全问题,通过构建白名单可以节省大量系统资源,不必全部流量都要通过规则引擎的检测。

附图说明

[0008] 图1是根据本发明的实施例的学习阶段中用于确定对数据库进行操作的白名单的方法的流程图;
[0009] 图2是根据本发明的学习阶段中确定对数据库进行操作的白名单的方法的一个实施例的流程图;
[0010] 图3是根据本发明的学习阶段结束后用于确定对数据库进行操作的白名单的方法的一个实施例的流程图;
[0011] 图4是根据本发明的实施例的用于确定对数据库进行操作的白名单的装置的示意图。

具体实施方式

[0012] 以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
[0013] 本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。术语“基于”是“至少部分地基于"。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”,等等。
[0014] 对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。
[0015] 本文以对数据库进行操作的SQL语句的应用场景为例对本发明进行说明。应理解的是,本发明还可以适用于其它合适的应用场景。
[0016] 术语解释:
[0017] SQL语句模型:即在对SQL语句解析获得AST(抽象语法树)后除去全部变量并且统一大小写,统一空格、换行符得到的SQL语句,如SQL语句为:select*from users where id=1,则SQL语句模型为:select*from users where id=?。
[0018] 灰名单:暂时不在白名单中,但经过一段时间的观察,其中具有规律性的SQL语句模型可以筛选出作为白名单的SQL语句模型的集合。
[0019] 在任何业务场景下的一段时间内出现的SQL语句模型的数量应该是一定的,假设公司网址只用于用户登录这一个业务,那么在生产环境下只存在一种SQL,但当出现了SQL注入或者出现了有人为脱库等攻击行为时会出现明显异常的频率低且未知的SQL语句模型,实际应用中的情况又远比只有登录应用场景复杂,本文为了解决这类安全隐患,针对以下两类SQL语句模型进行白名单构建:第一类、频率较高的SQL语句模型,例如,可以简单量化为每小时或者每10十分钟都会出现大于1次的SQL语句模型;第二类、频率低但是规律性出现的SQL语句模型,这里的规律性出现是指有规律地在某一相同时间出现,例如,每周三都会出现或者每周都出现。
[0020] 以下结合附图对本发明进行详细说明。
[0021] 图1示出了根据本发明的实施例的学习阶段中用于确定对数据库进行操作的白名单的方法的流程图。
[0022] 步骤S101:在预先确定的第一时间间隔内,获取多个第一数据库操作语句。例如,第一时间间隔为学习周期7天,第一数据库操作语句为SQL语句。应理解的是,第一时间间隔可以根据需要进行调整。
[0023] 步骤S102:确定与多个第一数据库操作语句相对应的多个数据库操作语句模型。例如,针对步骤S101中获取的多个SQL语句,确定与该多个SQL语句相对应的多个SQL语句模型。
[0024] 步骤S103:基于所述多个数据库操作语句模型确定数据库操作语句模型组,其中,所述数据库操作语句模型组包括由所述多个数据库操作语句模型形成的至少一类数据库操作语句模型。例如,根据步骤S102中确定的多个SQL语句模型所属的类别,确定出与该多个SQL语句模型相对应的至少一类SQL语句模型,并由该至少一类SQL语句模型形成SQL语句模型组。
[0025] 步骤S104:确定至少一类数据库操作语句模型在第一时间间隔内的出现次数,进而确定与数据库操作语句模型组相关联的白名单。例如,统计步骤S103中确定的至少一类SQL语句模型在第一时间间隔内的出现次数,然后根据至少一类SQL语句模型的出现次数筛选出相应的SQL语句模型作为白名单。
[0026] 通过以上描述的图1所示的方法可以发现潜在的内鬼等高隐蔽的安全问题,通过构建白名单可以节省大量系统资源,不必全部流量都要通过规则引擎的检测。
[0027] 图2是根据本发明的学习阶段中用于确定对数据库进行操作的白名单的方法的一个实施例的流程图。
[0028] 步骤S201:在预定时间间隔1中,接收多个SQL语句。在这里,预定时间间隔1例如为7天,应理解,预定时间间隔1根据需要进行调整。
[0029] 步骤S202:确定与步骤S201中接收到的多个SQL语句中的每个SQL语句相对应的多个SQL语句模型。
[0030] 步骤S203:计算多个SQL语句模型中每一类SQL语句模型在预定时间间隔1内的出现次数。应理解,这里计算SQL语句模型的出现次数,可以有多种方式,例如,可以计算每10分钟的出现次数,可以计算每小时的出现次数,也可以计算每天的出现次数,还可以计算每周的出现次数等等,具体根据需要进行选择。
[0031] 步骤S204:判断与每一类SQL语句模型相对应的出现次数是否大于阈值1,如果大于阈值1(例如,在一个实施例中,某类SQL语句模型在学习周期内平均每小时出现的次数大于1万次,而阈值1为平均每小时出现的次数为1000次,那么该类SQL语句模型的出现次数大于阈值1),则执行步骤S205,否则执行步骤S206。
[0032] 步骤S205:将多个SQL语句模型中在预定时间间隔1内出现次数大于阈值1的SQL语句模型作为白名单。
[0033] 步骤S206:将多个SQL语句模型中在预定时间间隔1内出现次数小于阈值1的SQL语句模型作为灰名单。
[0034] 步骤S207:计算灰名单中的每一类SQL语句模型在预定时间间隔2内的出现次数。应理解,这里的预定时间间隔2大于预定时间间隔1,例如,预定时间间隔2为14天,预定时间间隔2可以根据需要进行调整。
[0035] 步骤S208:判断灰名单中的每一类SQL语句模型在预定时间间隔2内的出现次数是否大于阈值2并且规律性出现(这里的规律性出现是指有规律地在某一相同时间出现,例如,每周一出现),如果大于阈值2并且在规律性出现,则将在预定时间间隔2内出现次数大于阈值2并且规律性出现的SQL语句模型添加到步骤S205所确定的白名单中,从而更新白名单,否则,不做处理。应理解,这里的阈值2小于阈值1,并且阈值1和阈值2均可根据实际情况进行调整。
[0036] 以上描述的图2所示的方法可以通过观察或学习历史的业务SQL将第一类和第二类的SQL语句模型筛选出来作为白名单,通过该白名单可以对无论是SQL注入(会导致原有的SQL语句模型结构发生变化)还是内鬼或黑客内网渗透后直连数据库操作(大量操作不属于白名单)的明显异常行为进行检测,从而发现安全隐患。
[0037] 图3示出了根据本发明的学习阶段结束后用于确定对数据库进行操作的白名单的方法的一个实施例的流程图。
[0038] 步骤S301:接收单个SQL语句。
[0039] 步骤S302:确定与接收到的单个SQL语句相对应的SQL语句模型。
[0040] 步骤S303:判断所确定的SQL语句模型是否属于学习阶段所确定的白名单,如果所确定的SQL语句模型不属于学习阶段所确定的白名单,则执行步骤S304,否则,不做处理,即白名单还是原来学习阶段确定的白名单。
[0041] 步骤S304:通过规则引擎(Rule Engine)判断所确定的SQL语句模型是否异常,如果异常,则执行步骤S305,否则执行步骤S306。
[0042] 步骤S305:输出告警信息。
[0043] 步骤S306:计算所确定的SQL语句模型在预定时间间隔3内的出现次数。
[0044] 步骤S307:判断计算出的SQL语句模型在预定时间间隔3内的出现次数是否小于阈值3,如果是,则执行步骤S308,否则,执行步骤S309。
[0045] 步骤S308:判断TCP连接下SQL语句模型是否异常,如果异常,则执行步骤S305,否则,不做处理。
[0046] 步骤S309:判断计算出的SQL语句模型在预定时间间隔3内的出现次数是否大于阈值4,如果是,则执行步骤S310,否则执行步骤S311。应理解,这里的阈值4大于阈值3。
[0047] 步骤S310:将所确定的SQL语句模型添加到学习阶段所确定的白名单中,从而更新白名单。
[0048] 步骤S311:将所确定的SQL语句模型作为灰名单。
[0049] 步骤S312:计算所确定的SQL语句模型在预定时间间隔4内的出现次数。应理解,这里的预定时间间隔4大于预定时间间隔3。
[0050] 步骤S313:判断步骤S312中计算出的所确定的SQL语句模型在预定时间间隔4内的出现次数是否大于阈值5并且所确定的SQL语句模型是否规律性出现(这里的规律性出现是指有规律性地在某一相同时间出现,例如,每周一出现,应该理解,这里提到的规律性出现与步骤S208中提到的规律性出现可以具有相同的规律也可以具有不同的规律),如果大于阈值5并且在规律性出现,则执行步骤S310。在另一个实施方式中,如果计算出的所确定的SQL语句模型在预定时间间隔4内的出现次数不满足大于阈值5并且在规律性出现,则重复步骤S308(图3中未示出)。
[0051] 通过以上描述的图3所示的方法,能够自适应地更新白名单从而保证安全检测的准确性。
[0052] 图4示出了根据本发明的实施例的用于对确定数据库进行操作的白名单的装置的示意图。装置400可以包括:存储器401和耦合到存储器401的处理器402。存储器401用于存储指令,处理器402被配置为基于存储器401存储的指令来实现针对图1至图3所描述的方法的步骤中的任何步骤中的一个或多个。
[0053] 如图4所示,装置400还可以包括通信接口403,用于与其它设备进行信息交互。此外,装置400还可以包括总线404,存储器401、处理器402和通信接口403通过总线404来彼此进行通信。
[0054] 存储器401可以包括易失性存储器,也可以包括非易失性存储器。处理器402可以是中央处理器(CPU)、微控制器、专用集成电路(ASIC)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、或是被配置为实现本发明的实施例的一个或多个集成电路。
[0055] 替代地,上述的基于区块链的跨链通信方法能够通过计算机程序产品,即有形的计算机可读存储介质来体现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0056] 需要注意的是,以上列举的仅为本发明的具体实施例,显然本发明不限于以上实施例,随之有着许多的类似变化。本领域的技术人员如果从本发明公开的内容直接导出或联想到的所有变形,均应属于本发明的保护范围。