當前位置:
首頁 > 最新 > 談談Hadoop安全的那些事兒

談談Hadoop安全的那些事兒

鳴 謝

VSRC感謝業界小夥伴——mcvoodoo投稿精品原創類文章。VSRC歡迎精品原創類文章投稿,優秀文章一旦採納發布,將有好禮相送,我們已為您準備好了豐富的獎品!(活動最終解釋權歸VSRC所有)

Hadoop的出現,顛覆了數據的使用方式,但是Hadoop的安全性一直是個潛在的隱患。本文介紹Hadoop幾個不同層面的安全問題和對應措施,供參考。

一、Hadoop基礎框架

在講安全之前,先要做個基礎普及。我猜國內很多安全人員對Hadoop的框架完全不了解,或知道的很少。

Hadoop在應用當中,業務首要考慮的是性能擴展、集群存儲擴展,而在方法上主要依靠開源。了解Hadoop框架的意義在於,框架里的每個組件都存在潛在風險。這個圖是Hadoop底層MapReduce系統的簡化視圖:

從這個圖你可以看到,Hadoop的擴展性非常好,支持並行處理,提供可伸縮節點,也能對多租戶跨應用進行支持。但在安全上有個問題,這裡每個node都是對等的,且互相通信,通信包括很多內容,比如取保數據正確複製、node在線離線、存儲優化等功能,但這也就是說,他們之間是互相信任的,這就是一個風險。

MapReduce只是Hadoop底層一個分散式任務處理系統,而整個Hadoop的框架是這樣的:

你也可以把它看成是類似LAMP堆棧,可以根據自己的業務情況添加組件。例如你用HBase來存儲數據,以實現毫秒級的檢索,但對多欄位的組合查詢卻比較弱,這時你可能就需要Solr來做組合查詢。用Sqoop來幫你從傳統關係型資料庫導數據,用Pig來實現高級MapReduce功。Spark,Drill,Impala和Hive都可以用來做SQL查詢。所以整個Hadoop是靈活、定製、模塊化的。

靈活性帶來了複雜性,也給安全帶來了難度。每個模塊都有不同的版本、配置,甚至需要單獨的身份驗證,因此每個模塊都是風險點。所以就有了Sentry,可以為整個Hadoop生態系統統一實現授權,未來也許還有新的安全模塊出現。

二、系統安全

在Hadoop的系統層面:

1、身份驗證和授權

基於角色的許可權訪問控制(RBAC)是整個訪問控制的核心,RBAC就是把角色和許可權進行關聯,這個關聯包括了角色、組、表、標籤以及其他各種可用數據。認證和授權在大型企業里,是需要跨團隊的合作的,比如與SSO的集成是和IT打配合,數據欄位密級的顆粒控制和數據平台配合實現。Hadoop生態里,身份是個比較複雜的內容,Hadoop在設計的時候就儘可能的與權威身份源松耦合,Hadoop默認使用Kerberos作為認證協議,但Kerberos對更高級的身份特徵認證支持是不夠的。

2、靜態數據保護

靜態數據的保護其實就是指加密,HDFS支持原生靜態加密,防止直接從磁碟讀取數據。但是敏感數據可不僅僅存在於HDFS層,日誌、交換文件、消息隊列、元資料庫等其他地方也會有大量敏感數據存在。

3、多租戶

Hadoop通常都是為多租戶提供服務,例如我所在的公司,租戶包括了不同的bg,也包括收購投資的公司,也有與外部合作的租戶。租戶之間的數據應該隔離或者加密,有的公司用的ACL來控制,而在雲端,多數是通過區域密鑰加密。

4、節點通信

舉例來說,Hadoop和MongoDB默認是非安全通信方式,用的是基於TCP / IP,未加密的RPC。雖然提供了TLS和SSL,但是很少用在節點之間。

5、客戶端交互

Client是和resource manager、node之間交互的,見圖一。因此Client可以做出攻擊行為,比如惡意佔用資源、利用漏洞攻擊。而Hadoop是一個分布型的架構,傳統上的防火牆之類的工具不適合。

6、分散式節點

有一句話很經典,移動計算比移動數據便宜,數據在有資源的地方計算,從而實現大規模並行處理。分散式會讓環境更複雜,從而產生更多的攻擊面,補丁、配置管理、身份驗證、靜態數據保護、一致性都成為問題。

三、運營安全

除了系統安全之外,還有操作運維上的安全。運維一般都希望提供配置管理、補丁升級、策略維護之類的功能。而Hadoop之前是沒有這些東西的,就算是現在也缺少成熟的運營手段。在這部分存在的問題是:

1、身份驗證和授權

身份和身份驗證是安全的核心,在這方面Hadoop做了大量的集成,從最初不提供認證,到集成LDAP,Active Directory,Kerberos、X.509,通過這些集成,可以基於角色映射授權,也可以擴展到更細粒度的授權(比如Apache Sentry),再到自定義。

2、特權訪問

在公司里,可能負責操作系統的是一個管理員,Hadoop是另一個管理員,他們都可以訪問集群的文件,所以需要分隔管理角色,把不必要的訪問限制到最低。對於直接訪問數據,可以通過基於角色授權、訪問控制列表等的組合管理方式。對於管理角色則可以通過三權分立來分隔。再強一些,則是加密和密鑰管理,HDFS加密。

3、配置和補丁管理

集群可能有幾百個節點,對這些節點統一做配置和補丁管理是個難題,比如新增節點和原有節點配置不統一這類問題。現有的配置管理工具都是在底層平台上,NoSQL系統還沒有對應的配置管理,另外市面上也沒有針對Hadoop做特定檢查的掃描器。

4、軟體依賴

Hadoop有很多不同組件,每個組件有自己的配置、補丁、驗證方式。好在Docker技術的出現從很大程度上可以緩解這個問題。

5、應用和節點的身份驗證

如果攻擊者可以添加一個節點進入集群,就可以滲透到數據層,這就直接繞過了身份認證。通過節點進一步拿到Kerberos密鑰表文件,則可以偽造身份。這時候則可以考慮證書,雖然證書部署會變得複雜一些,但提高了安全性。

6、日誌審計

如果發生數據泄漏,能不能從日誌上進行追蹤?大數據環境里有一些開源工具可以用,比如Facebook開源的Scribe或者Logstash,日誌可以存放在集群裡面,不過這樣也有被篡改風險,所以很多公司會考慮Splunk等專用平台,把日誌傳到其他平台。Hadoop 里有很多組件,不同的日誌格式,所以還需要做日誌的聚合。另外僅有用戶、ip這些信息不夠,還要知道查詢語句是什麼。

7、監控和阻斷

最常見的場景,計算平台資源不足,原因是某些熊孩子在平台上跑了一些垃圾任務佔用了資源。又或者你發現一個惡意查詢,這時候就得有手段阻止。Hadoop提供了一些監控工具,這些工具一般是嵌入在Hive或Spark這樣的服務中,對惡意查詢進行過濾。

四、架構安全

從安全性來說,認證、授權、加密、密鑰管理、日誌審計,是整個架構安全的基石,但把這些技術組合起來,如何部署和在哪裡部署就十分重要了。下圖是系統安全層面風險和可考慮的措施。

例如傳輸層保護可以有兩種辦法,一個是SSL這種,但要求你能夠對證書進行管理。還有一種是網路分隔來保證攻擊者進不來,缺少了內部防護但更容易實現。

而在身份認證和授權上,則可以考慮Apache Ranger 或者Sentry。

而在下圖中則是操作層面風險和措施,每種手段都各有優點,成本也不同。舉例來說,在特權管理這部分,提到了不同的加密方式,在理想化的情形下這當然是最佳選擇,但實際上很多大數據平台已經運行了一段時間,這個時候要做加密,會影響到上下游的生產,一個不慎就是一個事故。在這個情形下,加密就不是最佳選擇,而應該考慮動態掩碼,欄位型標籤或者token化,這會讓項目很容易推進,成本也更低。

在架構層面,對安全團隊來說,要考慮的問題就更多了。哪些方法有效、管理起來成本比較低、能夠獲得業務部門支持。大型互聯網公司里,安全部門提出的方案,是要接受業務challenge的。比如安全部門提出,應該對Hadoop做欄位型加密,並且要使用kms一次一密,會被業務部門用刀砍死的。因此,安全總要在現實中做考量,不必拘泥於哪種是最安全的,可以多種方法組合來保障。

例如一些現實選擇,Hadoop的身份驗證,通過應用網關來進行,而IAM對用戶來說是透明的,加密後置。集群高度多租戶,就一定要考慮TLS來保護,也就更迫切的需要細粒度的動態級控制(mask、tokenization等)。

最常見的方法就是下圖這種,類似於護城河。整個集群在內部,嚴格控制訪問,整個基礎設施安全取決於防火牆、認證這些保護措施。優點是簡單,在業務那裡不會受到什麼挑戰,也容易低成本實現。缺點是,一旦通過認證授權,則一路暢通。

在集群內部安全中:Hadoop內部的功能是公開的,和其他關係型資料庫不一樣,對節點間、集群複製等功能都是透明的,對其保護需要集成很多原生、三方的安全工具,安全性應該是整個集群的一部分架構。工具可能包括:SSL / TLS確保安全通信,Kerberos的節點之間認證,靜態數據存儲安全性,身份和授權等。下圖中標明各種安全措施的位置。

此外,大型互聯網公司的數據來源一般都有無數個,而安全團隊很難知道數據都在哪活動,保護措施是什麼,但這些數據都在數據中心的載體上,因此可選擇一些基本保護措施:tokenization、masking和加密。這些措施保證不管數據在哪裡使用都能夠一定強度的保護。Tokenization是一個數據令牌,有點像我們在遊戲廳的遊戲代幣,它不是現金,但是可以用來抓娃娃。在數據保護中,則用數據令牌來代替像是銀行卡號的敏感數據,但數據令牌本身毫無含義,它只能去映射真正的數據。Masking則是對數據做部分遮蓋或替換,比如用一個隨機數來代替身份證號碼,這樣原始數據不會在查詢中出現,但真正的數據還是在表中存儲的。

做這些事情,是因為無論內外部用戶都是不可信的,因為你不知道數據在什麼時候就被與合作夥伴或者什麼人共享了,動態脫敏的做法可以根據ip、設備類型、時間來進行額外控制。靜態脫敏方法可以完全掩蓋敏感數據,同時保留數據分析的價值。需要根據不同情況做選擇。

與Hadoop兼容、或者為Hadoop設計的安全解決方案數量這些年一直在增加,最大貢獻來自於開源社區,甚至有的企業也會直接貢獻,幫用戶們解決了很大的痛苦。介紹幾個工具:

1、Apache Ranger

Ranger是Hadoop集群的集中安全管理解決方案,包括審計,密鑰管理和細粒度的數據訪問控制。可以集成HDFS,Hive,YARN,Solr,Kafka等模塊的安全認證機制。關鍵!Ranger是少數能夠提供中央管理視圖的工具,所以你可以在HDFS設置文件和目錄許可權,在Hive中設置SQL策略,形成一個整體性的安全控制。

2、HDFS加密

HDFS提供嵌入在Hadoop文件中的「透明」加密,數據在存儲到文件系統時候被透明加密,對應用集群來說代價就比較低了。支持區域、文件、目錄的加密,每個區域可以用不同的密鑰,這樣就可以支持多租戶,也能夠與KMS集成。

3、Apache Knox

可以把Knox視為Hadoop防火牆。更確切地說,它是一個API網關。Knox處理HTTP和RESTful請求,執行身份驗證和策略控制。結合網路分區分域,進一步減少攻擊面。

4、Apache Atlas

開源治理框架,可以管理數據血緣關係、數據字典、數據分類等一系列元數據的核心能力。簡單的說,實現數據發現和訪問控制。不過Atlas也才剛剛發展起來,成熟性可能是個問題。

5、Apache Ambari

管理Hadoop集群的工具,可以把配置同步到整個集群,貌似國內用的不多。當然你也可以自己寫腳本,腳本可以提供自定義的功能。但是對於中小型公司來說,Ambari能快速啟動運行對集群的一致性管理。

6、監控

監控有兩個部分,實時分析和攔截。Hive,PIQL,Impala,Spark 模塊提供的是SQL或偽SQL語法,這就可以利用前面提到的tokenization、masking來進行保護。或者更細粒度的授權,來改變替換查詢結果。以數據的監控視角,會比應用的監控視角得到更多的信息。

五、建議

考慮Hadoop集群的安全方案,先給幾個原則:

1、不能損害集群的功能

2、架構一致,不能和Hadoop架構衝突

3、能夠解決安全的威脅

為什麼要這樣說,因為市面上太多魚龍混雜的公司,號稱提供大數據解決方案,他們自己都還在用mysql做產品。再者,Hadoop整個生態都還年輕,並不是所有工具都是成熟的。

在技術上,建議考慮如下這些部分,又或者我認為,這是一個Hadoop集群的基線安全:

1、Kerberos進行節點認證

已經這麼做的公司越來越多了,而且集成Kerberos現在也比以前簡單多了。Kerberos認證在節點安全上是最有效的安全控制手段之一,而且本身就是內置在Hadoop基礎架構中的。建議使用。

2、文件層加密

簡單的說,是保護靜止的數據,可以防止管理員、惡意用戶、租戶的非授權訪問,當然也能保證硬碟被盜後的安全。而且,很多地方已經開始要求數據必須加密存儲了,也需要考慮合規。文件層加密能夠保證一致性,跨越操作系統、平台、存儲介質,也能在集群增加的時候無縫擴展,對應用和平台來說都是透明的。所以加密不是建議,而應該是強制選項。

3、KMS

攻擊者可以拿到密鑰,你的加密就沒有意義了。很多管理員、開發會把密鑰存在硬碟上—我真的掃描過開發和dba的硬碟,所以我知道。所以需要獨立的密鑰管理平台來分發密鑰和證書。尤其在大規模企業中,多密鑰多租戶的管理就是更現實的問題。

4、Apache Ranger

前面已經介紹了。

5、自動化部署

有的公司用腳本和源代碼控制實現,有的用傳統的補丁管理系統來實現,還有一些就是噩夢管理方法。可以考慮配置自動化工具比如Chef和Puppet,從可信鏡像安裝、升級、分發密鑰等。

6、日誌和監控

可以利用內置的Hadoop功能創建日誌,使用集群本身來存儲事件,還包括像LogStash,Log4J和Kafka來進行數據流管理和搜索。

7、通信加密

SSL / TLS用於實現節點之間、節點和應用之間的安全通信,建議全部加密,雖然這對性能有一點影響,但這個開銷是所有節點共享的,所以壓力並不大。

加密,認證和平台管理工具大大提高了Hadoop集群安全性,在認證鑒權上的集成,細粒度的訪問控制讓安全工作更容易做一些。Hadoop社區的速度很快,說實話超越了我的期望值。不過坦白說,就我了解的很多國內公司,對於Hadoop的安全還停留在網路隔離的水平上,然後期望攻擊者無法滲透進來,外硬內軟。在合規監管的要求下,在數據開放生態的大環境下,網路隔離遠遠不夠。希望我的文章能給大家一些幫助。

參考資料

1、https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.5.0/bk_security/bk_security.pdf

4、https://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-Security-Guide/CDH4-Security-Guide.html

5、http://www.slideshare.net/blueboxtraveler/uparmoning-the-elephant-adding-kerberosbased-security-to-hadoop

6、http://hortonworks.com/blog/the-role-of-delegation-tokens-in-apache-hadoop-security/

評論送祝福活動

大家可在文章下方留言點贊,寫出你的讀後感或者對我們的建議等,點贊排名前三的三位,將獲得VSRC贈送的新春納福包一份!活動截止日期為2月6日24時,在活動結束時,小姐姐會留言回復聯繫你的喲~

以上最終解釋權歸VSRC所有。

我們聆聽您寶貴建議

不知道,大家都喜歡閱讀哪些類型的信息安全文章?

不知道,大家都希望我們更新關於哪些主題的乾貨?

同時,我們也會根據大家反饋的建議,選取熱門話題,進行原創發布!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |