hadoop生態(tài)圈背后隱藏的“兇險”

摘要:伴隨互聯(lián)網(wǎng)的高速發(fā)展,大數(shù)據(jù)成為炙手可熱的時髦產物。隨之而來的是關于大數(shù)據(jù)的存儲與計算問題。作為能夠對大量數(shù)據(jù)進行分布式處理的軟件框架——Hadoop目前已經(jīng)發(fā)展成為分析大數(shù)據(jù)的領先平臺,它能夠以一種

伴隨互聯(lián)網(wǎng)的高速發(fā)展,大數(shù)據(jù)成為炙手可熱的時髦產物。隨之而來的是關于大數(shù)據(jù)的存儲與計算問題。作為能夠對大量數(shù)據(jù)進行分布式處理的軟件框架——Hadoop目前已經(jīng)發(fā)展成為分析大數(shù)據(jù)的領先平臺,它能夠以一種可靠、高效、可伸縮的方式進行數(shù)據(jù)處理。

一、Hadoop生態(tài)圈的形成

大數(shù)據(jù)是個寬泛的問題,而Hadoop生態(tài)圈是最佳的大數(shù)據(jù)的解決方案。Hadoop生態(tài)圈的所有內容基本都是為了處理超過單機范疇的數(shù)據(jù)而產生的。

HDFS&MapReduce

在最開始階段Hadoop只包含HDFS(Hadoop Distributed FileSystem)和MapReduce兩個組件。HDFS的設計本質是為解決大量數(shù)據(jù)分別存儲于成百上千臺機器上的問題,讓客戶看到的是一個文件系統(tǒng)而非很多文件系統(tǒng),屏蔽復雜的底層調用。好比用戶想要取/liusicheng/home/test1下的數(shù)據(jù),只需要得到準確的路徑即可獲得數(shù)據(jù),至于數(shù)據(jù)實際上被存放在不同的機器上這點用戶根本不需要關心。HDFS幫助客戶管理分散在不同機器上的PG級數(shù)據(jù)。這些數(shù)據(jù)如果都放在一臺機器上處理,一定會導致恐怖的等待時間。于是,客戶選擇使用很多臺機器處理數(shù)據(jù)。

Hadoop的第二個重要組件MapReduce被設計用來解決對多臺機器實現(xiàn)工作分配,并完成機器之間的相互通信,最終完成客戶部署的復雜計算。至此第一代hadoop已經(jīng)具備了大數(shù)據(jù)管理和計算能力。

MapReduce計算模型雖然能用于很多模型,但還是過于簡單粗暴,好用但笨重。為了解決MapReduce的這一缺陷,引入Tez和Spark使Map/Reduce模型更通用,讓Map和Reduce之間的界限更模糊,數(shù)據(jù)交換更靈活,更少的磁盤讀寫以更方便描述復雜算法,取得更高吞吐量。

Pig&Hive

解決完計算性能問題,就要往效率方面做努力,降低使用門檻。MapReduce的程序寫起來非常麻煩,用更高層、更抽象的語言層來描述算法和數(shù)據(jù)處理流程可以有效降低使用門檻,提高工作效率。于是,利用Pig接近腳本方式描述MapReduce,利用Hive把腳本和SQL語言翻譯成MapReduce程序,丟給計算引擎去計算。如此一來,一般客戶也可以簡單使用或維護hadoop了。

數(shù)據(jù)倉庫

hadoop生態(tài)圈完成的數(shù)據(jù)倉庫架構為:底層HDFS;上面跑MapReduce/Tez/Spark;再往上跑Hive,Pig。這種數(shù)據(jù)倉庫可以解決中低速數(shù)據(jù)處理的要求,多用于歸檔數(shù)據(jù)分析??蛻粲行碌男枨螅枰獢?shù)據(jù)倉庫有更高的處理速度,來固定查詢某些特定值,給網(wǎng)站實時動態(tài)變化提供數(shù)據(jù)。HBase、Cassandra和MongoDB等多種非關系型數(shù)據(jù)庫,表現(xiàn)得比MapReduce要好很多,比如HBase會通過索引解決這個問題,而MapReduce很可能要掃描整個數(shù)據(jù)集。

除了這些基本組件屬于hadoop生態(tài)外,分布式機器學習庫Mahout,數(shù)據(jù)交換的編碼庫Protobuf和高一致性分布存取協(xié)同系統(tǒng)ZooKeeper等也在hadoop生態(tài)中發(fā)揮著作用。這么多工具在同一個集群上運轉,調度系統(tǒng)Yarn就變得必不可少。上面組件僅是hadoop生態(tài)其中一部分,還有更多解決不同問題或處理不同場景的其他組件存在。

二、Hadoop的安全問題

回顧hadoop生態(tài)圈發(fā)展史,會發(fā)現(xiàn)hadoop中的所有產品都是根據(jù)不同用戶需求開發(fā)。這就導致Hadoop生態(tài)圈中的產品缺乏共同的架構和整體的考慮,安全性會完全依賴hadoop框架來提供。而hadoop最初開發(fā)時并沒有考慮安全因素,當時Hadoop的用例都是圍繞著如何管理大量的公共web數(shù)據(jù)來考慮的,沒有考慮數(shù)據(jù)的保密性和內部的復雜權限管理。按照Hadoop最初的設想,它假定集群總是處于可信的環(huán)境中,由可信用戶使用的相互協(xié)作的可信計算機組成。這就導致整個Hadoop生態(tài)圈一度被暴露在安全的風險之下。Hadoop生態(tài)圈的安全風險大致分五類:

缺乏安全認證;

缺乏權限控制;

缺乏關鍵行為審計;

缺乏靜態(tài)加密;

缺乏動態(tài)加密。

隨著hadoop在云上的廣泛運用,很多公司對hadoop提出了安全應對方案。如Yahoo提出的Kerberos體系解決安全認證問題、ACL解決訪問控制問題。具體到每個產品會采用不同的解決手段。討論解決方案之前,我們先詳細了解一下hadoop的五種安全隱患。

1、安全認證

由于Hadoop中沒有用戶身份認證機制,所以任何用戶都可以偽裝成為其他合法用戶,訪問其在HDFS上的數(shù)據(jù),獲取MapReduce產生的結果,從而存在惡意攻擊者假冒身份,篡改HDFS上他人的數(shù)據(jù),提交惡意作業(yè)破壞系統(tǒng)、修改節(jié)點服務器的狀態(tài)等隱患;由于集群缺乏對Hadoop服務器的認證,攻擊者假冒成為DataNode或TaskTracker節(jié)點,加入集群,接受NameNode和JobTracker。一旦借助代碼,任何用戶都可以獲取 root 權限,并非法訪問 HDFS 或者 MapReduce 集群,惡意提交作業(yè)、修改 JonTracker 狀態(tài)、篡改 HDFS 上的數(shù)據(jù)等。

身份驗證基本可以認為是hadoop生態(tài)中最嚴重的安全問題。不解決“你是誰”的問題?會給hadoop帶來冒充合法用戶和冒充服務節(jié)點兩大類問題。

較成熟的商業(yè)解決方法是通過Kerberos解決Hadoop身份認證。Kerberos通過相互認證的強認證方式,防止竊聽的網(wǎng)絡認證協(xié)議。每一位用戶和服務都有一個主題屬性和憑證來完成所有的RPC用戶認證。但如果客戶端和每個節(jié)點都要進行Kerberos認證,隨著節(jié)點的擴展,KDC逐漸會成為整個系統(tǒng)的性能瓶頸。為了提高Kerberos的效率,加入委托令牌,利用對稱加密的方式,共享密鑰根據(jù)令牌的類型分布到成千上萬個主機,利用Kerberos憑證從名字節(jié)點獲得最初認證后,客戶端獲得1個委托令牌,并將它傳遞給下一個在名字節(jié)點上進行認證的作業(yè)。但委托令牌自身也存在一定問題。

hadoop推出了Kerberos+tokens的解決方式,但在實際使用中,由于不便利、不利于拓展性、降低效率等原因,并未廣泛應用開來。

2、權限控制

用戶只要得知數(shù)據(jù)塊的 Block ID 后,可以不經(jīng)過 NameNode 的身份認證和服務授權,直接訪問相應 DataNode,讀取 DataNode 節(jié)點上的數(shù)據(jù)或者將文件寫入 DataNode 節(jié)點,并可以隨意啟動假的 DataNode 和 TaskTracker。

對于 JobTracker,用戶可以任意修改或者殺掉其他用戶的作業(yè),提高自身作業(yè)的優(yōu)先級,JabTracker 對此不作任何控制。其中,無論是粗粒度的文件訪問控制還是細粒度的ACL訪問控制,都會或多或少強占hadoop集群內部的資源??蓮耐獠吭谛袨樯线M行額外的權限控制,尤其支持由hive的hadoop環(huán)境。只需要判hivesql語句的對象和當前用戶的關鍵,就可以通過通訊阻斷等方式達到權限控制的目的。

3、審計

默認hadoop缺乏審計,可以通過hadoop系產品添加日志監(jiān)控來完成一部分審計功能。通過日志的記錄來判斷整個流程中是否存在問題。這種日志的記錄缺乏特征的判斷和自動提示功能。完全可以利用進行改進后的審計產品來進行審計,只審計客戶端的行為即可追查到惡意操作或誤操作行為。

4、靜態(tài)加密

默認情況下Hadoop 在對集群HDFS 系統(tǒng)上的文件沒有存儲保護,所有數(shù)據(jù)均是明文存儲在HDFS中,超級管理員可以不經(jīng)過用戶允許直接查看和修改用戶在云端保存的文件,這就很容易造成數(shù)據(jù)泄露。采用靜態(tài)加密的方式,對核心敏感數(shù)據(jù)進行加密處理,使得數(shù)據(jù)密文存儲,防止泄露風險。

5、動態(tài)加密

默認情況下Hadoop集群各節(jié)點之間,客戶端與服務器之間數(shù)據(jù)明文傳輸,使得用戶隱私數(shù)據(jù)、系統(tǒng)敏感信息極易在傳輸?shù)倪^程被竊取。解決動態(tài)加密一般會提供一個附加的安全層。對于動態(tài)數(shù)據(jù)而言,即傳輸?shù)交驈膆adoop生態(tài)系統(tǒng)傳送出來的數(shù)據(jù),利用簡單認證與安全層(SASL)認證框架進行加密,通過添加一個安全層的方式,保證客戶端和服務器傳輸數(shù)據(jù)的安全性,確保在中途不回被讀。

三、結語

Hadoop生態(tài)的安全問題從2009年被眾多廠商重視后,相繼提出了很多解決方案。但大部分方案因為某些局限性并沒有實際落地。能落地的主要是Yahoo提出的解決方案,此方案在實際落地中也存在諸多問題。目前,Hadoop安全問題已經(jīng)成功引起廣泛的關注,確保大型和復雜多樣環(huán)境下的數(shù)據(jù)安全,將是非常具有市場前景的宏大課題。

免責聲明:本網(wǎng)站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。

2017-11-19
hadoop生態(tài)圈背后隱藏的“兇險”
摘要:伴隨互聯(lián)網(wǎng)的高速發(fā)展,大數(shù)據(jù)成為炙手可熱的時髦產物。隨之而來的是關于大數(shù)據(jù)的存儲與計算問題。

長按掃碼 閱讀全文