一种安全数据分析系统技术领域
本申请涉及数据安全技术领域,特别是涉及一种安全数据分析系统。
背景技术
企业定期收集TB(Terabyte,太字节)级的信息安全数据(如,网络事
件、软件应用程序事件,以及人员活动事件),用来作合规性、事后取证分
析、预警等企业事务操作。随着企业启用的事件记录源越来越多,雇用的员
工越来越多,部署的设备越来越多,运行的软件越来越多,信息安全数据还
会继续增长。
在现有的信息安全分析处理中,通常使用特定分析软件,或安全分析人
员自己编写的临时的,零散的处理脚本进行分析处理。但是目前的分析软件
使用自身提供的存储载体来存储数据,造成数据孤岛问题,如ossec(一个
开源的多平台的入侵检测系统)的数据默认只能存mysql(一个关系型数据
库管理系统);而安全分析人员自己编写的临时/零散的处理脚本,往往无法
应对大规模数据,产生误报,预警延迟等问题,甚至是根本无法处理完这些
数据,因此安全功效得不到保证。
随着企业向云架构迁移,并且收集的数据越来越多,所以适时需要一种
新的安全数据分析的装置来解决这样的问题。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至
少部分地解决上述问题的一种安全数据分析系统。
为了解决上述问题,本申请实施例公开了一种安全数据分析系统,包括:
Flume日志数据收集模块,用于获取日志数据,对所述日志数据进行预
处理,以及将经过初步处理的日志数据发送到Kafka日志数据分发集群;
Kafka日志数据分发集群,用于接收所述Flume日志数据收集模块发送
的日志数据,将所述日志数据发送至Storm日志数据分析集群,以及匹配所
述Flume日志数据收集模块与所述Storm日志数据分析集群之间的数据处理
速度;
Storm日志数据分析集群,用于接收所述Kafka日志数据分发集群发送
的日志数据,对所述日志数据进行安全分析处理,以及将经安全分析处理之
后得到的安全分析数据发送至Elasticsearch数据存储与使用集群;
Elasticsearch数据存储与使用集群,用于存储所述经安全分析处理之后
得到的安全分析数据,以及提供对所述安全分析数据的查询功能。
优选的,所述Flume日志数据收集模块包括:
Source日志获取子模块,用于获取日志数据;
Sink输出子模块,用于输出日志数据;
多个Channel解耦子模块,用于匹配所述Source日志获取子模块的日
志数据获取速度与所述Sink输出子模块的日志数据输出速度。
优选的,所述日志数据包括:Ossec日志数据、Syslog日志数据;所
述Flume日志数据收集模块包括:
Ossec日志数据预处理子模块,用于对Ossec日志数据中进行合并处
理;
Syslog日志数据预处理子模块,用于对Syslog日志数据进行分类,
将分类后的数据分发到不同的Channel解耦子模块中。
优选的,所述Flume日志数据收集模块还进一步包括:
通道监控子模块,用于监控所述多个Channel解耦子模块是否堵塞,
当某一Channel解耦子模块堵塞时调整所述Source日志获取子模块向堵
塞的Channel解耦子模块写入日志数据的速度。
优选的,所述Kafka日志数据分发集群包括:
多个Topic主题模块,用于分发不同分类的日志数据;
所述Topic主题模块进一步包括:
多个Partition分区子模块,用于对日志数据进行数据冗余,提升后
续处理数据的并发数。
优选的,所述Flume日志数据收集模块进一步包括:
Kafka转发子模块,用于将日志数据输出到指定的Topic主题模块中指
定的Partition分区子模块。
优选的,所述Storm日志数据分析集群包括:
多个Topology分析模块,用于对不同分类的日志数据进行分析处理;
所述Topology分析模块进一步包括:
Spout数据获取子模块,用于获取日志数据;
一个或多个Bolt逻辑子模块,用于对日志数据进行逻辑分析。
优选的,所述Spout数据获取子模块以及Bolt逻辑子模块由多个
Executors逻辑执行单元组成;
所述Storm日志数据分析集群还进一步包括:
Executors配比监控模块,用于监控同一个Topology分析模块中,
Spout数据获取子模块的Executors逻辑执行单元与Bolt逻辑子模块的
Executors逻辑执行单元之间的数量配比是否合适;
记录调用模块,用于在当前数量配比合适时,记录当前Executors逻
辑执行单元的数量配比,在重启Topology分析模块时,直接使用记录的
Executors逻辑执行单元的数量配比;
Executors配比调整模块,用于在当前Executors逻辑执行单元数量配
比不合适时,调整Executors逻辑执行单元的数量配比。
优选的,所述Storm日志数据分析集群还进一步包括:
节点监控模块,用于监控storm的关键进程,当关键进程异常时通知
管理员进行人为检查;所述关键进程包括:nimbus任务分配进程,以及
supervisor监听进程。
优选的,所述Elasticsearch数据存储与使用集群包括:
节点监控模块,用于监控用于接收Topology分析模块传送的数据的节
点接口,当某一节点接口的进程消失时,重启该节点接口。
优选的,所述Elasticsearch数据存储与使用集群包括:
展现模块,用于展现经安全分析处理之后得到的安全分析数据。
本申请实施例包括以下优点:
本申请实施例通过Flume日志数据收集模块、Kafka日志数据分发集群、
Storm日志数据分析集群以及Elasticsearch数据存储与使用集群构建了一种
适用于云端的安全数据分析系统,使安全数据分析能在云端实现,不需要侵
入目标系统,只需接收目标系统投递的日志数据并对数据进行分析,安全分
析之后的数据,在云端供用户查询,使得企业能够方便地对大规模的日志数
据进行安全分析。
本申请实施例在Flume日志数据收集模块、Kafka日志数据分发集群、
Storm日志数据分析集群以及Elasticsearch数据存储与使用集群都设置有监
控层,监控模块或集群内部的处理进程。
附图说明
图1是本申请的一种安全数据分析系统实施例的结构框图;
图2是本申请实施例中Flume日志数据收集模块的结构框图;
图3是本申请实施例中Kafka日志数据分发集群的结构框图;
图4是本申请实施例中Storm日志数据分析集群的结构框图;
图5是本申请一种安全数据分析系统实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图
和具体实施方式对本申请作进一步详细的说明。
本申请实施例的核心构思之一在于,本申请实施例通过Flume日志数据
收集模块、Kafka日志数据分发集群、Storm日志数据分析集群以及
Elasticsearch数据存储与使用集群构建了一种适用于云端的安全数据分析系
统。
参照图1,示出了本申请的一种安全数据分析系统实施例的结构框图,
具体可以包括如下模块:
Flume日志数据收集模块11,用于获取日志数据,对所述日志数据进行
预处理,以及将经过初步处理的日志数据发送到Kafka日志数据分发集群;
Flume是一个分布式数据采集组件,本申请实施例通过对Flume数据采
集组件进行二次开发构建了Flume日志数据收集模块11,Flume日志数据收
集模块11包括多个数据采集点,可以接收多个企业的日志管理系统投递的
日志数据。
Kafka日志数据分发集群12,用于接收所述Flume日志数据收集模块发
送的日志数据,将所述日志数据发送至Storm日志数据分析集群13,以及匹
配所述Flume日志数据收集模块11与所述Storm日志数据分析集群13之间
的数据处理速度;
Kafka是一个分布式的、可水平扩展、高吞吐率、分区的和可复制的信
息发布系统,本申请实施例通过对Kafka进行二次开发构建了Kafka日志数
据分发集群12,Kafka日志数据分发集群12包括多个分区,每个分区分别
处理不同分类的日志数据,使用Kafka构建Kafka日志数据分发集群12的
目的在于,匹配Flume日志数据收集模块11与Storm日志数据分析集群13
之间的数据处理速度。
Storm日志数据分析集群13,用于接收所述Kafka日志数据分发集群发
送的日志数据,对所述日志数据进行安全分析处理,以及将经安全分析处理
之后得到的安全分析数据发送至Elasticsearch数据存储与使用集群14;
Storm是一个分布式的、容错的实时计算系统,本申请实施例通过对
Storm进行二次开发构建了Storm日志数据分析集群13,Storm日志数据分
析集群13中包括多个用于分析不同分类日志数据的计算拓扑Topologiey。
Elasticsearch数据存储与使用集群14,用于存储所述经安全分析处理之
后得到的安全分析数据,以及提供对所述安全分析数据的查询功能。
Elasticsearch是一个快速高效的分布式检索引擎,本申请实施例通过对
Elasticsearch进行二次开发构建了Elasticsearch数据存储与使用集群14,
Elasticsearch数据存储与使用集群14包括了多个数据节点,数据节点用于接
收Storm日志数据分析集群13中的计算拓扑Topologiey传输的数据。
作为本申请实施例的一种优选示例,所述Elasticsearch数据存储与使用
集群14包括:
展现模块,用于展现经安全分析处理之后得到的安全分析数据。
本申请实施例通过Flume日志数据收集模块、Kafka日志数据分发集群、
Storm日志数据分析集群以及Elasticsearch数据存储与使用集群构建了一种
适用于云端的安全数据分析系统;
本申请实施例的安全数据分析系统从云端获取企业的日志管理系统投
递的日志数据并对数据进行安全分析,安全分析之后的数据,在云端供用户
查询,使得企业能够方便地对大规模的日志数据进行安全分析。
参照图2,示出了本申请实施例中Flume日志数据收集模块11的结构框
图,Flume日志数据收集模块11具体可以包括如下子模块:
Source日志获取子模块1101,用于获取日志数据;
Source日志获取子模块1101收集的日志数据包括:由域控服务器投
递到系统日志Syslog协议集群的日志数据,以及Ossec客户端所在的服
务器上Ossec的日志数据。
域控服务器是对计算机域进行统一管理的服务器,系统日志Syslog
协议是在一个IP网络中转发系统日志信息的标准。
Ossec是一款入侵检测系统,安装了Ossec的客户端将日志数据上传
到服务器进行处理。
Sink输出子模块1102,用于输出日志数据;
Sink输出子模块1102将获取的日志数据发送到Kafka日志数据分发
集群进行处理。
多个Channel解耦子模块1103,用于匹配所述Source日志获取子模
块的日志数据获取速度与所述Sink输出子模块的日志数据输出速度。
实际中,Channel解耦子模块1103是用于暂时缓存日志数据的通道
Channel,在Flume中通道Channel包括:内存通道MemoryChannel,JDBC
Channel(JavaDataBaseConnectivity,java数据库连接通道),文件通
道FileChannel,模拟交易通道PsuedoTransactionChannel。优选的,本
申请实施例中选用内存通道MemoryChannel来构建Channel解耦子模块
1103。
由于Source日志获取子模块1101的数据输入速度与Sink输出子模块
1102的数据输出速度,可能并不一致,因而需要Channel解耦子模块1103
来匹配Source日志获取子模块1101的日志数据获取速度与所述Sink输
出子模块1102的日志数据输出速度。
作为本申请实施例的一种优选示例,所述Flume日志数据收集模块11
具体还可以包括如下子模块:
Ossec日志数据预处理子模块,用于对Ossec日志数据中进行合并处
理;
对于采集到的Ossec日志数据首先需要进行预处理,预处理的过程包
括:
将多行的原始Ossec日志数据拼接成一行,对Ossec日志数据进行预
处理的好处包括:一则方便后续程序分析,例如后续程序能一次拿到一
条日志有效的上下文。二则是在多个数据处理组件处理过程中,当出现
处理失败的时候,回滚单位为1。如果一条日志需要传3次才能获取完整
上下文,那么后续成功处理了传来的第一次数据,后面两次传来的数据
没处理成功,这样会增大处理日志失败时的复杂度。三则涉及到往下一
组件投递请求次数,合并成1条只用最多投递1次。
Syslog日志数据预处理子模块,用于对Syslog日志数据进行分类,
将分类后的数据分发到不同的Channel解耦子模块中。
Syslog日志数据具体包括:vpn(VirtualPrivateNetwork,虚拟专用
网络)登陆原始日志数据、本地登陆原始日志数据,以及baidu-erp-log
日志数据。Syslog日志数据预处理子模块将不同分类的Syslog日志数据
分发到不同Channel解耦子模块中,这样做的好处是可以提高日志源的处
理速度,相当于同时有多个并行缓存。
作为本申请实施例的一种优选示例,所述Flume日志数据收集模块11
还进一步包括:
通道监控子模块,用于监控所述多个Channel解耦子模块是否堵塞,
当某一Channel解耦子模块堵塞时调整所述Source日志获取子模块向堵
塞的Channel解耦子模块写入日志数据的速度。
Channel解耦子模块时,说明向该Channel解耦子模块写入数据的速
度与该Channel解耦子模块输出数据的速度不匹配,因而需要调整数据的
写入速度。
参照图3,示出了本申请实施例中Kafka日志数据分发集群12的结构
框图。Kafka日志数据分发集群12具体可以包括如下模块:
多个Topic主题模块121,用于分发不同分类的日志数据;
在本申请实施例中,不同分类的数据分配被分配到不同的Channel
解耦子模块1103中,因此,设置每一个Topic主题模块121对应一个
Channel解耦子模块1103。
所述Topic主题模块121进一步包括:
多个Partition分区子模块1211,用于对日志数据进行数据冗余,提
升后续处理数据的并发数。
数据冗余即将一份日志数据复制为多份相同的日志数据,因此在后
续进程中,可以并发处理该日志数据。数据冗余的份数具体可以根据后
续处理的需求来设置。
作为本申请实施例的一种优选示例,所述Flume日志数据收集模块11
进一步包括:
Kafka转发子模块,用于将日志数据输出到指定的Topic主题模块中指
定的Partition分区子模块。
Kafka转发子模块可以将指定的日志数据要发送到的指定的Topic主题
模块中指定Partition分区子模块,便于把待分析数据较为平均的分布在多
个Partition分区子模块上,方便后续程序并行处理数据。
参照图4,示出了本申请实施例中Storm日志数据分析集群13的结构
框图。Storm日志数据分析集群13具体可以包括如下模块:
多个Topology分析模块131,用于对不同分类的日志数据进行分析
处理;
例如,专门对Ossec日志数据进行分析的Topology分析模块、专门
对Syslog日志数据中的vpn登陆原始日志数据或本地登陆原始日志数据
处理的Topology分析模块。
所述Topology分析模块131进一步包括:
Spout数据获取子模块1311,用于获取日志数据;
Spout数据获取子模块1311是读取日志数据的源头,通常数量为1。
一个或多个Bolt逻辑子模块1312,用于对日志数据进行逻辑分析。
Spout数据获取子模块1312为处理日志数据的单一逻辑块,通常由
多个Bolt逻辑子模块1312完成一项总的逻辑,图4中,各个Bolt逻辑子
模块1312的连接方式,仅为示例,Bolt逻辑子模块1312的组合根据实
际需要来设定。
作为本申请实施例的一种优选示例,所述Storm日志数据分析集群13
还进一步包括:
Executors配比监控模块,用于监控同一个Topology分析模块中,
Spout数据获取子模块的Executors逻辑执行单元与Bolt逻辑子模块的
Executors逻辑执行单元之间的数量配比是否合适;
Spout数据获取子模块以及Bolt逻辑子模块由多个Executors逻辑执
行单元组成;Executors逻辑执行单元是能完整执行逻辑处理的单元。
在实际中,可以根据执行延迟Executelatency来判断Spout数据获取
子模块的Executors逻辑执行单元与Bolt逻辑子模块的Executors逻辑执
行单元之间的数量配比是否合适,例如,当Executelatency大于500ms,
即认为配比不合适。
记录调用模块,用于在当前数量配比合适时,记录当前Executors逻
辑执行单元的数量配比,在重启Topology分析模块时,直接使用记录的
Executors逻辑执行单元的数量配比;
当运行一段时间,该配比被验证为合适配比,将其更新到启动配置
库中,以后重启该Topology分析模块时会直接使用更新后的参数。
Executors配比调整模块,用于在当前Executors逻辑执行单元数量配
比不合适时,调整Executors逻辑执行单元的数量配比。
在实际中,可以使用内置的重平衡Rebalance功能来调整Executors
逻辑执行单元的数量配比。
作为本申请实施例的一种优选示例,所述Storm日志数据分析集群13
还进一步包括:
节点监控模块,用于监控storm的关键进程,当关键进程异常时通知
管理员进行人为检查;所述关键进程包括:nimbus任务分配进程,以及
supervisor监听进程。
nimbus任务分配进程负责在Storm集群内分发代码,分配任务给工
作机器,并且负责监控集群运行状态。supervisor监听进程负责监听从
nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。
当关键进程出现问题时通知管理员进行检查。
在本申请实施例中Elasticsearch数据存储与使用集群14具体可以包括
如下模块:
节点监控模块,用于监控用于接收Topology分析模块传送的数据的节
点接口,当某一节点接口的进程消失时,重启该节点接口;
展现模块,用于展现经安全分析处理之后得到的安全分析数据。
当自动分析出一些攻击行为与数据时,展现相应的分析数据,例如,最
频繁的攻击类型,以及受攻击量最多的业务。
参照图5,示出了本申请一种安全数据分析系统实施例的结构框图。具
体可以包括如下模块:
Flume日志数据收集模块51,用于获取日志数据,对所述日志数据进行
预处理,以及将经过初步处理的日志数据发送到Kafka日志数据分发集群;
Flume日志数据收集模块51包括多个数据采集点,可以接收多个企业的日
志管理系统投递的日志数据。
Kafka日志数据分发集群52,用于接收所述Flume日志数据收集模块发
送的日志数据,将所述日志数据发送至Storm日志数据分析集群,以及匹配
所述Flume日志数据收集模块与所述Storm日志数据分析集群之间的数据处
理速度;Kafka日志数据分发集群52包括多个分区,每个分区分别处理不同
分类的日志数据。
Storm日志数据分析集群53,用于接收所述Kafka日志数据分发集群发
送的日志数据,对所述日志数据进行安全分析处理,以及将经安全分析处理
之后得到的安全分析数据发送至Elasticsearch数据存储与使用集群;Storm
日志数据分析集群53中包括多个用于分析不同分类日志数据的计算拓扑
Topologiey。
Elasticsearch数据存储与使用集群54,用于存储所述经安全分析处理之
后得到的安全分析数据,以及提供对所述安全分析数据的查询功能。
Elasticsearch数据存储与使用集群54包括了多个数据节点,数据节点用于接
收Storm日志数据分析集群53中的计算拓扑Topologiey传输的数据。
Zookeepercluster分布式服务框架55,Kafka日志数据分发集群52以及
Storm日志数据分析集群53都需要依赖Zookeepercluster分布式服务框架55
来存储具体每个节点的数据处理进度,方便在节点处理数据失败/或者节点重
启后继续原来的处理过程。也可以在Zookeeper上指定Storm处理数据的起
点。
Flume监控数据处理逻辑56,用于监控Flume日志数据收集模块51的数据
处理进程。
Kafka监控数据处理逻辑57,用于监控Kafka日志数据分发集群52的数据
处理进程。
Storm监控数据处理逻辑58,用于监控Storm日志数据分析集群53的数据
处理进程。
安全服务平台59,用于提供日志数据查询和安全分析数据的查询。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明
的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见
即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装
置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全
软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例
可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介
质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程
序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计
算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令
实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框
图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、
专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生
一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的
指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理
终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读
存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个
流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设
备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计
算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用
于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中
指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦
得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,
所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所
有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语
仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求
或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术
语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得
包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且
还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一
个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终
端设备中还存在另外的相同要素。
以上对本申请所提供的一种安全数据分析系统,进行了详细介绍,本文
中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说
明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般
技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之
处,综上所述,本说明书内容不应理解为对本申请的限制。