一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于响应式的网络流量高速分析方法及系统与流程

2022-03-09 05:18:39 来源:中国专利 TAG:
1.本发明涉及网络数据分析
技术领域
:,尤其是涉及一种基于响应式的网络流量高速分析方法及系统。
背景技术
::2.随着信息化进程、数字化经济的高速发展,网络流量数据量呈井喷式增长,已经具备海量规模、多样数据类型、低价值密度等特征。从资源方面来看,网络流量是企业和社会关注的重要战略资源,网络流量中蕴含的信息对于数据安全、网络安全、企业发展至关重要,因此有必要对网络流量进行全面分析,确保海量的网络流量成为宝贵的数据资产。3.网络流量分析可以使用flink、spark等热门的大数据分析引擎,但是使用此类工具存在两个弊端。第一方面,编程模型过于复杂,难以制定编程规范规则,对数据分析人员有较高要求,需要具备java、scala或python等语言编程基础、熟悉乃至精通相关框架、具备代码调优等能力。其次,flink、spark等框架是重量级的架构,对硬件要求高,且对网络流量分析而言,存在功能冗余。技术实现要素:4.本发明主要是解决现有技术中网络流量分析存在编程模型复杂,对分析人员能力要求高,对硬件要求高,且功能冗余的问题,提供了一种基于响应式的网络流量高速分析方法及系统。5.本发明的上述技术问题主要是通过下述技术方案得以解决的:一种基于响应式的网络流量高速分析方法,包括以下步骤:s1.预先设置各种数据类型的算子,根据对数据的处理逻辑建立映射规则和计算规则,所述映射规则和计算规则分别包括存储指定数据处理逻辑的第一操作元集和第二操作元集;第一操作元集由多个第一操作元构成,每一个第一操作元表示对数据进行如何操作的处理逻辑。同样第二操作元集由多个第二操作元构成,每一个第二操作元表示对数据进行如何操作的处理逻辑。6.s2.从网络流量中读取设定类型的数据,对每个类型数据加载相应映射规则,根据第一操作元集调用相应的算子对数据进行规范化转换,输出映射数据结果;本步骤旨在对数据进行清洗、预处理减少数据量,只保留需要的数据,提升数据处理速率。7.s3.根据映射规则加载与之相匹配的计算规则,根据算子类型对第二操作元集进行数据缓存、分组排序和顺序优化,生成策略集;本步骤将计算规则进行规范化描述,形成规范化操作元,以便于后续计算使用。根据计算规则的字段生成策略集,策略集包含目标映射数据版本号、数据处理逻辑、结果数据表、结果输出字段等关键信息,通过数据缓存层面对数据进行处理,提升处理效率,在生成策略集的过程中,对计算规则的所有操作元进行分类和重新排序,达到最优执行顺序,避免多次遍历数据导致时间复杂度过高。8.s4.根据策略集调用相应的算子对映射数据结果进行分析处理,分析处理结果进行过滤、类型转换,并合并为键值对;s5.数据入库,根据分析处理结果进行敏感数据报警。9.本发明操作简单,采用映射规则和计算规则为数据处理具象体现,对分析人员要求低,通过对原始数据进行过滤清洗,对策略集进行规范化和优化,减少了处理的数据量,提高了计算分析效率。10.作为一种优选方案,所述的预先设置各种数据类型的算子,包括:根据数据操作的不同方式,对算子进行分类,并通过映射规则和计算规则的字段进行标识。将分类后的算子通过映射规则和计算规则的操作类型字段进行标识。11.作为一种优选方案,所述的根据对数据的处理逻辑建立映射规则和计算规则,包括:为每种类型数据建立映射规则和计算规则,映射规则和计算规则都包括有通用字段和数据操作字段,数据操作字段分别对应第一操作元集和第二操作元集;第一操作元由多个构成具体操作逻辑的字段构成,包括选择指定数据,对数据进行分类标识,选择与数据分类对应的算子,结合数据分类和算子设定阈值,处理后命名,处理后保存类型;一个映射规则里的数字操作字段对应一个第一操作元集,第一操作元集里包括多个第一操作元,第一操作元为对指定数据的处理逻辑,第一操作元内容包括被操作数据名称srcname、操作类型optiontype、操作方法optioncode、操作阈值optionvalue、输出数据名toname、输出数据类型totype字段。一个操作方法optioncode对应一个算子。12.第二操作元由多个构成具体操作逻辑的字段构成,包括选择指定数据,对数据进行分类标识,选择与数据分类对应的算子,结合数据分类和算子设定阈值,选择操作步骤次序,处理后命名,处理后赋值。13.同样一个计算规则里的数字操作字段对应一个第二操作元集,第二操作元集里包括多个第二操作元,第二操作元为对指定数据的处理逻辑,第二操作元内容包括操作键值srcname、操作类型optiontype、操作方法optioncode、操作阈值optionvalue、操作步骤optionstep、输出数据名toname、赋值操作tovalue字段。14.作为一种优选方案,所述的从网络流量中读取设定类型的数据,包括:根据预设的读取数据类型,从消息队列读取相应的格式化数据,将读取到的数据解析成键值对。15.读取相应的json格式化数据,读取到的数据记为array[srting],数组中每一个元素都是一个json字符串,通过fastjson将字符串解析为键值对map[srting,any],最终获得的数据记为array[map[srting,any]]。[0016]作为一种优选方案,所述的对每个类型数据加载相应映射规则,包括:对加载的映射规则字段进行判断,判断映射规则状态是否不为下线,以及操作数据类型是否与读取数据类型匹配,若都满足则将读取的数据加载该映射规则,生成目标映射数据,目标映射数据与映射规则为一对一关系。本方案中对读取的数据只加载上线、测试状态,以及数据类型相匹配的映射规则。且目标映射数据与映射规则关系为一对一,即一个数据对应一个映射规则,若一个数据具有多个符合条件的映射规则,则该数据分别加载一个映射规则,形成多个目标映射数据。[0017]作为一种优选方案,所述的根据第一操作元对数据进行规范化转换,输出映射数据结果,包括:根据第一操作元选择指定数据,对数据进行分类标识,选择与数据分类对应的操作方法,根据数据分类和操作方法调用底层函数对指定进行处理,处理后数据重命名并根据设定输出数据类型放到键值域或值域,最终得到包括键值域和值域的二元元组。根据第一操作元分别对数据进行处理,在分析系统底层,预设生成有若干静态函数,这些函数根据数据分类optiontype分类,一个操作方法optioncode代表一个函数,某些函数需要结合阈值optionvalue调用,根据optiontype、optioncode调用底层函数对指定数据即srcname对应的数据进行处理,处理后的数据被重命名为toname并根据totype放到键值域或值域,最终生成映射数据结果,即为二元元组array[map[srting,any],map[srting,any]],二元元组存储了两个map[srting,any],前者为键值域,后者为值域,有了键值域和值域,方便对数据分组统计,且结果会打上映射规则version标签。[0018]作为一种优选方案,所述的根据映射规则加载与之相匹配的计算规则,包括:对加载的计算规则字段进行判断,判断计算规则数据版本与映射规则数据版本是否相等,以及计算规则状态是否不为下线,若都满足则加载该计算规则,目标映射数据与计算规则为一对一关系。[0019]本方案中对映射规则数据只加载上线、测试状态,以及数据版本相同的计算规则。且计算规则数据与映射规则数据关系为一对一,一个映射规则数据对应一个计算规则,若一个映射规则数据具有多个符合条件的计算规则,则该数据分别加载一个计算规则,形成多个加载计算规则的映射规则数据。[0020]作为一种优选方案,所述的根据算子类型对第二操作元进行数据缓存、分组排序和顺序优化,生成策略集,包括:第二操作元包括操作类型、操作步骤字段;判断第二操作元的操作类型是否为数据库匹配类,若是,通过操作阈值字段对数据库数据进行缓存;本操作对数据进行缓存,缓存可以大幅提升程序执行效率。[0021]根据操作步骤类型,对第二操作元进行分组,并根据操作步骤值大小进行升序排列;本操作对第二操作元按步骤进行分组并进行升序排列。[0022]对于同一操作步骤第二操作元中,判断是否有操作类型为过滤类,若是将对应第二操作元放在同一操作步骤的首位执行;本操作对第二操作元的执行顺序进行优化,采用漏斗式处理。[0023]第二操作元经过优化后形成策略集。[0024]作为一种优选方案,所述步骤s3具体包括:获取一个映射数据结果和对应的策略集,加载策略集的第一组第二操作元,对映射数据结果进行处理,包括根据第二操作元对数据进行分类标识,选择与数据分类对应的操作方法,根据数据分类和操作方法调用底层函数,传入操作阈值和赋值操作参数,对操作键值对应的数据进行处理,获得第一步结果;加载策略集的第二组第二操作元,对第一部结果进行处理,获得第二步结果;对第一步结果进行处理的步骤同对映射数据结果进行处理的步骤,后续对上一步结果进行处理的步骤也相同。都是更加加载的第二操作元,对数据进行分类标识,选择与数据分类对应的操作方法,根据数据分类和操作方法调用底层函数,传入操作阈值和赋值操作参数,对操作键值对应的数据进行处理。[0025]按顺序加载各第二操作元对上一步结果进行处理,直到加载策略集最后一组第二操作元,对上一步结果进行处理,得到分析处理结果;根据计算规则中设定的保存数据和类型,对分析处理进行过滤,保留保存数据对应的数据,将数据转换至对应类型;本步骤中进行数据过滤和类型转换,计算规则包括attribute字段,设定要保留的数据以及类型,根据计算规则attribute字段对分析处理结果数据进行过滤,每条数据中保留attribute中存在的数据,并根据attribute中的类型对保留的数据进行类型转换。[0026]将处理后的映射数据结构转换为键值对,进行数据入库。本步骤对数据结构进行转换,将处理后的二元元组array[(map[string,any],map[string,any])]转换为array[map[string,any]]。[0027]作为一种优选方案,步骤s4具体包括:经过计算规则处理后的数据包含源ip和敏感标签,判断是否同一流量数据中包含多个敏感标签,或同一源ip单日内接收敏感标签数据超过设定次数,若是发出警告信息。[0028]一种基于响应式的网络流量高速分析系统,包括,数据规范模块,包括信息读取单元和映射规则单元;信息读取单元,根据预设读取数据类型设置对应数量信息读取单元,每个信息读取单元从消息队列中读取一种类型的数据,从外部数据库获取映射规则,对读取的数据加载对应的映射规则,映射规则包括多个存储指定数据处理逻辑的第一操作元集;映射规则单元,根据加载映射规则数据设置对应数量映射规则单元,每个映射规则单元接收一个加载映射规则的数据,根据第一操作元集调用相应的算子对数据进行规范化转换,输出映射数据结果;策略解析模块,从外部数据库获取计算规则,根据映射规则单元的数据加载对应的计算规则,计算规则包括多个对存储指定数据处理逻辑的第二操作元集,根据算子类型对第二操作元进行数据缓存、分组排序和顺序优化,生成策略集;计算模块,包括检测单元;检测单元,接收映射数据结果和策略集,根据策略集对映射数据结果进行分析处理,分析处理结果进行过滤、类型转换,并合并为键值对,数据入库;报警模块,根据分析处理结果进行敏感数据报警。[0029]因此,本发明的优点是:操作简单,采用映射规则和计算规则为数据处理具象体现,对分析人员要求低,通过对原始数据进行过滤清洗,对策略集进行规范化和优化,减少了处理的数据量,提高了计算分析效率。附图说明[0030]图1是本发明方法的一种流程示意图。具体实施方式[0031]下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。[0032]实施例1:本实施例一种基于响应式的网络流量高速分析系统,如图1所示,包括,外部数据库,分别以字符串形式存储有映射规则和计算规则;映射规则和计算规则分别包括存储指定数据处理逻辑的第一操作元集和第二操作元集;算子池,预先设置有对各种类型数据处理的算子,算子由映射规则和计算规则的第一操作元集和第二操作员集进行调用;数据规范模块,包括信息读取单元和映射规则单元,图中分别以readactor和mappingactor表示;信息读取单元,根据预设读取数据类型设置对应数量信息读取单元,每个信息读取单元从消息队列中读取一种类型的数据,从外部数据库获取映射规则,对读取的数据加载对应的映射规则,映射规则包括多个存储指定数据处理逻辑的第一操作元集;映射规则单元,根据加载映射规则数据设置对应数量映射规则单元,每个映射规则单元接收一个加载映射规则的数据,根据第一操作元集调用相应的算子对数据进行规范化转换,输出映射数据结果;策略解析模块,从外部数据库获取计算规则,根据映射规则单元的数据加载对应的计算规则,计算规则包括多个对存储指定数据处理逻辑的第二操作元,根据算子类型对第二操作元集进行数据缓存、分组排序和顺序优化,生成策略集;计算模块,包括检测单元,图中以detectionactor表示;检测单元,接收映射数据结果和策略集,根据策略集对映射数据结果进行分析处理,分析处理结果进行过滤、类型转换,并合并为键值对,数据入库;报警模块,根据分析处理结果进行敏感数据报警。[0033]实施例2:本实施例一种基于响应式的网络流量高速分析方法,基于格式化的网络流量数据、scala语言、多并发编程模型akka技术,旨在利用行为分析技术、群体行为分析技术、协同攻击分析技术、用户画像技术、可视化技术等,针对大流量及超大流量网络空间中存在的敏感数据泄露、越权访问等安全事件以及网络运行中的态势问题进行全流量、全方位地安全分析。[0034]如图1所示,方法包括以下步骤:s1.预先设置各种数据类型的算子,根据对数据的处理逻辑建立映射规则和计算规则,所述映射规则和计算规则分别包括存储指定数据处理逻辑的第一操作元集和第二操作元集;预先设置各种数据类型的算子,包括根据数据操作的不同方式,对算子进行分类,并通过映射规则和计算规则的数据类型字段进行标识,以供操作元进行调用。[0035]对数据操作会存在不同的方式,比如过滤、计算,其中如果对n条数据进行过滤,那么最终会得到m(《=n)条数数据,如果对n条数据进行计算,那么最终还是会得到n条数据,因此为了提升数据处理速度、规范数据处理方式,对数据操作方式进行了分类并通过optiontype进行标识,对应于映射规则算子具体分类如下:取值类:选择原始数据中的有效字段进行取值,保留。[0036]过滤类:对数据进行进行判断,满足条件的数据才会被保存;计算类:对数据进行简单操作,比如加减乘除,截取字符串等操作;ip转换类:网络流量分析务必会涉及到大量对ip的操作;特殊类:在数据分析的过程中,往往需要验证数据的准确性,因此需要全量保留数据,针对于全量保留历史数据等的特殊操作就在本类中实现。[0037]计算规则相比于映射阶段,数据处理规则更为复杂,不光要考虑数据量的减少,还要考虑单条数据的处理结果放到键值域还是值域,因此计算规则的分类更加复杂。对应于计算规则算子具体分类为:计算类:简单计算,加减乘除取余,字符串操作,时间转换(时间戳转换为日期)等一系列简单操作;过滤类:通常用于减少数据量,处理前后的数量关系为n-m,m≤n;ip转换类:同映射规则;赋值类:包含直接赋值以及根据条件判断进行赋值两类操作;统计类:统计算子是对集合进行操作,例如求总和、数量、最大最小值、平均值、去重、交并补等操作,对数据分组之后就会产生数据集合,对集合进行统计操作一般就是计算分析的最终结果了;数据库匹配类:数据分析中需要对数据进行维度信息补全,例如判定ip所属国家、地区、城市;对数据进行分析,如通过关键字分析ua中蕴含操作系统信息、通过正则分析payload中数据类型;转换类:为了数据分析中的分组统计,分析系统中每一条数据都有键值域与值域,对数据所在域进行转换,可将数据从键值域放到值域,或者从值域放到键值域;分组类:对当前批次的所有数据进行统一分组操作,处理前后的数量关系为n-m,m≤n,键值域在分组操作前后保持不变,值域中的数据都会变为集合;特殊操作类:保存全量数据等特殊操作。[0038]所述的根据对数据的处理逻辑建立映射规则和计算规则,包括:为每种类型数据建立映射规则和计算规则,映射规则和计算规则都包括有通用字段和数据操作字段,数据操作字段分别对应第一操作元集和第二操作元集;映射规则和计算规则的具体内容在后面具体进行说明。[0039]第一操作元由多个构成具体操作逻辑的字段构成,包括选择指定数据,对数据进行分类标识,选择与数据分类对应的算子,结合数据分类和算子设定阈值,处理后命名,处理后保存类型;第一操作元内容包括被操作数据名称srcname、操作类型optiontype、操作方法optioncode、操作阈值optionvalue、输出数据名toname、输出数据类型totype字段。一个操作方法optioncode对应一个算子。[0040]第二操作元由多个构成具体操作逻辑的字段构成,包括选择指定数据,对数据进行分类标识,选择与数据分类对应的算子,结合数据分类和算子设定阈值,选择操作步骤次序,处理后命名,处理后赋值。第二操作元内容包括操作键值srcname、操作类型optiontype、操作方法optioncode、操作阈值optionvalue、操作步骤optionstep、输出数据名toname、赋值操作tovalue字段。[0041]s2.从网络流量中读取设定类型的数据,对每个类型数据加载相应映射规则,根据第一操作元集调用相应的算子对数据进行规范化转换,输出映射数据结果;该步骤相应的在数据规范模块内进行。[0042]从网络流量中读取设定类型的数据,对每个类型数据加载相应映射规则,映射规则包括多个存储指定数据处理逻辑的第一操作元,根据第一操作元集对数据进行规范化转换,输出映射数据结果;从网络流量中读取设定类型的数据包括根据预设的读取数据类型。在系统开始运行后,主程序基于akka模型创建信息读取单元readactor,readactor数量由预设读取数据类型数量一致,本实施例中以配置文件配置读取http、ftp数据为例,则建立两个readactor,分别负责读取http、ftp的数据。[0043]readactor从消息队列读取相应的json格式化数据,读取到的数据记为array[srting],数组中每一个元素都是一个json字符串。将读取到的数据解析成键值对,具体是通过fastjson将字符串解析为键值对map[srting,any],最终获得的数据记为array[map[srting,any]]。[0044]对每个类型数据加载相应映射规则包括:readactor加载外部数据库中的映射规则,生成目标映射数据,并根据映射规则、基于akka模型创建相应的映射规则单元mappingactor,readactor将目标映射数据传输给mappingactor,目标映射数据与映射规则为一对一关系。被加载的映射规则要满足两个条件,判断映射规则状态是否不为下线,以及操作数据类型是否与读取数据类型匹配,若都满足则将读取的数据加载该映射规则,映射规则具体表现为:rulestatus不为0(0:下线,1:上线,2:测试),datatype与readactor读取的数据类型匹配。[0045]映射规则为系统数据处理逻辑的具象体现,后面进行具体说明,映射规则包括多个存储指定数据处理逻辑的第一操作元集,根据第一操作元集对数据进行规范化转换,输出映射数据结果;一个映射规则里的操作操作字段对应一组第一操作元集,第一操作元集包括多个第一操作元,第一操作元为对指定数据的处理逻辑,第一操作元内容包括被操作数据名称srcname、操作类型optiontype、操作方法optioncode、操作阈值optionvalue、输出数据名toname、输出数据类型totype字段。根据第一操作元选择指定数据,对数据进行分类标识,选择与数据分类对应的操作方法;在分析系统底层,预设生成有若干静态函数,这些函数根据数据分类optiontype分类,一个操作方法optioncode代表一个函数,某些函数需要结合阈值optionvalue调用;根据数据分类optiontype和操作方法optioncode调用底层函数对指定数据即srcname对应的数据进行处理,处理后数据重命名toname并根据设定输出数据类型totype放到键值域或值域,最终得到包括键值域和值域的二元元组array[map[srting,any],map[srting,any]],即为映射数据结果。二元元组存储了两个map[srting,any],前者为键值域,后者为值域,有了键值域和值域,方便对数据分组统计,且结果会打上映射规则version标签。[0046]s3.根据映射规则加载与之相匹配的计算规则,根据算子类型对第二操作元集进行数据缓存、分组排序和顺序优化,生成策略集;该步骤相应的在策略解析模块内进行。[0047]根据映射规则加载与之相匹配的计算规则,具体包括mappingactor加载存在外部数据库中的计算规则,被加载的计算规则要满足两个条件。采用对加载的计算规则字段进行判断,判断计算规则数据版本与映射规则数据版本是否相等,以及计算规则状态是否不为下线,若都满足则加载该映射规则,映射规则数据与计算规则为一对一关系。满足条件的计算规则具体表现为:计算规则dataversion与mappingactor映射规则的version相等,rulestatus不为0(0:下线,1:上线,2:测试)。[0048]同样计算规则也为系统数据处理逻辑的具象体现,后面进行具体说明。计算规则包括多个对存储指定数据处理逻辑的第二操作元集,第二操作元集包括多个第二操作元,第二操作元为对指定数据的处理逻辑,第二操作元包括操作键值srcname、操作类型optiontype、操作方法optioncode、操作阈值optionvalue、操作步骤optionstep、输出数据名toname、赋值操作tovalue字段。根据算子类型对第二操作元进行数据缓存、分组排序和顺序优化,生成策略集;具体过程包括:判断计算规则option字段中第二操作元中操作类型是否为数据库匹配类(optiontype:5),若是,通过操作阈值字段optionvalue对数据库数据进行缓存看,缓存可以大幅提升程序执行效率。[0049]根据操作步骤optionstep类型,对第二操作元进行分组,并根据操作步骤值大小进行升序排列;对于同一操作步骤optionstep第二操作元中,判断是否有操作类型为过滤类(optiontype:1),若是将对应第二操作元放在同一操作步骤的首位执行;第二操作元经过优化后形成策略集。[0050]s4.根据策略集调用相应的算子对映射数据结果进行分析处理,分析处理结果进行过滤、类型转换,并合并为键值对;该步骤相应的在计算模块内进行。[0051]根据策略集对映射数据结果进行分析处理,分析处理结果进行过滤、类型转换,并合并为键值对;具体包括:mappingactor根据计算规则、基于akka模型创建对应检测单元detectionactor,通过akka内部的通信机制将策略集、映射数据结果传给detectionactor,detectionactor通过scala语言原生方法fold对每个映射数据结果和对应的策略集数据进行处理,处理逻辑:加载策略集的第一组第二操作元,对映射数据结果进行处理,包括根据第二操作元对数据进行分类标识,选择与数据分类对应的操作方法,根据数据分类optiontype和操作方法optioncode调用底层函数,传入操作阈值optionvalue和赋值操作tovalue参数,对操作键值srcname对应的数据进行处理,获得第一步结果;加载策略集的第二组第二操作元,对第一部结果进行处理,获得第二步结果;对第一步结果进行处理的步骤同对映射数据结果进行处理的步骤,后续对上一步结果进行处理的步骤也相同。[0052]按顺序加载各第二操作元对上一步结果进行处理,直到加载策略集最后一组第二操作元,对上一步结果进行处理,得到分析处理结果;根据计算规则中设定的保存数据和类型,对分析处理进行过滤,保留保存数据对应的数据,将数据转换至对应类型;计算规则包括attribute字段,设定要保留的数据以及类型,根据计算规则attribute字段对分析处理结果数据进行过滤,每条数据中保留attribute中存在的数据,并根据attribute中的类型对保留的数据进行类型转换。[0053]数据结构转换,将处理后的映射数据结构转换为键值对。具体表现为将处理后的二元元组array[(map[string,any],map[string,any])]转换为array[map[string,any]]。,进行数据入库,将数据写入计算规则的tablename表中。[0054]s4.数据入库,根据分析处理结果进行敏感数据报警;该步骤相应的在报警模块内进行。过程包括:经过计算规则处理后的数据包含源ip和敏感标签,判断是否同一流量数据中包含多个敏感标签,或同一源ip单日内接收敏感标签数据超过设定次数,若是发出警告信息。[0055]以下对映射规则和计算规则形成进行具体说明。映射规则和计算规则是系统数据处理逻辑的具象体现,使用者可以不了解scala语言、akka系统,通过映射规则与计算规则对数据进行计算分析。分析系统会将规则转换为对应的执行逻辑并运行,并且通过规则的上下线,动态控制程序中计算任务的启停。[0056]网络流量分析的核心逻辑是对数据的分组分类、聚合分析,因此在整个数据流转过程中,要把数据设计为两个域,一个域为键值域,存放分组分类的维度信息,另一个域为值域,存放待计算、聚合的数据。另一方面,数据分析存在多个数据源,因此数据字段和类型均不固定,数据存储应能够满足灵活、多变的特性。结合以上两方面的考虑,本发明将数据流转过程中的数据类型设定为array[(map[string,any],map[string,any])],每一条数据为数组array的一个元素,元素为二元元组,二元元组由两个map组成,第一个map为键值域,第二个map为值域。映射规则和计算规则也都围绕着这样的数据结构,对数据进行处理。[0057]映射规则和计算规则都可以分为两个部分,通用字段和数据操作字段。通用字段实现对规则进行标识、数据标识等功能,数据操作字段实具体操作。[0058]针对于网络流量分析系统而言,原始数据是json字符串,同一协议的网络流量都有相同的字段。针对于某一流量进行数据分析时,并不需要其所有的字段,且在数据分析时减少单条数据的数据量有利于提升分析效率,因此设计数据规范模块和映射规则,将原始数据进行过滤、清洗,只保留需要的字段。同时,考虑到并不是对所有的协议的所有流量进行分析,数据规范模块及映射规则也应支持读取指定协议流量并根据指定数据对流量进行过滤的功能。[0059]对于计算规则和计算模块而言,数据输入是数据规范模块和映射规则的输出,因此计算规则和映射规则之间需要能够相互匹配,因此设计version字段,实现规则标识、匹配功能。计算规则最终的结果要通过插入、更新等方式入库,因此有inserttype、tablename等字段。[0060]数据操作字段。对数据进行操作时,首先要指定待操作数据的字段,因此有srcname字段。其次,操作方法optioncode层面,因为功能、数据处理前后类型、处理前后数据量等方面存在很多不同,所以为了方便优化、维护、拓展,应将操作方法optioncode划分为不同的操作种optiontype。例如,从待处理数据类型方面进行考虑,对集合类的数据进行操作,输入输出值的关系是一对一的,因此把对集合类的数据操作整体划分为统计类,统计类包含求取最大最小值、求取集合长度、集合去重等操作方法;从处理前后数据量考虑,如果要对数据进行过滤,那么处理过后数据量是会减少的,因此增加过滤类,过滤类包括等值判断、非等值判断、字符串包含、字符串等于判断等操作方法;从功能而言,针对于数据维度信息补全,通常要引入第三方数据库,因此增加数据库匹配类,有等值匹配、非等值匹配、字符串匹配等操作方法。某些操作方法需要指定数据所在域、阈值、判断条件、赋值等信息,因此映射规则、计算规则中分别加入optionvalue、toname、tovalue、totype等字段。[0061]截止目前,映射规则有5类optiontype,20余个optioncode,计算规则有9类optiontype,120余个optioncode。无论是在映射规则还是计算规则中,optioncode都是原子性操作,不可拆分。[0062]已有的optiontype和optioncode已经能够满足大部分的网络流量分析功能,如果要拓展新功能,那么按照一定的逻辑进行思考、新增并调整底层代码。首先,从数据处理前后的数据类型、数据量等方面进行考虑,找到对应的optiontype,然后在该optiontype下新增optioncode,如果无法找到对应的optiontype,可同时新增optiontype与optioncode。[0063]映射规则,具体表现如表1所示。序号字段名子字段数据类型字段说明备注1rulenameꢀstring规则名称全局唯一,只能是英文字母、数字和下划线组成,最长64个字符。2ruleidꢀstring规则id全局唯一。只能是数字,长度固定为32位。进程内通过uuid生成3rulelevelꢀint规则等级规则等级:0-100,level值越小规则权限越强4rulestatusꢀint规则状态0:下线;1:运行;2:测试5strategyꢀstring规则所属策略规则一级标签,不能为空6moduleꢀstring规则所属功能模块规则二级标签,不能为空7versionꢀstring数据版本与计算规则中数据版本相匹配,例:v1.0.0018datatypeꢀint操作数据类型0:session,1:http,2:smtp,3:ftp,4:dns9optioncountꢀint原子操作数量与optionset内规则数量一致。10optionsetꢀarray原子操作集ꢀꢀꢀsrcnamestring被操作字段名称不能为空,只能由字母和下划线组成,最大为32个字符。ꢀꢀoptiontypestring操作类型ꢀꢀꢀoptioncodestring操作方法ꢀꢀꢀoptionvaluestring阈值ꢀꢀꢀtonamestring输出数据名optiontype为4,填空字符串,其余情况规约同srcname。ꢀꢀtotypeint输出数据类型0:键值域;1:值域[0064]表1其中通用字段rulename、ruleid:规则标识符;rulestatus:标识规则的上下线;strategy、module:标识规则的功能模块,与业务系统对接;version:映射规则版本号,标识经过数据规范模块处理的数据,计算模块会通过此字段将映射数据与策略集进行匹配,将映射数据按照与其对应策略集进行计算分析;datatype:指定操作的数据类型,规则策略模块会根据该字段选取读取的数据类型,datatype为0,则读取session的json格式化数据;数据操作字段optioncount:共有多少个数据操作,即optionset的集合长度;optionset:json数组,数组里面的每一个元素代表对原始数据某个字段进行何种操作;例如:{“srcname”:”timestamp”,optiontype:”0”,optioncode:” ”,”optionvalue”:”10”,toname:”time”,totype:0}srcname:被操作的字段,例如要想对http格式化数据中的srcip,则有:”srcname”:”srcip;toname:数据被处理后的名称,srcip被处理后被命名为为ip,则有:”toname”:”ip”;totype:在大数据分析处理过程中,存在大量的分组统计操作,其中分组必然是以某些数据进行分组的,因此数据结构中设置了两个域,键值域与值域,键值域中的数据通常用于分组,值域中的数据通常会被进行统计操作,因此在数据处理结束之后,要决定将数据放到键值域还是值域,这里0和1分别代表将数据放入键值域还是值域optiontype:对数据操作会存在不同的方式,比如过滤、计算,其中如果对n条数据进行过滤,那么最终会得到m(《=n)条数数据,如果对n条数据进行计算,那么最终还是会得到n条数据,因此为了提升数据处理速度、规范数据处理方式,对数据操作方式进行了分类并通过optiontype进行标识,具体分类如下:取值类:选择原始数据中的有效字段进行取值,保留。此类操作旨在减少单条数据数据量;过滤类:对数据进行进行判断,满足条件的数据才会被保存,此类操作旨在减少数据总量,例如一批数据从10000条数据过滤到只剩1000条数据;计算类:对数据进行简单操作,比如加减乘除,截取字符串等操作;ip转换类:网络流量分析务必会涉及到大量对ip的操作,但是ip通常是字符串类型,大小比较、范围判断、等值判断执行效率都很低且不直观,因此增加此类旨在实现ip格式转换(字符串类型与数值类型的相互转换),提升程序处理效率;特殊类:在数据分析的过程中,往往需要验证数据的准确性,因此需要全量保留数据,针对于全量保留历史数据等的特殊操作就在本类中实现。[0065]optioncode:optiontype是数据操作种类的不同,optioncode是操作方法的不同,例如计算类,optioncode会有 ,-,*,/等不同测操作方法;optionvalue:结合optiontype和optioncode使用,比如optiontype为类,optioncode为” ”,那么阈值就会是数值。[0066]计算规则,具体表现如表2所示。[0067]计算规则模块相对映射规则会有更多复杂的操作,因此会用到一些算法和调优。序号字段名子字段数据类型字段说明备注1rulenameꢀstring规则名称全局(表内)唯一,只能是英文字母、数字和下划线组成,最长64个字符。2ruleidꢀstring规则id全局唯一。只能是数字,长度最大为32位。进程内通过uuid生成3rulelevelꢀint规则等级0-100,level值越小规则权限越强。4rulestatusꢀint规则状态0:下线;1:运行;2:测试5strategyꢀstring规则所属策略规则一级标签,不能为空6moduleꢀstring规则所属功能模块规则二级标签,不能为空7tablenameꢀstring数据结果写入的数据表名只能是英文字母、数字和下划线组成,最长64个字符。8inserttypeꢀstring结果写入表中的方式“insert”“sumupdate”9versionꢀstring分析后的数据版本ꢀ10dataversionꢀstring待分析的数据版本与映射规则中的version对应。11attributeꢀstring规则数据结果的元数据信息ꢀ12optionꢀarray原子操作集合ꢀꢀꢀsrcnamestring操作键值ꢀꢀꢀoptiontypestring操作类别ꢀꢀꢀoptioncodestring操作方法ꢀꢀꢀoptionvaluestring操作阈值ꢀꢀꢀoptionstepint操作步骤ꢀꢀꢀtonamestring操作输出名ꢀꢀꢀtovaluestring赋值操作ꢀ[0068]表2通用字段:rulename、ruleid:规则标识符;rulestatus:标识规则的上下线;strategy、module:标识规则的功能模块,与业务系统对接;tablename:数据最终写入数据库的表名;inserttype:数据入库方式,目前有直接插入与更新两种方式;version:计算规则版本号;dataversion:待处理数据版本号,即映射规则版本号;attribute:最终写入数据库的字段即类型,例如{“srcip”:”string”,”time”:”date”},代表最终写入数据库的有两个字段srcip和time,数据类型分别为string,date。在数据计算过程中,少不了中间变量,通过此举直接对计算结果进行过滤、类型校验,再入库。[0069]数据操作字段:option:json数组,数组里面的每一个元素代表对原始数据某个字段进行何种操作;srcname:被操作的字段,来源于映射结果或数据处理中的中间变量;optionstep:操作步骤,越小的步骤越先执行;toname:操作输出名;optiontype:计算规则相比于映射阶段,数据处理规则更为复杂,不光要考虑数据量的减少,还要考虑单条数据的处理结果放到键值域还是值域,因此计算规则的分类更加复杂。以下具体分类为:计算类:简单计算,加减乘除取余(字段与数值之间length*2,字段与字段之间length/packet),字符串操作,时间转换(时间戳转换为日期)等一系列简单操作,该操作的结果可能作为数据分析中的分组字段,因此放到键值域;过滤类:通常用于减少数据量,处理前后的数量关系为n-m,m≤n,该操作不涉及结果,不考虑存储域;ip转换类:同映射规则,结果放到键值域;赋值类:包含直接赋值以及根据条件判断进行赋值两类操作,该操作的结果也可能作为数据分析中的字段,因此放到键值域;统计类:统计算子是对集合进行操作,例如求总和、数量、最大最小值、平均值、去重、交并补等操作,对数据分组之后就会产生数据集合,对集合进行统计操作一般就是计算分析的最终结果了,因此统计算子的结果放到值域;数据库匹配类:数据分析中需要对数据进行维度信息补全,例如判定ip所属国家、地区、城市;对数据进行分析,如通过关键字分析ua中蕴含操作系统信息、通过正则分析payload中数据类型。此类操作需要大量的参考信息,这些参考信息需要存储在外部介质中,因此开发了此类操作,通过数据库匹配的形式进行维度补全、数据分析。此阶段通常涉及到大维度表的匹配,因此会运用算法、数据结构、多级缓存的方式提升数据处理速度。维度与分析结果通常情况下也是分组的依据,因此结果也应该放在键值域;转换类:如上所述,为了数据分析中的分组统计,分析系统中每一条数据都有键值域与值域,为了字段在值域和键值域中灵活流转,设计了此类操作,该类操作不会产生新的数据,只是对数据所在域进行转换,可将数据从键值域放到值域,或者从值域放到键值域;分组类:该类操作旨在将数据进行分组处理,对当前批次的所有数据进行统一分组操作,处理前后的数量关系为n-m,m≤n,键值域在分组操作前后保持不变,值域中的数据都会变为集合(字段名不变值类型为集合)。此操作不会产生新的数据,整体数据量会减少,键值域不变,值域字段不变数据会被压缩为数据集;特殊操作类:保存全量数据等特殊操作;optioncode:不同optiontype下会有不同的optioncode对数据进行处理,例如数据库匹配类会有:eqgetone——若相等则取一条数据,rangegetone——若在范围内则去一条数据,containsgetall——取出所有包含关键字的数据,以上条件判断均是srcname所对应的值与数据库中指定数据进行匹配;optionvalue、tovalue:配合optiontype、optioncode使用。[0070]下面结合实例对上述步骤进行具体说明。[0071]本方法可以同时加载多套规则,每一套规则代表一个安全事件,下面以“安全事件—对外返回敏感数据”为例进行说明。[0072]如表3和表4所示,其中的代码块1、2分别为对外返回敏感数据的映射规则和计算规则,这两个规则实现了对http流量中responsecontent返回敏感数据的监测功能。[0073]数据规范模块:根据预设配置读取http数据,并加载映射规则;将srcip,dstip,timestamp等字段直接进行取值操作(optiontype:0,optioncode:get),并通过toname赋予不同的变量名,通过totype控制数据最终存储在键值域或是值域;将srcip,dstip从字符串转换为long类型的值(optiontyp:3,optioncode:1),并分别命名为srcip,dstip并存储在键值域中;将ip转换为数值型,方便后续分析使用;得到结果array[(map[string,any],map[string,any])]。[0074]策略解析模块:对外返回敏感数据映射规则的version为v1.7.101,于是相关的mappingactor会在数据库中寻找dataversion为v1.7.101且rulestatus非0的计算规则,如表4中的代码块2;根据计算规则生成策略集;检测到optionstep0是数据库匹配算子(optiontype为5),于是会对数据库white_list_api_analysis_mark_reg(optionvalue)进行缓存;optionstep3是数据库匹配算子,会对white_list_protocol_list进行缓存;对option进行分组、排序。[0075]mappingactor在计算模块中创建detectionactor,detectionactor接收映射数据结果和策略集。[0076]计算模块:optionstep0:将原始数据中的responsecontent与white_list_api_analysis_mark_reg中的regex字段进行正则匹配,若匹配上则获取对应的labelname字段;将获得的所有labelname存储到labelnameofresponse_content中;white_list中存储的regex为敏感数据正则表达式,labelname为敏感标签。[0077]若responsecontent只匹配上了regex:([\\d]|^)(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|71|81|82)\\d{4}(19\\d{2}|20([01][0-9]|2[0-1]))((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9xx]([\\d]|$),则会获取与之对应的labelname:身份证,labelnameofresponse_content为array(“身份证”);optionstep1:求数组labelnameofresponse_content的长度;optionstep2:若数组长度为0代表没有匹配上敏感标签,因此该步骤对没有敏感标签的数据进行过滤,optiontype1代表过滤,过滤条件为数组长度大于0,命中则保留;optionstep3:对riskname,risklevel,evidence等字段进行赋值;通过timetrans操作,把时间戳转换成格式为”yyyy-mm-ddhh:mm:ss”的时间;通过数据库匹配,拿到protocol对应的协议名称,若protocol为6,则对应tcp;对敏感标签数组labelnameofresponse_content进行去重操作,并存储到变量tags中;分析逻辑执行完毕后,得到的结果为array[(map[string,any],map[string,any])],detectionactor会根据attribute对结果进行过滤、类型转换,并合并键值域、值域,最终结果为array[map[string,any]]。[0078]入库的字段为:time,uri,srcip,srcipforshow,dstip,dstipforshow,domain,query,risktype,requestmethod,requestcontent,srcport,dstport,tags,evidence,responsecontent,riskname,risklevel,protocol;数据入库至result_http_security_response_sensitive;数据展示:result_http_security_response_sensitive中的数据即响应体载荷(responsecontent)返回敏感数据的流量信息,最终将通过前端的方式进行展示。[0079]以下为表3:代码块1安全事件对外返回敏感数据—映射规则{"rulename":"http_security_map","rulelevel":0,"ruleid":"2d66deda7c6746328d78e403f8e1bfe7","strategy":"安全事件","datatype":1,"module":"接口安全风险","rulestatus":1,"type":0,"version":"v1.7.101","optioncount":14,"optionset":[{"optiontype":"0","srcname":"timestamp","totype":0,"optioncode":"get","toname":"time","optionvalue":""},{"optiontype":"0","srcname":"srcip","totype":0,"optioncode":"get","toname":"srcipforshow","optionvalue":""},{"optiontype":"0","srcname":"dstip","totype":0,"optioncode":"get","toname":"dstipforshow","optionvalue":""},{"optiontype":"3","srcname":"srcip","totype":0,"optioncode":"1","toname":"srcip","optionvalue":""},{"optiontype":"3","srcname":"dstip","totype":0,"optioncode":"1","toname":"dstip","optionvalue":""},{"optiontype":"0","srcname":"srcport","totype":0,"optioncode":"get","toname":"srcport","optionvalue":""},{"optiontype":"0","srcname":"dstport","totype":0,"optioncode":"get","toname":"dstport","optionvalue":""},{"optiontype":"0","srcname":"request.requri","totype":0,"optioncode":"get","toname":"uri","optionvalue":""},{"optiontype":"0","srcname":"request.reqmethod","totype":0,"optioncode":"get","toname":"requestmethod","optionvalue":""},{"optiontype":"0","srcname":"request.reqquery","totype":0,"optioncode":"get","toname":"query","optionvalue":""},{"optiontype":"0","srcname":"request.host","totype":0,"optioncode":"get","toname":"domain","optionvalue":""},{"optiontype":"0","srcname":"request.content","totype":0,"optioncode":"get","toname":"requestcontent","optionvalue":""},{"optiontype":"0","srcname":"response.content","totype":0,"optioncode":"get","toname":"responsecontent","optionvalue":""},{"optiontype":"0","srcname":"protocol","totype":0,"optioncode":"get","toname":"protocol","optionvalue":""}]}。[0080]以下为表4:代码块2安全事件对外返回敏感数据—计算规则{"rulename":"http_reponse_sensitive_anlz","strategy":"安全事件","module":"接口安全风险对外返回敏感数据","ruleid":"20210803","type":1,"rulestatus":1,"rulelevel":0,"dataversion":"v1.7.101","version":"v1.7.1303","inserttype":"insert","tablename":"result_http_security_response_sensitive","attribute":"{\"time\":\"date\",\"uri\":\"string\",\"srcip\":\"long\",\"srcipforshow\":\"string\",\"dstip\":\"long\",\"dstipforshow\":\"string\",\"domain\":\"string\",\"requestmethod\":\"string\",\"query\":\"string\",\"requestcontent\":\"string\",\"srcport\":\"int\",\"dstport\":\"int\",\"tags\":\"array\",\"evidence\":\"string\",\"responsecontent\":\"string\",\"risktype\":\"string\",\"riskname\":\"string\",\"risklevel\":\"int\",\"protocol\":\"string\"}","option":[{"optiontype":"5","tovalue":"","srcname":"responsecontent","optioncode":"reggetallwithname","toname":"labelnameofresponse_content","optionvalue":"white_list_api_analysis_mark_reg|responsecontent,regex|labelname","optionstep":0},{"optiontype":"4","tovalue":"","srcname":"labelnameofresponse_content","optioncode":"count","toname":"response_contentissensitive","optionvalue":"","optionstep":1},{"optiontype":"1","tovalue":"","srcname":"response_contentissensitive","optioncode":"gt","toname":"","optionvalue":"0","optionstep":2},{"optiontype":"3","tovalue":"","srcname":"","optioncode":"filling","toname":"evidence","optionvalue":"响应体信息","optionstep":3},{"optiontype":"4","tovalue":"","srcname":"labelnameofresponse_content","optioncode":"distinct","toname":"tags","optionvalue":"","optionstep":3},{"optiontype":"3","tovalue":"","srcname":"","optioncode":"filling","toname":"risktype","optionvalue":"接口安全风险类","optionstep":3},{"optiontype":"3","tovalue":"","srcname":"","optioncode":"filling","toname":"risklevel","optionvalue":"1","optionstep":3},{"optiontype":"3","tovalue":"","srcname":"","optioncode":"filling","toname":"riskname","optionvalue":"对外返回敏感数据","optionstep":3},{"optiontype":"0","tovalue":"","srcname":"time","optioncode":"timetrans","toname":"time","optionvalue":"yyyy-mm-ddhh:mm:ss","optionstep":3},{"optiontype":"5","tovalue":"","srcname":"protocol","optioncode":"eqgetonewithname","toname":"protocol","optionvalue":"white_list_protocol_list|protocol,pid|pname","optionstep":3}]}。[0081]本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属
技术领域
:的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。[0082]尽管本文较多地使用了数据规范模块、策略解析模块、计算模块等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献