一种基于flink流式处理的SOM数据库动态风险感知的实现方法与流程

文档序号:32663823发布日期:2022-12-24 00:22阅读:24来源:国知局
一种基于flink流式处理的som数据库动态风险感知的实现方法
技术领域
:1.本发明涉及数据库
技术领域
:,具体而言,涉及一种基于flink流式处理的som数据库动态风险感知的实现方法。
背景技术
::2.目前,关于判断数据库风险访问行为的现有技术存在以下缺陷:3.1)数据库的风险访问行为判断标准不一:每个公司有每个公司的数据库风险访问判断方法,在一个公司属于风险行为的数据库访问行为,可能在别的公司就属于正常的数据库访问行为。4.2)数据库风险访问行为的判断更多的依赖于运维人员的“经验”:数据库的风险访问行为,很多情况下都依赖于运维人员对于过往访问行为的经验总结,不同运维人员的经验还有区别和差异。5.3)新的风险访问行为判断滞后:基于过往的运维人员经验判断可以实现一些风险访问行为的判断和拦截,但是对于新的从未出现过的一些风险访问行为的拦截滞后,很有可能会造成不可挽回的损失。因此,通过一种自适应判断方法来实现实时对数据库风险访问行为的分析和处理具有十分重要的意义。技术实现要素:6.本发明的目的在于提供一种基于flink流式处理的som数据库动态风险感知的实现方法,用以改善现有技术中无法提供一种自适应判断方法来实时对数据库风险访问行为进行分析和处理的问题。7.本发明的实施例是这样实现的:8.第一方面,本技术实施例提供一种基于flink流式处理的som数据库动态风险感知的实现方法,其包括如下步骤:9.获取sql请求报文数据,并对sql请求报文数据进行解析,以抽取数据库访问相关日志,同时对数据库访问相关日志进行压缩存放;10.利用java程序对压缩存放的数据库访问相关日志解析后,放入kafka;11.利用flink流式处理从kafka中抽取多个访问数据组,并对各个访问数据组进行计算,得到各种维度的访问值,其中,任一访问数据组包含至少一个访问数据;12.将所有访问值发送至som模型中进行分类,得到分类结果;13.根据分类结果,调用对应的告警或者拦截操作。14.在本发明的一些实施例中,上述获取sql请求报文数据,并对sql请求报文数据进行解析,以抽取数据库访问相关日志,同时对数据库访问相关日志进行压缩存放的步骤包括:15.对sql请求报文数据进行分析,根据sql协议确定待解析sql报文;16.基于sql协议,对待解析sql报文进行解析,得到解析后的数据库访问相关日志;17.按照字节码的方式,对数据库访问相关日志进行压缩存放。18.在本发明的一些实施例中,上述利用flink流式处理从kafka中抽取多个访问数据组,并对各个访问数据组进行计算,得到各种维度的访问值的步骤包括:19.从kafka中抽取一个访问数据组,利用flink框架的内置函数计算该访问数据组对应的各种维度的访问值;20.利用flink的滑动窗口,按照预设间隔时间再次从kafka中抽取访问数据组,以计算预设时间段内的各种维度的访问值。21.在本发明的一些实施例中,上述从kafka中抽取一个访问数据组,利用flink框架的内置函数计算该访问数据组对应的各种维度的访问值的步骤包括:22.基于checkpoint机制,存放该访问数据组对应的各种维度的访问值后,再次从kafka中抽取访问数据组。23.在本发明的一些实施例中,上述flink框架的内置函数至少包括count函数和sum函数中的一种或多种。24.在本发明的一些实施例中,上述利用flink流式处理从kafka中抽取多个访问数据组的步骤包括:25.flink通过拆分的方式从kafka中抽取访问数据组。26.在本发明的一些实施例中,上述对数据库访问相关日志进行压缩存放的步骤包括:27.将数据库访问相关日志压缩放入预置文件中,当预置文件的大小达到预设大小时,重新创建一个新的文件。28.在本发明的一些实施例中,上述访问值至少包括select请求数量、update请求数量、alter请求数量、insert请求数量、delete请求数量、每一个客户端mac地址的sql请求数量和每一个客户端ip的请求数量中的一种或多种。29.第二方面,本技术实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当一个或多个程序被处理器执行时,实现如上述第一方面中任一项的方法。30.第三方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。31.相对于现有技术,本发明的实施例至少具有如下优点或有益效果:32.本发明提供一种基于flink流式处理的som数据库动态风险感知的实现方法,其包括如下步骤:获取sql请求报文数据,并对sql请求报文数据进行解析,以抽取数据库访问相关日志,同时对数据库访问相关日志进行压缩存放,压缩存放的数据库访问相关日志减少了硬盘占用空间。利用java程序对压缩存放的数据库访问相关日志解析后,放入kafka。利用flink流式处理从kafka中抽取多个访问数据组,并对各个访问数据组进行计算,得到各种维度的访问值,其中,任一访问数据组包含至少一个访问数据。flink流式处理对数据库的访问行为,当有新的数据访问情况发生时,可以及时通过计算得到相关数据,在实时计算相关维度的访问数据值的同时,也避免了对于新的从未出现过的一些风险访问行为的拦截滞后的情况。将所有访问值发送至som模型中进行分类,得到分类结果。根据分类结果,调用对应的告警或者拦截操作。进而针对som模型的分类结果,调用相关的告警或者拦截操作来降低或者阻止对数据库的风险访问行为。从而通过som模型接收flink计算完成的数据,以实时判断数据库的访问情况是否有异动,实现了实时对数据库的访问情况进行跟踪和探查的目的,并通过som模型及时把最新的分类结果映射出来,一旦发现有异常访问行为,则迅速生成处置方案并进行风险处理,以达到对异常访问行为进行告警或者拦截的效果,从而将对数据库的影响降低到最低。附图说明33.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。34.图1为本发明实施例提供的一种基于flink流式处理的som数据库动态风险感知的实现方法的流程图;35.图2为本发明实施例提供的一种系统运行结构图;36.图3为本发明实施例提供的一种sql请求报文数据的示意图;37.图4为本发明实施例提供的一种分析sql请求报文数据的示意图;38.图5为本发明实施例提供的一种电子设备的示意性结构框图;39.图6为本发明实施例提供的一种从kafka中抽取的访问数据组的示意图;40.图7为本发明实施例提供的一种som模型直观展示图。41.图标:101-存储器;102-处理器;103-通信接口。具体实施方式42.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。43.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。44.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。45.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,若出现术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,若出现由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。46.在本技术的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。47.在本技术的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本技术中的具体含义。48.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。49.实施例50.请参照图1和图2,图1所示为本发明实施例提供的一种基于flink流式处理的som数据库动态风险感知的实现方法的流程图,图2所示为本发明实施例提供的一种系统运行结构图。本技术实施例提供一种基于flink流式处理的som数据库动态风险感知的实现方法,其包括如下步骤:51.s110:获取sql请求报文数据,并对sql请求报文数据进行解析,以抽取数据库访问相关日志,同时对数据库访问相关日志进行压缩存放;52.具体的,c语言本身的库函数中有报文捕获函数,可以利用报文捕获函数获取sql请求报文数据,请参照图3,图3所示为本发明实施例提供的一种sql请求报文数据的示意图。然后可以通过c语言开发的脚本分析sql请求报文数据中每部分表示的意义,例如:以太头ethh、网络头iph、传输层tcph,请参照图4,图4所示为本发明实施例提供的一种分析sql请求报文数据的示意图。基于不同的协议在报文里的特定位置的内容不同来判断sql请求报文数据是否是需要解析的sql报文,如果是需要解析的sql报文,则通过对应的sql协议把sql请求报文数据解析成需要的sql语句、客户端端口、客户端ip、客户端mac地址、数据库mac地址、数据库ip和节点ip、数据库接口和数据库类型等等数据,解析后的数据即为上述数据库访问相关日志。53.示例性的,上述数据库访问相关日志的数据格式如下:54.时间|策略|数据库名称|数据库类型|数据库ip|sql语句|sql类型|客户端mac|客户端ip55.2022-08-1017:14:10|8.40-orcle|oracl|172.16.8.40|select*frompersons|select|40-8d-5c-cf56.2022-08-1012:09:03|2.30-mysql|mysql|172.16.2.30|droptableusers|drop|37-2f-5c-e357.2022-08-1010:06:30|1.23-hive|hive|172.16.1.22|selectnamefromdept|select|24-2d-2f-cc58.……59.用户可以把上述数据库访问相关日志按照字节码的方式压缩放入文件中(比如放入/data0/vs-base/archive/data0/0.n文件),当.n文件大小达到指定大小后把0.n改为0.s,并重新创建一个新的.n文件(比如/data0/vs-base/archive/data0/1.n)。压缩存放的目的是为了减少硬盘占用空间。60.s120:利用java程序对压缩存放的数据库访问相关日志解析后,放入kafka;61.示例性的,java程序可以用线程池的方式将上述.n压缩文件或者.s压缩文件解析后放入kafka中。62.s130:利用flink流式处理从kafka中抽取多个访问数据组,并对各个访问数据组进行计算,得到各种维度的访问值,其中,任一访问数据组包含至少一个访问数据;63.其中,flink流式处理是基于checkpoint机制(即把计算结果和计算状态存放到比如硬盘或者hdfs或者其他位置上)来实现循环迭代计算的。64.具体的,请参照图6,图6所示为本发明实施例提供的一种从kafka中抽取的访问数据组的示意图。当flink从kafka中抽取一个访问数据组之后,利用flink框架本身提供的count和sum等内置函数,计算该访问数据组中的select请求数量、update请求数量、alter请求数量、insert请求数量、delete请求数量、每一个客户端mac地址的sql请求数量、每一个客户端ip的请求数量、高风险的sql的数量、低风险的sql数量、每个客户端mac的高风险的sql数量等等需要分析的维度的数据。当本次计算完成后,flink再继续从kafka抽取新的访问数据组进行下一次操作和计算。在再次抽取访问数据组的过程中,可以利用flink的滑动窗口机制(slidingtimewindow),按照预设间隔时间(例如5秒)从kafka中抽取访问数据组,从而在计算访问数据组对应的各个维度的数据后,可以形成一连串的基于计算得到的所有维度的数据,并把这些数据作为训练som模型的源数据,发送至som模型。则利用flink流式处理数据库的访问行为时,利用flink的滑动窗口机制可以实现当有新的数据访问情况发生时,可以及时通过计算得到相关数据的目的,则在实时计算相关维度的访问数据值的同时,也避免了对于新的从未出现过的一些风险访问行为的拦截滞后的情况。65.s140:将所有访问值发送至som模型中进行分类,得到分类结果;66.其中,上述som模型可以由python语言开发。具体的,利用som模型的自组织特性对所有访问值进行分类。som自组织映射,即无监督人工神经网络,运用竞争学习策略,依靠神经元之间相互竞争逐步优化网络。且运用近邻关系函数来维持输出空间的拓扑结构。67.示例性的,通过s130计算得到的各种维度的访问值如下:68.数据集1是以一个小时内统计的数据为准,数据集1:日期|低风险数量|中风险数量|高风险数量|极危风险sql数量;69.数据集1的数据如下:70.2022-08-1010:00:01|20|30|20|1071.2022-08-1011:00:00|10|20|30|572.2022-08-1012:00:00|5|10|8|373.……74.数据集2(以一个小时内,单个数据库mac地址接收到的风险访问sql数量),数据集2的数据如下:75.2022-08-1218:00:01|40-8d-5c-cf|20|30|20|1076.2022-08-1219:00:00|40-8d-5c-cf|10|20|30|577.……78.数据集3:(以一个小时内,单个数据库mac地址接收到的外部访问类型数量),数据集3的数据格式为:时间|mac地址|select请求数量|update请求数量|insert请求数量|alert请求数量;79.数据集3的数据如下:80.2022-08-1218:00:01|40-8d-5c-cf|20|30|20|1081.2022-08-1219:00:00|40-8d-5c-cf|10|20|30|582.……83.数据集4:(以一个小时内,单个客户端ip发送的访问类型数量)84.数据集4的数据如下:85.2022-08-1218:00:01|172.16.2.41f|20|30|20|1086.2022-08-1219:00:00|172.16.2.42|10|20|30|587.……88.基于上述数据集1至数据集4,som模型的分类过程如下:把每一个数据集的一列数据的值作为一个维度来看,假如有一个6列的数据集,则可以把这个数据集看做一个6维的数据集。上述数据集中的每一行数据可以具体到一个6维空间的一个点,如果数据集有n行数据,那么就会有n个点,在多维空间上,这些点之间有些点挨着近,有些点挨着远,这时候就可以用som模型进行分类,把一些聚在一块的相近的点作为一类看待,这样就有了分类的概念。请参照图7,图7所示为本发明实施例提供的一种som模型直观展示图。som模型用低维目标空间的点来表示高维空间中的点,并且尽可能保持对应点的距离和邻近关系。89.s150:根据分类结果,调用对应的告警或者拦截操作。90.具体的,针对som模型的分类结果,调用相关的告警或者拦截操作来降低或者阻止对数据库的风险访问行为。从而通过som模型及时接收flink计算完成的数据,以实时判断数据库的访问情况是否有异动,实现了实时对数据库的访问情况进行跟踪和探查的目的,并通过som模型及时把最新的分类结果映射出来,一旦发现有异常访问行为,则迅速生成处置方案并进行风险处理,以达到对异常访问行为进行告警或者拦截的效果,从而将对数据库的影响降低到最低。91.例如,基于上述数据集3,分析出40-8d-5c-cf这个mac地址的select请求数量、update请求数量和delete请求数量在一天中的波动量基本一致。当某一天该mac地址的这3种请求数量发生异常抖动时,可以通过下发一个限制访问该mac地址的命令(即下发一段文字到某个文件中,解析工具在解析数据包文件的时候会读取下发的文件中的信息),这样解析工具可以把应该发给该mac地址的请求扣下来不发给该mac地址,从而实现保护该mac地址上的数据库服务的功能。92.在本实施例的一些实施方式中,上述获取sql请求报文数据,并对sql请求报文数据进行解析,以抽取数据库访问相关日志,同时对数据库访问相关日志进行压缩存放的步骤包括:93.对sql请求报文数据进行分析,根据sql协议确定待解析sql报文;94.基于sql协议,对待解析sql报文进行解析,得到解析后的数据库访问相关日志;95.按照字节码的方式,对数据库访问相关日志进行压缩存放。96.具体的,基于不同的协议在报文里的特定位置的内容不同来判断sql请求报文数据是否是需要解析的sql报文,如果是需要解析的sql报文,则通过对应的sql协议把sql请求报文数据解析成需要的sql语句、客户端端口、客户端ip、客户端mac地址、数据库mac地址、数据库ip和节点ip、数据库接口和数据库类型等等数据,解析后的数据即为上述数据库访问相关日志。然后按照字节码的方式,对数据库访问相关日志进行压缩存放,压缩存放的数据库访问相关日志可以大大减少硬盘占用空间。97.在本实施例的一些实施方式中,上述利用flink流式处理从kafka中抽取多个访问数据组,并对各个访问数据组进行计算,得到各种维度的访问值的步骤包括:98.从kafka中抽取一个访问数据组,利用flink框架的内置函数计算该访问数据组对应的各种维度的访问值;99.利用flink的滑动窗口,按照预设间隔时间再次从kafka中抽取访问数据组,以计算预设时间段内的各种维度的访问值。100.其中,上述预设间隔时间可以是5秒钟,上述预设时间段可以是1个小时。101.示例性的,利用flink的滑动窗口,每隔5秒钟从kafka中抽取访问数据组,并计算该访问数据组的各个维度的访问值。然后统计最近一个小时的各种维度的所有访问值,也就得到了最近一个小时的数据库访问情况。102.在本实施例的一些实施方式中,上述从kafka中抽取一个访问数据组,利用flink框架的内置函数计算该访问数据组对应的各种维度的访问值的步骤包括:103.基于checkpoint机制,存放该访问数据组对应的各种维度的访问值后,再次从kafka中抽取访问数据组。从而实现循环迭代计算的目的。104.在本实施例的一些实施方式中,上述flink框架的内置函数至少包括count函数和sum函数中的一种或多种。105.在本实施例的一些实施方式中,上述利用flink流式处理从kafka中抽取多个访问数据组的步骤包括:106.flink通过拆分的方式从kafka中抽取访问数据组。107.具体的,flink可以通过拆分(比如基于逗号拆分数据)从kafka中拿到访问数据组。108.在本实施例的一些实施方式中,上述对数据库访问相关日志进行压缩存放的步骤包括:109.将数据库访问相关日志压缩放入预置文件中,当预置文件的大小达到预设大小时,重新创建一个新的文件。110.在本实施例的一些实施方式中,上述访问值至少包括select请求数量、update请求数量、alter请求数量、insert请求数量、delete请求数量、每一个客户端mac地址的sql请求数量和每一个客户端ip的请求数量中的一种或多种。111.请参照图5,图5为本技术实施例提供的电子设备的一种示意性结构框图。电子设备包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。112.其中,存储器101可以是但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。113.处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。114.可以理解,图5所示的结构仅为示意,电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。115.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。116.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。117.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。118.以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。119.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其它的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1