Apache Eagle:eBay開源分散式實時Hadoop資料安全引擎
作者:Chen, Hao
日前,eBay公司隆重宣佈正式向開源業界推出分散式實時安全監控方案 - Apache Eagle (http://goeagle.io),該專案已於2015年10月26日正式加入Apache 基金會成為孵化器專案。Apache Eagle提供一套高效分散式的流式策略引擎,具有高實時、可伸縮、易擴充套件、互動友好等特點,同時整合機器學習對歷史模型訓練建立使用者畫像以實現智慧實時地保護Hadoop生態系統中大資料的安全。
背景
隨著大資料的發展,越來越多的成功企業或者組織開始採取資料驅動商業的運作模式。在eBay,我們擁有數千名工程師、分析師和資料科學家,他們每天訪問分析數PB級的資料,以為我們的使用者帶來無與倫比的體驗。在全球業務中,我們也廣泛地利用海量大資料來連線我們數以億計的使用者。
近年來,Hadoop已經逐漸成為大資料分析領域最受歡迎的解決方案,eBay也一直在使用Hadoop技術從資料中挖掘價值,例如,我們通過大資料提高使用者的搜尋體驗,識別和優化精準廣告投放,充實我們的產品目錄,以及通過點選流分析以理解使用者如何使用我們的線上市場平臺等。
目前,eBay的Hadoop叢集總節點資料超過10000多個,儲存容量超過170PB,活躍使用者超過2000多。現在相關規模還在不斷增長中,同時為了支援多元化需求,我們引入越來越多樣的資料儲存和分析方案,比如Hive、MapReduec、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,使用者僅需數分鐘便可以設定好環境並開始嘗試。為了使得使用者體驗儘可能簡單,我們內建了許多很好的例子,只需簡單地點選幾步滑鼠,便可以輕鬆地完成策略地建立和新增。
-
使用者Profile:Eagle 內建提供基於機器學習演算法對Hadoop中使用者行為習慣建立使用者Profile的功能。我們提供多種預設的機器學習演算法供你選擇用於針對不同HDFS特徵集進行建模,通過歷史行為模型,Eagle可以實時地檢測異常使用者行為併產生預警。
-
開源:Eagle一直根據開源的標準開發,並構建於諸多大資料領域的開源產品之上,因此我們決定以Apache許可證開源Eagle,以回饋社群,同時也期待獲得社群的反饋、協作與支援。
Eagle概覽
Eagle Architecture
資料流接入和儲存(Data Collection and Storage)
Eagle提供高度可擴充套件的程式設計API,可以支援將任何型別的資料來源整合到Eagle的策略執行引擎中。例如,在Eagle HDFS 審計事件(Audit)監控模組中,通過Kafka來實時接收來自Namenode Log4j Appender 或者 Logstash Agent 收集的資料;在Eagle Hive 監控模組中,通過YARN API 收集正在執行Job的Hive 查詢日誌,並保證比較高的可伸縮性和容錯性。
資料實時處理(Data Processing)
流處理API(Stream Processing API)Eagle 提供獨立於物理平臺而高度抽象的流處理API,目前預設支援Apache Storm,但是也允許擴充套件到其他任意流處理引擎,比如Flink 或者 Samza等。該層抽象允許開發者在定義監控資料處理邏輯時,無需在物理執行層繫結任何特定流處理平臺,而只需通過複用、拼接和組裝例如資料轉換、過濾、外部資料Join等元件,以實現滿足需求的DAG(有向無環圖),同時,開發者也可以很容易地以程式設計地方式將業務邏輯流程和Eagle 策略引擎框架整合起來。Eagle框架內部會將描述業務邏輯的DAG編譯成底層流處理架構的原生應用,例如Apache Storm Topology 等,從事實現平臺的獨立。
以下是一個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 告警框架由流元資料API、策略引擎服務提供API、策略Partitioner API 以及預警去重框架等組成:
-
流元資料API允許使用者宣告事件的Schema,包括事件由哪些屬性構成、每個屬性的型別,以及當用戶配置策略時如何在執行時動態解析屬性的值等。
-
策略引擎服務提供API 允許開發者很容易地以外掛的形式擴充套件新的策略引擎。WSO2 Siddhi CEP 引擎是Eagle 優先預設支援的策略引擎,同時機器學習演算法也可作為另一種策略引擎執行。
-
擴充套件性 Eagle的策略引擎服務提供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<Module> 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 } |
-
策略 Partitioner API 允許策略在不同的物理節點上並行執行。也允許你自定義策略Partitioner類。這些功能使得策略和事件完全以分散式的方式執行。
-
可伸縮性 Eagle 通過支援策略的分割槽介面來實現大量的策略可伸縮併發地執行
public interface PolicyPartitionerextends Serializable { int partition(int numTotalPartitions, String policyType, String policyId); // method to distribute policies } |
1.a 可伸縮的Eagle策略執行框架
機器學習模組:
Eagle 支援根據使用者在Hadoop平臺上歷史使用行為習慣來定義行為模式或使用者Profile的能力。擁有了這個功能,不需要在系統中預先設定固定臨界值的情況下,也可以實現智慧地檢測出異常的行為。Eagle中使用者Profile是通過機器學習演算法生成,用於在使用者當前實時行為模式與其對應的歷史模型模式存在一定程度的差異時識別使用者行為是否為異常。目前,Eagle 內建提供以下兩種演算法來檢測異常,分別為特徵值分解(Eigen-Value Decomposition)和 密度估計(Density Estimation)。這些演算法從HDFS 審計日誌中讀取資料,對資料進行分割、審查、交叉分析,週期性地為每個使用者依次建立Profile 行為模型。一旦模型生成,Eagle的實時流策略引擎能夠近乎實時地識別出異常,分辨當前使用者的行為可疑的或者與他們的歷史行為模型不相符。
下圖簡單描述了目前Eagle中使用者Profile的離線訓練建模和線上實時監測的資料流:
1.b 使用者Profile 離線訓練以及異常監測架構
基於使用者 Profile的Eagle線上實時異常監測是根據Eagle的通用策略框架實現的,使用者Profile只是被定義為Eagle系統中一個策略而已,使用者Profile的策略是通過繼承自Eagle統一策略執行介面的機器學習Evaluator來執行,其策略的定義中包括異常檢測過程中需要的特徵向量等(線上檢測與離線訓練保持一致)。
此外,Eagle 提供自動訓練排程器,可根據檔案或者UI配置的時間週期和粒度來排程這個基於Spark的離線訓練程式,用於批量建立使用者Profile和行為模型,預設該訓練系統以每月的頻率更新模型,模型粒度為一分鐘。
Eagle 內建的機器學習演算法基本思想如下:
核密度估計演算法 (Density Estimation)
該演算法的基本思想是根據檢測的訓練樣本資料針對每個使用者計算出對應的概率密度分佈函式。首先,我們對訓練資料集的每個特徵均值標準化,標準化可以使得所有資料集轉化為相同尺度。然後,在我們的隨機變數概率分佈估計中,我們採用高斯分散式函式來計算概率密度。假設任意特徵彼此相互獨立,那麼最終的高斯概率密度就可以通過分解各個特徵的概率密度而計算得到。線上實時檢測階段,我們可以首先計算出每個使用者實時行為的概率。如果使用者出現當前行為的可能性低於某個臨界值,我們標識為異常警告,而這個臨界值完全由離線訓練程式通過稱為“馬修斯相關係數”(Mathews Correlation Coefficient)的方法計算而得。
1.c 單一維度上使用者行為直方圖
特徵值分解演算法(Eigen-Value Decomposition)
該演算法中,我們認為生成使用者Profile的主要目的是為了從中發現有價值的使用者行為模式。為了實現這個目的,我們可以考慮對特徵依次進行組合,然後觀察他們相互之間是如何影響的。當資料集非常巨大時,正如通常我們所遇到的場景,由於正常模式的數量非常之多,以至於特徵集的異常的模式很容易被忽視。由於正常的行為模式通常處於非常低維的子空間內,因此我們也許可以通過降低資料集的維度來更好的理解使用者的真正的行為模式。該方法同樣可以對於訓練資料集進行降噪。根據對大量使用者特徵資料方差的進行運算,通常在我們的用例場景中選取方差為95%作為基準,我們可以得到方差為95%的主成分的數量為k,因此我們將前k個主成分認為是使用者的正常子空間,而剩下的(n-k)個主成分則被視為異常子空間。
當線實時異常檢測時,如果使用者行為模式位於正常子空間附近,則認為該行為正常,否則,如果使用者行為模式位於異常子空間附近,則會立即報警,因為我們相信通常使用者行為一般應該位於正常子空間內。至於如何計算使用者當前行為接近正常還是異常子空間,我們採用的是歐氏距離法(Euclidian distance method)。
1.d 展示重要的使用者行為模式成分
Eagle 服務
策略管理器:Eagle策略管理器提供互動友好的使用者介面和REST API 供使用者輕鬆地定義和管理策略,一切只需幾次滑鼠點選而已。Eagle的使用者介面使得策略的管理、敏感元資料的標識和匯入、HDFS或Hive 的資源瀏覽以及預警儀表等功能都非常易於使用。
Eagle 策略引擎預設支援WSO2的Siddhi CEP引擎和機器學習引擎,以下是幾個基於Siddi CEP的策略示例
-
單一事件執行策略(使用者訪問Hive中的敏感資料列)
from hiveAccessLogStream[sensitivityType=='PHONE_NUMBER'] select * insert into outputStream; |
-
基於視窗的策略(使用者在10分鐘內訪問目錄 /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; |
查詢服務(Query Service): Eagle 提供類SQL的REST API用來實現針對海量資料集的綜合計算、查詢和分析的能力,支援例如過濾、聚合、直方運算、排序、top、算術表示式以及分頁等。Eagle優先支援HBase 作為其預設資料儲存,但是同時也支援基JDBC的關係型資料庫。特別是當選擇以HBase作為儲存時,Eagle便原生擁有了HBase儲存和查詢海量監控資料的能力,Eagle 查詢框架會將使用者提供的類SQL查詢語法最終編譯成為HBase 原生的Filter 物件,並支援通過HBase Coprocessor進一步提升響應速度。
query=AlertDefinitionService[@dataSource="hiveQueryLog"]{@policyDef}&pageSize=100000 |
Eagle在eBay的使用場景
目前,Eagle的資料行為監控系統已經部署到一個擁有2500多個節點的Hadoop叢集之上,用以保護數百PB資料的安全,並正計劃於今年年底之前擴充套件到其他上十個Hadoop叢集上,從而覆蓋eBay 所有主要Hadoop的10000多臺節點。在我們的生產環境中,我們已針對HDFS、Hive 等叢集中的資料配置了一些基礎的安全策略,並將於年底之前不斷引入更多的策略,以確保重要資料的絕對安全。目前,Eagle的策略涵蓋多種模式,包括從訪問模式、頻繁訪問資料集,預定義查詢型別、Hive 表和列、HBase 表以及基於機器學習模型生成的使用者Profile相關的所有策略等。同時,我們也有廣泛的策略來防止資料的丟失、資料被拷貝到不安全地點、敏感資料被未授權區域訪問等。Eagle策略定義上極大的靈活性和擴充套件性使得我們未來可以輕易地繼續擴充套件更多更復雜的策略以支援更多多元化的用例場景。
後續計劃
過去兩年中,在eBay 除了被用於資料行為監控以外,Eagle 核心框架還被廣泛用於監控節點健康狀況、Hadoop應用效能指標、Hadoop 核心服務以及整個Hadoop叢集的健康狀況等諸多領域。我們還建立一系列的自動化機制,例如節點修復等,幫助我們平臺部門極大得節省了我們人工勞力,並有效地提升了整個叢集資源地利用率。
以下是我們目前正在開發中地一些特性:
-
擴充套件機器學習模型對Hive和HBase支援
-
提供高度可擴充套件的API,以方便集目前業界廣泛使用的其他監控預警平臺或者工具,如Ganglia和Nagios等,同時支援敏感資料的匯入,如與Dataguise 整合等。
-
此外,我們正在積極整理其他Hadoop 叢集監控模組,期望在後續釋出中開源給社群,例如
-
HBase 監控
-
Hadoop 作業效能監控
-
Hadoop 節點監控
-
關於作者
陳浩,Apache Eagle Committer 和 PMC 成員,eBay 分析平臺基礎架構部門高階軟體工程師,負責Eagle的產品設計、技術架構、核心實現以及開源社群推廣等。
感謝以下來自Apache Eagle社群和eBay公司的聯合作者們對本文的貢獻:
-
張勇,Apache Eagle Committer和首席架構師,eBay Sr. MTS 資深架構師
-
孫立斌,Apache Eagle Committer和PMC,eBay 軟體工程師
-
蔣吉林,Apache Eagle Committer和PMC,eBay 軟體工程師
-
趙晴雯,Apache Eagle Committer和PMC,eBay 軟體工程師
eBay 分析平臺基礎架構部(Analytics Data Infrastructure)是eBay的全球資料及分析基礎架構部門,負責eBay在資料庫、資料倉庫、Hadoop、商務智慧以及機器學習等各個資料平臺開發、管理等,支援eBay全球各部門運用高階的資料分析解決方案作出及時有效的作業決策,為遍佈全球的業務使用者提供資料分析解決方案。
參考資料
相關推薦
Apache Eagle:eBay開源分散式實時Hadoop資料安全引擎
作者:Chen, Hao 日前,eBay公司隆重宣佈正式向開源業界推出分散式實時安全監控方案 - Apache Eagle (http://goeagle.io),該專案已於2015年10月26日正式加入Apache 基金會成為孵化器專案。Apache Eagle提供
實時可靠的開源分散式實時計算系統——Storm
在Hadoop生態圈中,針對大資料進行批量計算時,通常需要一個或者多個MapReduce作業來完成,但這種批量計算方式是滿足不了對實時性要求高的場景。 Storm是一個開源分散式實時計算系統,它可以實時可靠地處理流資料。 Storm特點 在Storm出現之前,進行實時處理是非常痛苦的事情,我們主要的時
Apache Storm分散式實時處理資料流系統
Storm是一個分散式的,可靠的,容錯的資料流處理系統。Storm叢集的輸入流由一個被稱作spout的元件管理,spout把資料傳遞給bolt, bolt要麼把資料儲存到某種儲存器,要麼把資料傳遞給其它的bolt。一個Storm叢集就是在一連串的bolt之間轉換spout傳過
DTCC 2020 | 阿里雲李飛飛:雲原生分散式資料庫與資料倉庫系統點亮資料上雲之路
簡介: 資料庫將面臨怎樣的變革?雲原生資料庫與資料倉庫有哪些獨特優勢?在日前的 DTCC 2020大會上,阿里巴巴集團副總裁、阿里雲資料庫產品事業部總裁、ACM傑出科學家李飛飛就《雲原生分散式資料庫與資料倉庫系統點亮資料上雲之路》進行了精彩分享。 雲端計算時代,雲原生分散式資料庫和資料倉庫開始崛起,提供彈
靈玖軟體:KGB知識圖譜技術為資料安全提供新方法
隨著計算機網路技術不斷的發展和完善,目前網路技術運用在各個行業並取得了極其重要的成就,不僅僅改變了人們的日常生活和工作,同時也是體現一個企業綜合實力的重要組成部分,此外,計算機網路技術也已經成為了衡量一個國家經濟、政治、軍事能力的象徵,象徵著一個國家在國際上的影響力。 資料探勘是在龐大的資料庫中找出
springboot 使用clickhouse實時大資料分析引擎的方法
宣告: 因專案中使用clickhouse引擎這裡springboot使用的方式是jdbc方式連線,這種方式的好處是可以使用clickhouse 自帶的fetch方法批量從clickhouse中獲取資料,對於大量資料的下載來說,比較好 因為如果全部拿到記憶體中處理,大量資料會有記憶體溢位的結果
Elasticsearch 6.5.3 釋出,分散式搜尋和資料分析引擎
Elasticsearch 6.5.3 釋出了,Elasticsearch 是一個分散式的 RESTful 風格的搜尋和資料分析引擎。 更新如下: Enhancements Engine Always configure soft-deletes field of I
Ebay開源 Pulsar:實時大資料分析平臺
作者:汪興朗 汪明明王巧玲 eBay作為全球性的商務平臺和支付行業領先者,擁有海量的使用者行為資料。基於現有的hadoop大資料處理,已經不能夠滿足業務上對實時性的需求。基於eBay過去的大資料處理的經驗和對最新技術的運用,eBay探索出一個對海量的資料流進行實時的收集
Druid:一個用於大資料實時處理的開源分散式系統
Druid是一個用於大資料實時查詢和分析的高容錯、高效能開源分散式系統,旨在快速處理大規模的資料,並能夠實現快速查詢和分析。尤其是當發生程式碼部署、機器故障以及其他產品系統遇到宕機等情況時,Druid仍能夠保持100%正常執行。建立Druid的最初意圖主要是為了解決查詢延遲問題,當時試圖使用Hadoop來實現
MyCat:開源分散式資料庫中介軟體
為什麼需要MyCat? 雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。 MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速
Apache Kudu: Hadoop生態系統的新成員實現對快速資料的快速分析
A new addition to the open source Apache Hadoop ecosystem, Apache Kudu completes Hadoop’s storage layer to enable fast analytics on fast dat
Apache Camel:基於企業整合模式(EIP)的開源整合框架
本資源由 伯樂線上 - 唐尤華 整理 Apache Camel 是一個功能強大的開源整合框架,基於企業整合模式(EIP)提供了強大的Bean整合功能。 介紹 通過Camel可以用企業整合模式建立路由和仲裁規則,可以使用基於Java的
OSDI '18重磅解密:螞蟻金服實時金融級分散式圖資料庫GeaBase
導讀:GeaBase是具備高效能、高可用、高擴充套件性及可移植性強的實時金融級分散式圖資料庫。 當地時間2018年10月8日-10日,全球極富盛名的計算機學界頂級學術會議OSDI '18(USENIX Symposium on Operating Systems
Ebay開源基於大資料的視覺化框架:Pulsar Reporting
作者:汪明明,王巧玲 ebay又新添了一個開源專案PulsarReporting – 基於大資料的視覺化框架 Pulsar作為一個實時和近實時大資料分析處理系統,包含了Pulsar Pipeline和Pulsar Reporting. 在今年三月, eBay Puls
Apache Calcite:Hadoop中新型大資料查詢引擎
http://www.open-open.com/lib/view/open1442458630727.htmlApache Calcite是面向Hadoop新的查詢引擎,它提供了標準的SQL語言、多種查詢優化和連線各種資料來源的能力,除此之外,Calcite還提供了OLAP
Apache Pulsar:實時資料處理中訊息、計算和儲存的統一
本文來自於 QCon 北京2018全球開發者大會,作者翟佳,其畢業於中科院計算所,
Apache Kafka:下一代分散式訊息系統
簡介 Apache Kafka是分散式釋出-訂閱訊息系統。它最初由LinkedIn公司開發,之後成為Apache專案的一部分。Kafka是一種快速、可擴充套件的、設計內在就是分散式的,分割槽的和可複製的提交日誌服務。 Apache Kafka與傳統訊息系
Hadoop中新型大資料查詢引擎:Apache Calcite
來自: http://www.infoq.com/cn/articles/new-big-data-hadoop-query-engine-apache-calcite http://www.open-open.com/lib/view/open1442458630727.html &n
一臉懵逼學習Storm的搭建--(一個開源的分散式實時計算系統)
1:安裝一個zookeeper叢集,之前已經部署過,這裡省略,貼一下步驟; 安裝配置zooekeeper叢集: 1.1:解壓 tar -zxvf zooke
Hadoop2.2.0偽分散式環境搭建(附:64位下編譯Hadoop-2.2.0過程)
Hadoop2.2.0偽分散式環境搭建: 寫在前面:Hadoop2.2.0預設是支援32位的OS,如果想要在64位OS下執行的話,可以通過在64位OS下面編譯Hadoop2.2.0來實現,編譯的操作步驟在最後面呈現。 1: 操作:下載軟體; 檔案:Hadoop-2.2.0.