当前位置: 首页 > 科技观察

ApacheEagle:eBay开源分布式实时Hadoop数据安全引擎

时间:2023-03-12 12:36:24 科技观察

作者介绍  陈浩  ApacheEagleCommitter和PMC成员,eBay分析平台基础设施部高级软件工程师,负责Eagle的产品设计和  新闻  日前,eBay宣布正式面向开源行业推出分布式实时安全监控解决方案:ApacheEagle,2015年10月26日正式加入Apache基金会作为孵化器项目。http://goeagle.io  ApacheEagle提供了一套高效的分布式流策略引擎,具有高实时性、可扩展性等特点,易于扩展,友好交互。同时结合机器学习构建用户画像,进行历史模型训练,以实现Hadoop生态大数据安全的智能实时保护。  Eagle在eBay上的使用场景  目前Eagle的数据行为监控系统已经部署在超过2500个节点的Hadoop集群上,保护数百PB数据的安全,并计划于2015年上线年底将扩展至其他十个Hadoop集群,覆盖eBay各大Hadoop的10000多个节点。  在我们的生产环境中,我们已经为HDFS、Hive等集群的数据配置了一些基本的安全策略,并将在年底前陆续推出更多的策略,确保重要数据的绝对安全。  目前,Eagle的策略涵盖了多种模式,包括访问模式相关的所有策略、频繁访问的数据集、预定义的查询类型、Hive表和列、HBase表以及基于机器学习模型生成的用户画像。  同时,我们也有广泛的策略来防止数据丢失、数据被复制到不安全的位置、敏感数据被未经授权的区域访问等。Eagle策略定义的巨大灵活性和可扩展性使我们能够轻松地继续未来扩展更多更复杂的策略以支持更多样化的用例场景。  项目背景  随着大数据的发展,越来越多的成功企业或组织开始采用数据驱动的商业运营模式。在eBay,我们有成千上万的工程师、分析师和数据科学家,他们每天访问和分析数PB的数据,为我们的用户提供无与伦比的体验。在我们的全球业务中,我们还广泛使用海量大数据来连接我们数亿用户。  近年来,Hadoop逐渐成为大数据分析领域最流行的解决方案,eBay也一直在使用Hadoop技术从数据中挖掘价值。例如,我们使用大数据来改善用户的搜索体验,识别和优化有针对性的广告,丰富我们的产品目录,并使用点击流分析来了解用户如何使用我们的在线市场平台等。  目前,总节点eBay的Hadoop集群数据超过10,000条,存储容量超过170PB,活跃用户超过2,000。现在相关规模还在不断扩大。同时,为了支持多样化的需求,我们推出了越来越多样化的数据存储和分析解决方案,如Hive、MapReduce、Spark、HBase等。数据安全是最重要的问题之一。  在大数据时代,安全问题成为前所未有的关键。尤其是eBay,作为全球领先的电子商务公司,必须保证用户数据在Hadoop中的绝对安全。  通常我们的安全措施是基于以下几点:访问控制、安全隔离、数据分类、数据加密、实时数据行为监控。  然而,经过大量的尝试和研究,我们发现,面对海量的实时数据流和多样化的用例场景,没有现有的产品或解决方案能够完全满足我们对数据行为监控的需求。为了弥合这一差距,eBay决定从头开始构建Eagle。  “Eagle是一款开源的分布式实时Hadoop数据安全解决方案,支持实时监控数据行为,能够第一时间检测到访问敏感数据或恶意操作,并立即采取对策。”  我们相信Eagle将成为Hadoop数据安全领域的核心组件之一,因此我们决定与整个社区分享它的功能。  目前,我们已经将Eagle作为开源的Apache孵化器项目捐赠给了Apache软件基金会。我们希望与开源社区共同发展,让Eagle不断发展壮大,共同满足开源社区更广泛的需求。  Eagle的数据行为监控解决方案可用于以下典型场景:  ◆监控Hadoop中的数据访问流量  ◆检测非法入侵和违反安全规则  ◆检测并防止敏感数据丢失和接入  实现基于策略的实时检测和预警  实现基于用户行为模式的异常数据行为检测  Eagle具有以下特点:  ◆高实时性:我们深知高实时性和快速响应在安防监控中的重要性。因此,在设计Eagle之初,我们就尽量保证能够在亚秒级内产生告警。一旦综合多种因素确定为危险作业,立即采取措施制止违法行为。  ◆可扩展性:在eBay,Eagle部署在几个大型的Hadoop集群上,这些集群有数百PB的数据,每天有超过8亿次的数据访问,所以Eagle必须有很强的处理海量真实数据的能力时间数据可扩展性。  ◆易用性:易用性也是Eagle产品的核心设计原则之一。使用Eagle的Sandbox,用户可以在几分钟内设置环境并开始试验。为了让用户体验尽可能简单,我们构建了许多很好的例子,您只需点击几下鼠标就可以轻松创建和添加策略。  ◆用户画像:Eagle在Hadoop中内置了基于用户行为习惯的机器学习算法建立用户画像的功能。我们提供了多种默认的机器学习算法供您选择,用于对不同的HDFS功能集进行建模。Eagle通过历史行为模型,实时发现用户异常行为,并进行预警。  ◆开源:Eagle按照开源标准开发,建立在大数据领域众多开源产品之上。因此,我们决定以Apache许可开源Eagle以回馈社区。我们也期待在支持下得到社区的反馈和合作。  Eagle概述  1.EagleArchitectureDataCollectionandStorage(数据收集和存储)  Eagle提供了一个高度可扩展的编程API,可以支持将任何类型的数据源集成到Eagle的引擎中执行策略.例如:  ◆在EagleHDFS审计事件(Audit)监控模块中,Kafka用于接收从NamenodeLog4jAppender或LogstashAgent采集的实时数据;  ◆在EagleHive监控模块中,使用YARNAPI收集运行作业的Hive查询日志,保证了较高的扩展性和容错性。  2。数据处理(数据处理)  流处理API(StreamProcessingAPI):Eagle提供了独立于物理平台的高度抽象的流处理API。目前,默认支持ApacheStorm,但它也允许扩展到任何其他流处理引擎,例如Flink或Samza。  这一层抽象允许开发者定义监控数据处理逻辑,而无需在物理执行层绑定任何特定的流处理平台,而仅通过数据转换、过滤、外部数据join等多路复用、拼接和组装组件实现一个符合要求的DAG(DirectedAcyclicGraph)。同时,开发人员可以轻松地以编程方式集成业务逻辑流程和Eagle策略引擎框架。  Eagle框架在内部将描述业务逻辑的DAG编译成底层流处理架构的原生应用,如ApacheStormTopology等,实现平台无关性。  以下是Eagle如何处理事件和警报的示例:StormExecutionEnvironmentenv=ExecutionEnvironmentFactory.getStorm(config);//stormenvStreamProducerproducer=env.newSource(newKafkaSourcedSpoutProvider().getSpout(config)).renameOutputFields(1)//declarekafkasource。flatMap(newAuditLogTransformer())//transformevent.groupBy(Arrays.asList(0))//groupby1stfield.flatMap(newUserProfileAggregatorExecutor());//aggregateone-hourdatabyuser.alertWithConsumer("userActivity","userProfileExecutor")//MLpolicyevaluationenv。execute();//执行streamprocessingandalert  AlertingFramework:Eagle的告警框架由流元数据API、策略引擎服务提供API、策略PartitionerAPI和告警去重框架组成:  1。StreammetadataAPI:允许用户声明事件的Schema,包括事件由哪些属性组成,每个属性的类型,以及用户配置策略时如何在运行时动态解析属性的值等。  2.策略引擎服务提供API:允许开发者以插件的形式方便地扩展新的策略引擎。WSO2SiddhiCEP引擎是Eagle支持的默认策略引擎,机器学习算法也可以作为另一个策略引擎执行。  3.扩展性:Eagle的策略引擎服务提供API允许你插入新的策略引擎publicinterfacePolicyEvaluatorServiceProvider{publicStringgetPolicyType();//literalstringtoidentifyonetypeofpolicypublicClassgetPolicyEvaluator();//getpolicyevaluatorimplementationpublicListgetBindingModules();//policytextwithjsonformattoobjectmapping}publicinterfacePolicyEvaluator{publicvoidevaluate(ValuesArrayinput)throwsException;//evaluateinputeventpublicvoidonPolicyUpdate(AlertDefinitionAPIEntitynewAlertDef);//invokedwhenpolicyisupdatedpublicvoidonPolicyDelete();//invokedwhenpolicyisdeleted}节点1。Policy允许在不同的PartitionerAPI上并行执行物理策略:还允许您自定义策略Partitioner类。这些功能使策略和事件能够以完全分布式的方式执行。  2、可扩展性:Eagle通过支持策略的分区接口实现大量的策略。可扩展并发操作publicinterfacePolicyPartitionerextendsSerializable{intpartition(intnumTotalPartitions,StringpolicyType,StringpolicyId);//methodtodistributepolicies}  可扩展Eagle策略执行框架  3.机器学习模块:  Eagle支持基于用户在Hadoop平台上的历史使用行为习惯定义行为模式或用户画像的能力。  有了这个功能,就可以智能检测异常行为,而无需在系统中预先设置一个固定的阈值。Eagle中的用户画像是通过机器学习算法生成的,当用户当前的实时行为模式与对应的历史模型模式存在一定程度的差异时,用于识别用户行为是否异常。  目前,Eagle提供了以下两种内置的异常检测算法,即特征值分解和密度估计。  这些算法从HDFS审计日志中读取数据,对数据进行分段、复核、交叉分析,周期性地为每个用户依次创建一个Profile行为模型。模型生成后,Eagle的实时流策略引擎可以近乎实时地识别异常,区分当前用户的行为是否可疑或与他们的历史行为模型不匹配。  下图简单描述了Eagle中用户画像离线训练建模和在线实时监控的数据流:仅在Eagle系统中定义为策略。用户画像的策略通过继承自Eagle统一策略执行接口的机器学习Evaluator执行。策略定义包括异常检测过程中需要的特征向量等(在线检测与离线训练一致)。  另外,Eagle提供了一个自动训练调度器,可以根据文件或UI配置的时间段和粒度来调度这个基于Spark的离线训练程序,用于批量创建用户画像和行为模型。默认情况下,训练系统每月运行更新模型,频率为,模型粒度为一分钟。  Eagle内置的机器学习算法的基本思想如下:  核密度估计算法(DensityEstimation)  该算法的基本思想是为每一个计算对应的概率密度分布函数用户基于检测到的训练样本数据。  首先,我们对训练数据集的每个特征的均值进行归一化处理,这可以使所有数据集成为相同的尺度。然后,在我们对随机变量的概率分布的估计中,我们使用高斯分布函数来计算概率密度。假设任何特征都是相互独立的,通过分解每个特征的概率密度可以计算出最终的高斯概率密度。  在线实时检测阶段,我们可以先计算每个用户实时行为的概率。如果用户当前行为的概率低于某个阈值,我们将其标记为异常警告,而这个阈值完全由离线训练程序通过一种称为“马修斯相关系数”(MathewsCorrelationCoefficient)的方法计算得出.  单维度用户行为直方图  特征值分解算法(Eigen-ValueDecomposition)  在该算法中,我们认为生成用户画像的主要目的是发现有价值的用户行为模式。为此,我们可以考虑按顺序组合特征并观察它们如何相互影响。  当数据集非常大时,就像我们经常遇到的那样,正常模式的数量非常多,以至于特征集的异常模式很容易被忽略。此外,由于正常的行为模式通常处于非常低维的子空间中,因此我们可以通过降低数据集的维度来更好地了解用户的真实行为模式。  这种方法也可以对训练数据集进行去噪。根据大量用户特征数据的方差计算,通常在我们的用例场景中,选择95%的方差作为基准,我们可以得到方差为95%的主成分个数为k,因此我们将前k个主成分视为用户的正常子空间,而将其余(n-k)个主成分视为异常子空间。  在线实时异常检测时,如果用户行为模式在正常子空间附近,则认为行为正常,否则,如果用户行为模式在异常子空间附近,会立即报警,因为我们相信用户行为通常是正常的应该位于正常子空间内。至于如何计算用户当前行为是接近正常还是异常子空间,我们使用欧式距离法。  展示重要的用户行为模式组件  Eagle服务  PolicyManager:EaglePolicyManager提供交互式友好的用户界面和REST。  API让用户只需点击几下鼠标即可轻松定义和管理策略。Eagle的用户界面使策略管理、敏感元数据的识别和导入、HDFS或Hive资源浏览以及预警仪器都非常易于使用。  Eagle策略引擎默认支持WSO2的SiddhiCEP引擎和机器学习引擎。下面是几个基于SiddiCEP的策略示例:  单事件执行策略(用户访问Hive中的敏感数据列)fromhiveAccessLogStream[sensitivityType=='PHONE_NUMBER']select*insertintooutputStream;  ◆Window-basedpolicy(用户在10分钟内访问目录/tmp/private超过5次)hdfsAuditLogEventStream[(src=='/tmp/private')]#window.externalTime(timestamp,10min)selectuser,count(timestamp)asaggValuegroupbyuserhavaggValue>=5insertintooutputStream;  查询服务(QueryService):  Eagle提供类似SQL的RESTAPI,实现对海量数据集的综合计算、查询和分析能力,支持过滤、聚合、直方图、排序、置顶、算术表达式等,和分页。Eagle首先支持HBase作为其默认数据存储,同时也支持基于JDBC的关系数据库。  特别是选择HBase作为存储时,Eagle拥有原生的HBase能力,可以存储和查询海量监控数据。Eagle查询框架最终会将用户提供的类SQL查询语法编译成HBase原生的Filter对象,并支持通过HBaseCoprocessor进一步提升响应速度。  query=AlertDefinitionService[@dataSource="hiveQueryLog"]{@policyDef}&pageSize=100000  后续计划  近两年,Eagle核心框架除了用于eBay上的数据行为监控外,还被广泛应用于监控节点健康状态、Hadoop应用性能指标、Hadoop核心服务、健康状态等多个领域。整个Hadoop集群。  我们还建立了节点修复等一系列自动化机制,帮助我们平台部门大大节省了我们的人工劳动,有效提高了整个集群资源的利用率。  以下是我们目前正在开发的部分功能:  扩展机器学习模型,支持Hive和HBase  提供高度可扩展的API,方便集成业界广泛使用的其他监控预警平台或者Ganglia和Nagios等工具也支持敏感数据的导入,例如与Dataguise  的集成。  ◆另外,我们正在积极整理其他Hadoop集群监控模块,期待在后续版本中开源给社区,例如:  ◆HBase监控  ◆Hadoop作业性能监控  ◆Hadoop节点监控  致谢  感谢ApacheEagle社区和eBay的以下合著者对本文的贡献:  ZhangYong,ApacheEagleCommitter和首席架构师,eBaySr.MTS高级架构师  SunLibin,ApacheEagleCommitterandPMC,eBaySoftwareEngineer  JiangJilin,ApacheEagleCommitterandPMC,eBaySoftwareEngineer  ZhaoQingwen,ApacheEagleCommitterandPMC,eBaySoftwareEngineer  eBayAnalyticsPlatformInfrastructureDepartment)是eBay的全球数据和分析基础设施部门。负责eBay的数据库、数据仓库、Hadoop、商业智能、机器学习等各种数据平台的开发和管理。支持eBay全球各部门使用高端数据分析解决方案,及时做出有效的工作决策,为全球商业用户提供数据分析解决方案。  参考  ApacheEagle文档:http://goeagle.io  ApacheEagle源代码:http://github.com/ebay/eagle  ApacheEagle项目:http://incubator.apache.org/projects/eagle.html  如何共同快乐发展  《高效运维》公众号(下方二维码)值得您关注。每周发布多篇干货满满的原创好文:系列群讨论精华、运维论坛精彩分享、群友原创等。“高效运维”也是互联网专栏《高效运维最佳实践》和官方运维2.0公众号。重要提示:除非事先获得授权,否则请在本文公众号发表后2天转载本文。尊重知识,转载请转载全文,包括我行及下方二维码。【编者推荐】海峡两岸开源社区纵览开源项目及社区发起人,Debian创始人离奇去世享年42岁。2016年最有可能成功的10款开源软件【盘点】Top50热门2015年国产开源软件2015年,哪些开源项目荣登GitHub前十榜单?