伴隨互聯網的高速發展,大數據成爲煊赫一時的時髦產物。隨之而來的是關於大數據的存儲與計算問題。做爲可以對大量數據進行分佈式處理的軟件框架——Hadoop目前已經發展成爲分析大數據的領先平臺,它可以以一種可靠、高效、可伸縮的方式進行數據處理。html
Hadoop生態圈的造成web
大數據是個寬泛的問題,而Hadoop生態圈是最佳的大數據的解決方案。Hadoop生態圈的全部內容基本都是爲了處理超過單機範疇的數據而產生的。算法
HDFS&MapReducesql
在最開始階段Hadoop只包含HDFS(Hadoop Distributed FileSystem)和MapReduce兩個組件。HDFS的設計本質是爲解決大量數據分別存儲於成百上千臺機器上的問題,讓客戶看到的是一個文件系統而非不少文件系統,屏蔽複雜的底層調用。比如用戶想要取/liusicheng/home/test1下的數據,只須要獲得準確的路徑便可得到數據,至於數據實際上被存放在不一樣的機器上這點用戶根本不須要關心。HDFS幫助客戶管理分散在不一樣機器上的PG級數據。這些數據若是都放在一臺機器上處理,必定會致使恐怖的等待時間。因而,客戶選擇使用不少臺機器處理數據。數據庫
Hadoop的第二個重要組件MapReduce被設計用來解決對多臺機器實現工做分配,並完成機器之間的相互通訊,最終完成客戶部署的複雜計算。至此第一代hadoop已經具有了大數據管理和計算能力。安全
MapReduce計算模型雖然能用於不少模型,但過於簡單粗暴,好用但笨重。爲了解決MapReduce的這一缺陷,引入Tez和Spark使Map/Reduce模型更通用,讓Map和Reduce之間的界限更模糊,數據交換更靈活,更少的磁盤讀寫以更方便描述複雜算法,取得更高吞吐量。服務器
Pig&Hive網絡
解決完計算性能問題,就要往效率方面作努力,下降使用門檻。MapReduce的程序寫起來很是麻煩,用更高層、更抽象的語言層來描述算法和數據處理流程能夠有效下降使用門檻,提升工做效率。因而,利用Pig接近腳本方式描述MapReduce,利用Hive把腳本和SQL語言翻譯成MapReduce程序,丟給計算引擎去計算。如此一來,通常客戶也能夠簡單使用或維護hadoop了。架構
數據倉庫框架
hadoop生態圈完成的數據倉庫架構爲:底層HDFS;上面跑MapReduce/Tez/Spark;再往上跑Hive,Pig。這種數據倉庫能夠解決中低速數據處理的要求,多用於歸檔數據分析。客戶有新的需求,須要數據倉庫有更高的處理速度,來固定查詢某些特定值,給網站實時動態變化提供數據。HBase、Cassandra和MongoDB等多種非關係型數據庫,表現得比MapReduce要好不少,好比HBase會經過索引解決這個問題,而MapReduce極可能要掃描整個數據集。
除了這些基本組件屬於hadoop生態外,分佈式機器學習庫Mahout,數據交換的編碼庫Protobuf和高一致性分佈存取協同系統ZooKeeper等也在hadoop生態中發揮着做用。這麼多工具在同一個集羣上運轉,調度系統Yarn就變得必不可少。上面組件僅是hadoop生態其中一部分,還有更多解決不一樣問題或處理不一樣場景的其餘組件存在。
Hadoop的安全問題
回顧hadoop生態圈發展史,會發現hadoop中的全部產品都是根據不一樣用戶需求開發。這就致使Hadoop生態圈中的產品缺少共同的架構和總體的考慮,安全性會徹底依賴hadoop框架來提供。而hadoop最初開發時並無考慮安全因素,當時Hadoop的用例都是圍繞着如何管理大量的公共web數據來考慮的,沒有考慮數據的保密性和內部的複雜權限管理。按照Hadoop最初的設想,它假定集羣老是處於可信的環境中,由可信用戶使用的相互協做的可信計算機組成。這就致使整個Hadoop生態圈背後隱藏着種種「兇險」,具體的安全風險大體分爲如下五大類:
缺少安全認證
缺少權限控制
缺少關鍵行爲審計
缺少靜態加密
缺少動態加密
隨着hadoop在雲上的普遍運用,不少公司對hadoop提出了安全應對方案。如Yahoo提出的Kerberos體系解決安全認證問題、ACL解決訪問控制問題。具體到每一個產品會採用不一樣的解決手段。討論解決方案以前,咱們先詳細瞭解一下hadoop的五種安全隱患。
1安全認證
因爲Hadoop中沒有用戶身份認證機制,因此任何用戶均可以假裝成爲其餘合法用戶,訪問其在HDFS上的數據,獲取MapReduce產生的結果,從而存在惡意攻擊者假冒身份,篡改HDFS上他人的數據,提交惡意做業破壞系統、修改節點服務器的狀態等隱患;因爲集羣缺少對Hadoop服務器的認證,攻擊者假冒成爲DataNode或TaskTracker節點,加入集羣,接受NameNode和JobTracker。一旦藉助代碼,任何用戶均可以獲取 root 權限,並不是法訪問 HDFS 或者 MapReduce 集羣,惡意提交做業、修改 JonTracker 狀態、篡改 HDFS 上的數據等。
身份驗證基本能夠認爲是hadoop生態中最嚴重的安全問題。不解決「你是誰」的問題?會給hadoop帶來冒充合法用戶和冒充服務節點兩大類問題。
較成熟的商業解決方法是經過Kerberos解決Hadoop身份認證。Kerberos經過相互認證的強認證方式,防止竊聽的網絡認證協議。每一位用戶和服務都有一個主題屬性和憑證來完成全部的RPC用戶認證。但若是客戶端和每一個節點都要進行Kerberos認證,隨着節點的擴展,KDC逐漸會成爲整個系統的性能瓶頸。爲了提升Kerberos的效率,加入委託令牌,利用對稱加密的方式,共享密鑰根據令牌的類型分佈到成千上萬個主機,利用Kerberos憑證從名字節點得到最初認證後,客戶端得到1個委託令牌,並將它傳遞給下一個在名字節點上進行認證的做業。但委託令牌自身也存在必定問題。
hadoop推出了Kerberos+tokens的解決方式,但在實際使用中,因爲不便利、不利於拓展性、下降效率等緣由,並未普遍應用開來。
2權限控制
用戶只要得知數據塊的 Block ID 後,能夠不通過 NameNode 的身份認證和服務受權,直接訪問相應 DataNode,讀取 DataNode 節點上的數據或者將文件寫入 DataNode 節點,並能夠隨意啓動假的 DataNode 和 TaskTracker。
對於 JobTracker,用戶能夠任意修改或者殺掉其餘用戶的做業,提升自身做業的優先級,JabTracker 對此不做任何控制。其中,不管是粗粒度的文件訪問控制仍是細粒度的ACL訪問控制,都會或多或少強佔hadoop集羣內部的資源。可從外部在行爲上進行額外的權限控制,尤爲支持由hive的hadoop環境。只須要判hivesql語句的對象和當前用戶的關鍵,就能夠經過通信阻斷等方式達到權限控制的目的。
3審計
默認hadoop缺少審計,能夠經過hadoop系產品添加日誌監控來完成一部分審計功能。經過日誌的記錄來判斷整個流程中是否存在問題。這種日誌的記錄缺少特徵的判斷和自動提示功能。徹底能夠利用進行改進後的審計產品來進行審計,只審計客戶端的行爲便可追查到惡意操做或誤操做行爲。
4靜態加密
默認狀況下Hadoop 在對集羣HDFS 系統上的文件沒有存儲保護,全部數據均是明文存儲在HDFS中,超級管理員能夠不通過用戶容許直接查看和修改用戶在雲端保存的文件,這就很容易形成數據泄露。採用靜態加密的方式,對核心敏感數據進行加密處理,使得數據密文存儲,防止泄露風險。
5動態加密
默認狀況下Hadoop集羣各節點之間,客戶端與服務器之間數據明文傳輸,使得用戶隱私數據、系統敏感信息極易在傳輸的過程被竊取。解決動態加密通常會提供一個附加的安全層。對於動態數據而言,即傳輸到或從hadoop生態系統傳送出來的數據,利用簡單認證與安全層(SASL)認證框架進行加密,經過添加一個安全層的方式,保證客戶端和服務器傳輸數據的安全性,確保在中途不回被讀。
結語
Hadoop生態的安全問題從2009年被衆多廠商重視後,相繼提出了不少解決方案。但大部分方案由於某些侷限性並無實際落地。能落地的主要是Yahoo提出的解決方案,此方案在實際落地中也存在諸多問題。目前,Hadoop安全問題已經成功引發普遍的關注,確保大型和複雜多樣環境下的數據安全,將是很是具備市場前景的宏大課題。
分享完給自家產品打個廣告,歡迎瞭解。
阿里雲市場官方店鋪:https://shop14d60793.market.aliyun.com/
雲安全產品限時體驗:http://www.dbscloud.cn/dbscloud1111.html
推薦一下安華雲安全新的公衆號,聊安全段子,說安全密文,老司機快上車。
歡迎你們關注!