Apache Eagle:eBay開源分布式實時Hadoop數(shù)據(jù)安全引擎
作者介紹
陳浩
Apache Eagle Committer 和 PMC 成員,eBay 分析平臺基礎(chǔ)架構(gòu)部門高級軟件工程師,負(fù)責(zé)Eagle的產(chǎn)品設(shè)計、技術(shù)架構(gòu)、核心實現(xiàn)以及開源社區(qū)推廣等。
消息
日前,eBay公司隆重宣布正式向開源業(yè)界推出分布式實時安全監(jiān)控方案:Apache Eagle,該項目已于2015年10月26日正式加入Apache基金會成為孵化器項目。
- http://goeagle.io
Apache Eagle提供一套高效分布式的流式策略引擎,具有高實時、可伸縮、易擴(kuò)展、交互友好等特點,同時集成機(jī)器學(xué)習(xí)對歷史模型訓(xùn)練建立用戶畫像以實現(xiàn)智能實時地保護(hù)Hadoop生態(tài)系統(tǒng)中大數(shù)據(jù)的安全。
Eagle在eBay的使用場景
目前,Eagle的數(shù)據(jù)行為監(jiān)控系統(tǒng)已經(jīng)部署到一個擁有2500多個節(jié)點的Hadoop集群之上,用以保護(hù)數(shù)百PB數(shù)據(jù)的安全,并正計劃于2015年年底之前擴(kuò)展到其他上十個Hadoop集群上,從而覆蓋eBay所有主要Hadoop的10000多臺節(jié)點。
在我們的生產(chǎn)環(huán)境中,我們已針對HDFS、Hive 等集群中的數(shù)據(jù)配置了一些基礎(chǔ)的安全策略,并將于年底之前不斷引入更多的策略,以確保重要數(shù)據(jù)的絕對安全。
目前,Eagle的策略涵蓋多種模式,包括從訪問模式、頻繁訪問數(shù)據(jù)集,預(yù)定義查詢類型、Hive 表和列、HBase 表以及基于機(jī)器學(xué)習(xí)模型生成的用戶Profile相關(guān)的所有策略等。
同時,我們也有廣泛的策略來防止數(shù)據(jù)的丟失、數(shù)據(jù)被拷貝到不安全地點、敏感數(shù)據(jù)被未授權(quán)區(qū)域訪問等。Eagle策略定義上極大的靈活性和擴(kuò)展性使得我們未來可以輕易地繼續(xù)擴(kuò)展更多更復(fù)雜的策略以支持更多多元化的用例場景。
項目背景
隨著大數(shù)據(jù)的發(fā)展,越來越多的成功企業(yè)或者組織開始采取數(shù)據(jù)驅(qū)動商業(yè)的運作模式。在eBay,我們擁有數(shù)千名工程師、分析師和數(shù)據(jù)科學(xué)家,他們每天訪問分析數(shù)PB級的數(shù)據(jù),以為我們的用戶帶來無與倫比的體驗。在全球業(yè)務(wù)中,我們也廣泛地利用海量大數(shù)據(jù)來連接我們數(shù)以億計的用戶。
近年來,Hadoop已經(jīng)逐漸成為大數(shù)據(jù)分析領(lǐng)域最受歡迎的解決方案,eBay也一直在使用Hadoop技術(shù)從數(shù)據(jù)中挖掘價值。例如,我們通過大數(shù)據(jù)提高用戶的搜索體驗,識別和優(yōu)化精準(zhǔn)廣告投放,充實我們的產(chǎn)品目錄,以及通過點擊流分析以理解用戶如何使用我們的在線市場平臺等。
目前,eBay的Hadoop集群總節(jié)點數(shù)據(jù)超過10000多個,存儲容量超過170PB,活躍用戶超過2000多?,F(xiàn)在相關(guān)規(guī)模還在不斷增長中,同時為了支持多元化需求,我們引入越來越多樣的數(shù)據(jù)存儲和分析方案,比如Hive、MapReduce、Spark和HBase等,隨之帶來的管理和監(jiān)控的挑戰(zhàn)越來越嚴(yán)峻,數(shù)據(jù)安全問題亦是其中最重要的之一。
大數(shù)據(jù)時代,安全問題開始變得空前的關(guān)鍵,特別eBay作為全球領(lǐng)先的電子商務(wù)公司,我們必須保證Hadoop中用戶數(shù)據(jù)的絕對安全。
通常我們的安全措施根據(jù)如下幾點:訪問控制、安全隔離、數(shù)據(jù)分類、數(shù)據(jù)加密以及實時數(shù)據(jù)行為監(jiān)控。
然而經(jīng)過廣泛的嘗試和研究,我們意識到?jīng)]有任何已經(jīng)存在的產(chǎn)品或者解決方案,能夠充分滿足我們面臨海量實時數(shù)據(jù)流和多元化用例場景下數(shù)據(jù)行為監(jiān)控的需求。為了逾越這道鴻溝,eBay決定從頭開始構(gòu)建Eagle。
“Eagle 是開源分布式實時Hadoop數(shù)據(jù)安全方案,支持?jǐn)?shù)據(jù)行為實時監(jiān)控,能立即監(jiān)測出對敏感數(shù)據(jù)的訪問或惡意的操作,并立即采取應(yīng)對的措施”
我們相信Eagle將成為Hadoop數(shù)據(jù)安全領(lǐng)域的核心組件之一,因此我們決定將它的功能分享給整個社區(qū)。
目前我們已經(jīng)將Eagle捐贈給Apache軟件基金會作為Apache孵化器項目開源,期望能夠同開源社區(qū)一同協(xié)作開發(fā),使得Eagle不斷發(fā)展壯大,共同滿足開源社區(qū)中更廣泛的需求。
Eagle的數(shù)據(jù)行為監(jiān)控方案可用于如下幾類典型場景:
◆監(jiān)控Hadoop中的數(shù)據(jù)訪問流量
◆檢測非法入侵和違反安全規(guī)則的行為
◆檢測并防止敏感數(shù)據(jù)丟失和訪問
◆實現(xiàn)基于策略的實時檢測和預(yù)警
◆實現(xiàn)基于用戶行為模式的異常數(shù)據(jù)行為檢測
Eagle具有如下特點:
◆高實時:我們充分理解安全監(jiān)控中高度實時和快速反應(yīng)的重要性,因此設(shè)計Eagle之初,我們竭盡可能地確保能在亞秒級別時間內(nèi)產(chǎn)生告警,一旦綜合多種因素確訂為危險操作,立即采取措施阻止非法行為。
◆可伸縮:在eBay,Eagle 被部署在多個大型Hadoop集群上,這些集群擁有數(shù)百PB的數(shù)據(jù),每天有8億以上的數(shù)據(jù)訪問時間,因此Eagle必須具有處理海量實時數(shù)據(jù)的高度可伸縮能力。
◆簡單易用:可用性也是Eagle產(chǎn)品的核心設(shè)計原則之一。通過Eagle的Sandbox,使用者僅需數(shù)分鐘便可以設(shè)置好環(huán)境并開始嘗試。為了使得用戶體驗盡可能簡單,我們內(nèi)置了許多很好的例子,只需簡單地點擊幾步鼠標(biāo),便可以輕松地完成策略地創(chuàng)建和添加。
◆用戶Profile:Eagle內(nèi)置提供基于機(jī)器學(xué)習(xí)算法對Hadoop中用戶行為習(xí)慣建立用戶Profile的功能。我們提供多種默認(rèn)的機(jī)器學(xué)習(xí)算法供你選擇用于針對不同HDFS特征集進(jìn)行建模,通過歷史行為模型,Eagle可以實時地檢測異常用戶行為并產(chǎn)生預(yù)警。
◆開源:Eagle一直根據(jù)開源的標(biāo)準(zhǔn)開發(fā),并構(gòu)建于諸多大數(shù)據(jù)領(lǐng)域的開源產(chǎn)品之上,因此我們決定以Apache許可證開源Eagle,以回饋社區(qū),同時也期待獲得社區(qū)的反饋、協(xié)作與支持。
Eagle概覽
1.Eagle Architecture 數(shù)據(jù)流接入和存儲(Data Collection and Storage)
Eagle提供高度可擴(kuò)展的編程API,可以支持將任何類型的數(shù)據(jù)源集成到Eagle的策略執(zhí)行引擎中。例如:
◆在Eagle HDFS審計事件(Audit)監(jiān)控模塊中,通過Kafka來實時接收來自Namenode Log4j Appender 或者 Logstash Agent 收集的數(shù)據(jù);
◆在Eagle Hive 監(jiān)控模塊中,通過YARN API 收集正在運行Job的Hive查詢?nèi)罩?,并保證比較高的可伸縮性和容錯性。
2.數(shù)據(jù)實時處理(Data Processing)
流處理API(Stream Processing API):Eagle 提供獨立于物理平臺而高度抽象的流處理API,目前默認(rèn)支持Apache Storm,但是也允許擴(kuò)展到其他任意流處理引擎,比如Flink 或者 Samza等。
該層抽象允許開發(fā)者在定義監(jiān)控數(shù)據(jù)處理邏輯時,無需在物理執(zhí)行層綁定任何特定流處理平臺,而只需通過復(fù)用、拼接和組裝例如數(shù)據(jù)轉(zhuǎn)換、過濾、外部數(shù)據(jù)Join等組件,以實現(xiàn)滿足需求的DAG(有向無環(huán)圖),同時,開發(fā)者也可以很容易地以編程地方式將業(yè)務(wù)邏輯流程和Eagle策略引擎框架集成起來。
Eagle框架內(nèi)部會將描述業(yè)務(wù)邏輯的DAG編譯成底層流處理架構(gòu)的原生應(yīng)用,例如Apache Storm Topology 等,從事實現(xiàn)平臺的獨立。
以下是一個Eagle如何處理事件和告警的示例:
- StormExecutionEnvironment env =
- ExecutionEnvironmentFactory.getStorm(config); // storm env
- StreamProducer producer = env.newSource(new
- KafkaSourcedSpoutProvider().getSpout(config)).renameOutputFields(1)
- // declare kafka source
- .flatMap(new AuditLogTransformer()) // transform event
- .groupBy(Arrays.asList(0)) // group by 1st field
- .flatMap(new UserProfileAggregatorExecutor()); // aggregate one-hour data by user
- .alertWithConsumer(“userActivity“,”userProfileExecutor“) // ML policy evaluation env.execute(); // execute stream processing and
- alert
告警框架(Alerting Framework): Eagle 告警框架由流元數(shù)據(jù)API、策略引擎服務(wù)提供API、策略Partitioner API 以及預(yù)警去重框架等組成:
1.流元數(shù)據(jù)API:允許用戶聲明事件的Schema,包括事件由哪些屬性構(gòu)成、每個屬性的類型,以及當(dāng)用戶配置策略時如何在運行時動態(tài)解析屬性的值等。
2.策略引擎服務(wù)提供API:允許開發(fā)者很容易地以插件的形式擴(kuò)展新的策略引擎。WSO2 Siddhi CEP 引擎是Eagle 優(yōu)先默認(rèn)支持的策略引擎,同時機(jī)器學(xué)習(xí)算法也可作為另一種策略引擎執(zhí)行。
3.擴(kuò)展性:Eagle的策略引擎服務(wù)提供API允許你插入新的策略引擎
- public interface PolicyEvaluatorServiceProvider { public String
- getPolicyType(); // literal string to identify one type of
- policy public Class<? extends PolicyEvaluator> getPolicyEvaluator();
- // get policy evaluator implementation public List
- getBindingModules(); // policy text with json format to object
- mapping } public interface PolicyEvaluator { public void
- evaluate(ValuesArray input) throws Exception; // evaluate input event
- public void onPolicyUpdate(AlertDefinitionAPIEntity newAlertDef); //
- invoked when policy is updated public void onPolicyDelete(); //
- invoked when policy is deleted }
1.策略 Partitioner API:允許策略在不同的物理節(jié)點上并行執(zhí)行。也允許你自定義策略Partitioner類。這些功能使得策略和事件完全以分布式的方式執(zhí)行。
2.可伸縮性:Eagle 通過支持策略的分區(qū)接口來實現(xiàn)大量的策略可伸縮并發(fā)地運行
- public interface PolicyPartitioner extends Serializable { int
- partition(int numTotalPartitions, String policyType, String policyId);
- // method to distribute policies }
可伸縮的Eagle策略執(zhí)行框架
3.機(jī)器學(xué)習(xí)模塊:
Eagle 支持根據(jù)用戶在Hadoop平臺上歷史使用行為習(xí)慣來定義行為模式或用戶Profile的能力。
擁有了這個功能,不需要在系統(tǒng)中預(yù)先設(shè)置固定臨界值的情況下,也可以實現(xiàn)智能地檢測出異常的行為。Eagle中用戶Profile是通過機(jī)器學(xué)習(xí)算法生成,用于在用戶當(dāng)前實時行為模式與其對應(yīng)的歷史模型模式存在一定程度的差異時識別用戶行為是否為異常。
目前,Eagle內(nèi)置提供以下兩種算法來檢測異常,分別為特征值分解(Eigen-Value Decomposition)和 密度估計(Density Estimation)。
這些算法從HDFS 審計日志中讀取數(shù)據(jù),對數(shù)據(jù)進(jìn)行分割、審查、交叉分析,周期性地為每個用戶依次創(chuàng)建Profile 行為模型。一旦模型生成,Eagle的實時流策略引擎能夠近乎實時地識別出異常,分辨當(dāng)前用戶的行為可疑的或者與他們的歷史行為模型不相符。
下圖簡單描述了目前Eagle中用戶Profile的離線訓(xùn)練建模和在線實時監(jiān)測的數(shù)據(jù)流:
用戶Profile離線訓(xùn)練以及異常監(jiān)測架構(gòu)
基于用戶 Profile的Eagle在線實時異常監(jiān)測是根據(jù)Eagle的通用策略框架實現(xiàn)的,用戶Profile只是被定義為Eagle系統(tǒng)中一個策略而已,用戶Profile的策略是通過繼承自Eagle統(tǒng)一策略執(zhí)行接口的機(jī)器學(xué)習(xí)Evaluator來執(zhí)行,其策略的定義中包括異常檢測過程中需要的特征向量等(在線檢測與離線訓(xùn)練保持一致)。
此外,Eagle 提供自動訓(xùn)練調(diào)度器,可根據(jù)文件或者UI配置的時間周期和粒度來調(diào)度這個基于Spark的離線訓(xùn)練程序,用于批量創(chuàng)建用戶Profile和行為模型,默認(rèn)該訓(xùn)練系統(tǒng)以每月的頻率更新模型,模型粒度為一分鐘。
Eagle 內(nèi)置的機(jī)器學(xué)習(xí)算法基本思想如下:
核密度估計算法 (Density Estimation)
該算法的基本思想是根據(jù)檢測的訓(xùn)練樣本數(shù)據(jù)針對每個用戶計算出對應(yīng)的概率密度分布函數(shù)。
首先,我們對訓(xùn)練數(shù)據(jù)集的每個特征均值標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化可以使得所有數(shù)據(jù)集轉(zhuǎn)化為相同尺度。然后,在我們的隨機(jī)變量概率分布估計中,我們采用高斯分布式函數(shù)來計算概率密度。假設(shè)任意特征彼此相互獨立,那么最終的高斯概率密度就可以通過分解各個特征的概率密度而計算得到。
在線實時檢測階段,我們可以首先計算出每個用戶實時行為的概率。如果用戶出現(xiàn)當(dāng)前行為的可能性低于某個臨界值,我們標(biāo)識為異常警告,而這個臨界值完全由離線訓(xùn)練程序通過稱為“馬修斯相關(guān)系數(shù)”(Mathews Correlation Coefficient)的方法計算而得。
單一維度上用戶行為直方圖
特征值分解算法(Eigen-Value Decomposition)
該算法中,我們認(rèn)為生成用戶Profile的主要目的是為了從中發(fā)現(xiàn)有價值的用戶行為模式。為了實現(xiàn)這個目的,我們可以考慮對特征依次進(jìn)行組合,然后觀察他們相互之間是如何影響的。
當(dāng)數(shù)據(jù)集非常巨大時,正如通常我們所遇到的場景,由于正常模式的數(shù)量非常之多,以至于特征集的異常的模式很容易被忽視。也由于正常的行為模式通常處于非常低維的子空間內(nèi),因此我們也許可以通過降低數(shù)據(jù)集的維度來更好的理解用戶的真正的行為模式。
該方法同樣可以對于訓(xùn)練數(shù)據(jù)集進(jìn)行降噪。根據(jù)對大量用戶特征數(shù)據(jù)方差的進(jìn)行運算,通常在我們的用例場景中選取方差為95%作為基準(zhǔn),我們可以得到方差為95%的主成分的數(shù)量為k,因此我們將前k個主成分認(rèn)為是用戶的正常子空間,而剩下的(n-k)個主成分則被視為異常子空間。
當(dāng)線實時異常檢測時,如果用戶行為模式位于正常子空間附近,則認(rèn)為該行為正常,否則,如果用戶行為模式位于異常子空間附近,則會立即報警,因為我們相信通常用戶行為一般應(yīng)該位于正常子空間內(nèi)。至于如何計算用戶當(dāng)前行為接近正常還是異常子空間,我們采用的是歐氏距離法(Euclidian distance method)。
展示重要的用戶行為模式成分
Eagle 服務(wù)
策略管理器:Eagle策略管理器提供交互友好的用戶界面和REST。
API 供用戶輕松地定義和管理策略,一切只需幾次鼠標(biāo)點擊而已。Eagle的用戶界面使得策略的管理、敏感元數(shù)據(jù)的標(biāo)識和導(dǎo)入、HDFS或Hive 的資源瀏覽以及預(yù)警儀表等功能都非常易于使用。
Eagle 策略引擎默認(rèn)支持WSO2的Siddhi CEP引擎和機(jī)器學(xué)習(xí)引擎,以下是幾個基于Siddi CEP的策略示例:
◆單一事件執(zhí)行策略(用戶訪問Hive中的敏感數(shù)據(jù)列)
- from hiveAccessLogStream[sensitivityType==’PHONE_NUMBER’] select *
- insert into outputStream;
◆基于窗口的策略(用戶在10分鐘內(nèi)訪問目錄 /tmp/private 多余 5次)
- hdfsAuditLogEventStream[(src ==
- ‘/tmp/private’)]#window.externalTime(timestamp,10 min) select user,
- count(timestamp) as aggValue group by user having aggValue >= 5 insert
- into outputStream;
查詢服務(wù)(Query Service):
Eagle 提供類SQL的REST API用來實現(xiàn)針對海量數(shù)據(jù)集的綜合計算、查詢和分析的能力,支持例如過濾、聚合、直方運算、排序、top、算術(shù)表達(dá)式以及分頁等。Eagle優(yōu)先支持HBase 作為其默認(rèn)數(shù)據(jù)存儲,但是同時也支持基JDBC的關(guān)系型數(shù)據(jù)庫。
特別是當(dāng)選擇以HBase作為存儲時,Eagle便原生擁有了HBase存儲和查詢海量監(jiān)控數(shù)據(jù)的能力,Eagle 查詢框架會將用戶提供的類SQL查詢語法最終編譯成為HBase 原生的Filter 對象,并支持通過HBase Coprocessor進(jìn)一步提升響應(yīng)速度。
query=AlertDefinitionService[@dataSource=”hiveQueryLog”]{@policyDef}&pageSize=100000
后續(xù)計劃
過去兩年中,在eBay 除了被用于數(shù)據(jù)行為監(jiān)控以外,Eagle 核心框架還被廣泛用于監(jiān)控節(jié)點健康狀況、Hadoop應(yīng)用性能指標(biāo)、Hadoop核心服務(wù)以及整個Hadoop集群的健康狀況等諸多領(lǐng)域。
我們還建立一系列的自動化機(jī)制,例如節(jié)點修復(fù)等,幫助我們平臺部門極大得節(jié)省了我們?nèi)斯诹Γ⒂行У靥嵘苏麄€集群資源地利用率。
以下是我們目前正在開發(fā)中地一些特性:
◆擴(kuò)展機(jī)器學(xué)習(xí)模型對Hive和HBase支持
◆提供高度可擴(kuò)展的API,以方便集目前業(yè)界廣泛使用的其他監(jiān)控預(yù)警平臺或者工具,如Ganglia和Nagios等,同時支持敏感數(shù)據(jù)的導(dǎo)入,如與Dataguise
集成等。
◆此外,我們正在積極整理其他Hadoop 集群監(jiān)控模塊,期望在后續(xù)發(fā)布中開源給社區(qū),例如:
◆HBase 監(jiān)控
◆Hadoop 作業(yè)性能監(jiān)控
◆Hadoop 節(jié)點監(jiān)控
感謝
感謝以下來自Apache Eagle社區(qū)和eBay公司的聯(lián)合作者們對本文的貢獻(xiàn):
張勇,Apache Eagle Committer和首席架構(gòu)師,eBay Sr. MTS 資深架構(gòu)師
孫立斌,Apache Eagle Committer和PMC,eBay 軟件工程師
蔣吉林,Apache Eagle Committer和PMC,eBay 軟件工程師
趙晴雯,Apache Eagle Committer和PMC,eBay 軟件工程師
eBay 分析平臺基礎(chǔ)架構(gòu)部(Analytics Data Infrastructure)是eBay的全球數(shù)據(jù)及分析基礎(chǔ)架構(gòu)部門,負(fù)責(zé)eBay在數(shù)據(jù)庫、數(shù)據(jù)倉庫、Hadoop、商務(wù)智能以及機(jī)器學(xué)習(xí)等各個數(shù)據(jù)平臺開發(fā)、管理等,支持eBay全球各部門運用高端的數(shù)據(jù)分析解決方案作出及時有效的作業(yè)決策,為遍布全球的業(yè)務(wù)用戶提供數(shù)據(jù)分析解決方案。
參考資料
Apache Eagle 文檔:
- http://goeagle.io
Apache Eagle 源碼:
- http://github.com/ebay/eagle
Apache Eagle 項目:
- http://incubator.apache.org/projects/eagle.html
如何一起愉快地發(fā)展
“高效運維”公眾號(如下二維碼)值得您的關(guān)注,作為高效運維系列微信群(國內(nèi)領(lǐng)先的運維垂直社區(qū))的唯一官方公眾號,每周發(fā)表多篇干貨滿滿的 原創(chuàng)好文:來自于系列群的討論精華、運維講壇精彩分享及群友原創(chuàng)等。“高效運維”也是互聯(lián)網(wǎng)專欄《高效運維最佳實踐》及運維2.0官方公眾號。
重要提示:除非事先獲得授權(quán),請在本公眾號發(fā)布2天后,才能轉(zhuǎn)載本文。尊重知識,請必須全文轉(zhuǎn)載,并包括本行及如下二維碼。
【編輯推薦】



































