大数据安全:Hadoop安全模型的演进
敏感信息的安全和保護(hù)是當(dāng)今人們最關(guān)心的問(wèn)題之一。進(jìn)入大數(shù)據(jù)時(shí)代,很多組織都在從各種源頭收 集數(shù)據(jù),進(jìn)行分析,并基于對(duì)海量數(shù)據(jù)集的分析做出決策,因此這一過(guò)程中的安全問(wèn)題變得愈發(fā)重要。與 此同時(shí),HIPAA和其他隱私保護(hù)法之類的法律法規(guī)也要求組織加強(qiáng)對(duì)這些數(shù)據(jù)集的訪問(wèn)控制和隱私限制。 來(lái)自內(nèi)部和外部攻擊者的網(wǎng)絡(luò)安全漏洞與日俱增,通常都要數(shù)月之后才能發(fā)現(xiàn),而那些受此影響的人正在 為此付出代價(jià)。沒(méi)能對(duì)他們的數(shù)據(jù)做出恰當(dāng)訪問(wèn)控制的組織將受到起訴,出現(xiàn)在負(fù)面報(bào)道中,并將面臨監(jiān) 管機(jī)構(gòu)的罰款。
請(qǐng)想一想下面這些讓人大開(kāi)眼界的統(tǒng)計(jì)數(shù)據(jù):
賽門(mén)鐵克和Ponemon研究所今年公布的一項(xiàng)研究表明,一個(gè)安全漏洞在美國(guó)的平均組織化成本是540萬(wàn) 美元1。另?yè)?jù)最近一項(xiàng)研究表明,僅僅網(wǎng)絡(luò)犯罪在美國(guó)造成的損失每年就有140億美元之多。
2011年索尼游戲機(jī)網(wǎng)絡(luò)中出現(xiàn)的漏洞可以算是近代最大的安全漏洞之一,專家們估計(jì)索尼與該漏洞相 關(guān)的損失大約在27億到240億美元之間(范圍很大,但這個(gè)漏洞太大了,所以幾乎難以對(duì)其進(jìn)行量化)。 2
Netflix和AOL已經(jīng)因?yàn)槠涔芾淼拇罅繑?shù)據(jù)和對(duì)個(gè)人信息的保護(hù)而受到金額達(dá)數(shù)百萬(wàn)美元的起訴(某些 已經(jīng)立案),盡管他們已經(jīng)對(duì)這些數(shù)據(jù)做了“匿名化”處理并且是為了研究才公布的。3
跟安全漏洞相關(guān)的除了可量化的成本(客戶和業(yè)務(wù)合作伙伴的損失,訴訟,監(jiān)管罰款),經(jīng)歷此類事 件的組織的可信度和聲譽(yù)還會(huì)受到影響,甚至可能會(huì)導(dǎo)致公司歇業(yè)。4
簡(jiǎn)而言之,如果沒(méi)有恰當(dāng)?shù)陌踩刂?#xff0c;大數(shù)據(jù)很容易變成花費(fèi)巨大的大問(wèn)題。
對(duì)于處理大數(shù)據(jù)的組織來(lái)說(shuō)這意味著什么?意味著你擁有的數(shù)據(jù)越多,對(duì)數(shù)據(jù)的保護(hù)就越重要。意味 著不僅要安全有效地控制離開(kāi)自有網(wǎng)絡(luò)的數(shù)據(jù),還必須做好網(wǎng)絡(luò)內(nèi)部的數(shù)據(jù)訪問(wèn)控制。依據(jù)數(shù)據(jù)的敏感程 度,我們可能要確保數(shù)據(jù)分析師能看到的數(shù)據(jù)是可以讓他們分析的數(shù)據(jù),并且必須明白發(fā)布這些數(shù)據(jù)及其 分析結(jié)果可能產(chǎn)生的后果。僅Netflix數(shù)據(jù)泄漏一個(gè)案例就足以表明,即使已經(jīng)試圖對(duì)數(shù)據(jù)做了“匿 名化”處理,也可能會(huì)發(fā)布一些意料之外的信息——一些在差異化隱私領(lǐng)域標(biāo)明的東西 。
Apache Hadoop是最流行的大數(shù)據(jù)處理平臺(tái)之一。盡管最初設(shè)計(jì)Hadoop時(shí)根本沒(méi)考慮安全問(wèn)題,但它的 安全模型在不斷地演進(jìn)。Hadoop的興起也招致了很多批判,并且隨著安全專家不斷指出其潛在的安全漏洞 及大數(shù)據(jù)的安全風(fēng)險(xiǎn),使得Hadoop一直在改進(jìn)其安全性。“Hadoop安全”市場(chǎng)曾出現(xiàn)過(guò)爆炸性 的增長(zhǎng),很多廠商都發(fā)布了“安全加強(qiáng)”版的Hadoop和對(duì)Hadoop的安全加以補(bǔ)充的解決方案。 這類產(chǎn)品有Cloudera Sentry、 IBM InfoSphere Optim Data Masking、 英特爾的安全版Hadoop、 DataStax企業(yè)版、 DataGuise for Hadoop、用于Hadoop的Protegrity大數(shù)據(jù)保護(hù)器、Revelytix Loom、 Zettaset 安全數(shù)據(jù)倉(cāng)庫(kù),此外還有很多,這里就不再一一列舉了。與此同時(shí),Apache也有 Apache Accumulo這樣的項(xiàng)目,為使用Hapdoop提供了添加額外安全措施的機(jī)制。最終還出現(xiàn)了 Knox網(wǎng)關(guān) (由 HortonWorks貢獻(xiàn))和Rhino項(xiàng)目(由英特爾貢獻(xiàn))這樣的開(kāi)源項(xiàng)目,承諾要讓Hadoop本身發(fā)生重大改變。
要讓Hadoop達(dá)到安全性要求的巨大需求使得Hadoop一直在發(fā)生著變化,這也是我要在本文中重點(diǎn)討論 的內(nèi)容。
Hadoop安全(簡(jiǎn))史
Doug Cutting和Mike Cafarella最初為Nutch項(xiàng)目開(kāi)發(fā)Hadoop時(shí)并沒(méi)有考慮安全因素,這是眾所周知的 事實(shí)。因?yàn)镠adoop的最初用例都是圍繞著如何管理大量的公共web數(shù)據(jù),無(wú)需考慮保密性。按照Hadoop最 初的設(shè)想,它假定集群總是處于可信的環(huán)境中,由可信用戶使用的相互協(xié)作的可信計(jì)算機(jī)組成。
最初的Hadoop中并沒(méi)有安全模型,它不對(duì)用戶或服務(wù)進(jìn)行驗(yàn)證,也沒(méi)有數(shù)據(jù)隱私。因?yàn)镠adoop被設(shè)計(jì) 成在分布式的設(shè)備集群上執(zhí)行代碼,任何人都能提交代碼并得到執(zhí)行。盡管在較早的版本中實(shí)現(xiàn)了審計(jì)和 授權(quán)控制(HDFS文件許可),然而這種訪問(wèn)控制很容易避開(kāi),因?yàn)槿魏斡脩糁恍枰鲆粋€(gè)命令行切換就可 以模擬成其他任何用戶。這種模擬行為非常普遍,大多數(shù)用戶都會(huì)這么干,所以這一已有的安全控制其實(shí) 沒(méi)起到什么作用。
在當(dāng)時(shí),考慮到安全問(wèn)題的組織把Hadoop隔離在專有網(wǎng)絡(luò)中,只有經(jīng)過(guò)授權(quán)的用戶才能訪問(wèn)。然而由 于Hadoop內(nèi)部幾乎沒(méi)有安全控制,在這樣的環(huán)境中也會(huì)出現(xiàn)很多意外和安全事故。善意的用戶可能會(huì)犯錯(cuò) (比如用一個(gè)分布式刪除在幾秒內(nèi)就會(huì)刪除大量數(shù)據(jù))。所有用戶和程序員對(duì)集群內(nèi)的所有數(shù)據(jù)都有相同 的訪問(wèn)權(quán)限,所有任務(wù)都能訪問(wèn)集群內(nèi)的任何數(shù)據(jù),并且所有用戶都可能會(huì)去讀取任何數(shù)據(jù)集。因?yàn)?MapReduce沒(méi)有認(rèn)證或授權(quán)的概念,某個(gè)頑劣的用戶可能為了讓自己的任務(wù)更快完成而降低其他Hadoop任 務(wù)的優(yōu)先級(jí),甚至更壞,直接殺掉其他任務(wù)。
隨著Hadoop在數(shù)據(jù)分析和處理平臺(tái)中的地位日益凸顯,安全專家們開(kāi)始關(guān)心來(lái)自Hadoop集群內(nèi)部的惡 意用戶的威脅。惡意開(kāi)發(fā)人員能輕易寫(xiě)出假冒其他用戶Hadoop服務(wù)的代碼來(lái)(比如寫(xiě)一個(gè)新的 TaskTracker并將其注冊(cè)為Hapdoop服務(wù),或者冒充hdfs或mapred用戶,把HDFS里的東西全刪掉等等)。因 為DataNode沒(méi)有訪問(wèn)控制,惡意用戶可以繞過(guò)訪問(wèn)控制從DataNode中讀取任意數(shù)據(jù)塊,或?qū)⒗鴶?shù)據(jù)寫(xiě)到 DataNode中破壞目標(biāo)分析數(shù)據(jù)的完整性。所有人都能向JobTracker提交任務(wù),并可以任意執(zhí)行。
因?yàn)檫@些安全問(wèn)題,Hadoop社區(qū)意識(shí)到他們需要更加健壯的安全控制,因此,雅虎的一個(gè)團(tuán)隊(duì)決定重 點(diǎn)解決認(rèn)證問(wèn)題,選擇Kerberos作為Hadoop的認(rèn)證機(jī)制,這在他們2009年的白皮書(shū)上有記錄。
在Hadoop發(fā)布.20.20x版本時(shí)他們實(shí)現(xiàn)了自己的目標(biāo),該版本采用了下面這些機(jī)制:
用Kerberos RPC (SASL/GSSAPI) 在RPC連接上做相互認(rèn)證——用SASL/GSSAPI來(lái)實(shí)現(xiàn) Kerberos及RPC連接上的用戶、進(jìn)程及Hadoop服務(wù)的相互認(rèn)證。
為HTTP Web控制臺(tái)提供“即插即用”的認(rèn)證——也就是說(shuō)web應(yīng)用和web控制臺(tái) 的實(shí)現(xiàn)者可以為HTTP連接實(shí)現(xiàn)自己的認(rèn)證機(jī)制。包括(但不限于)HTTP SPNEGO認(rèn)證。
強(qiáng)制執(zhí)行HDFS的文件許可——可以通過(guò)NameNode根據(jù)文件許可(用戶及組的訪問(wèn)控制列表 (ACLs))強(qiáng)制執(zhí)行對(duì)HDFS中文件的訪問(wèn)控制。
用于后續(xù)認(rèn)證檢查的代理令牌——為了降低性能開(kāi)銷(xiāo)和Kerberos KDC上的負(fù)載,可以在各 種客戶端和服務(wù)經(jīng)過(guò)初始的用戶認(rèn)證后使用代理令牌。具體來(lái)說(shuō),代理令牌用于跟NameNode之間的通訊, 在無(wú)需Kerberos服務(wù)器參與的情況下完成后續(xù)的認(rèn)證后訪問(wèn)。
用于數(shù)據(jù)塊訪問(wèn)控制的塊訪問(wèn)令牌——當(dāng)需要訪問(wèn)數(shù)據(jù)塊時(shí),NameNode會(huì)根據(jù)HDFS的文件 許可做出訪問(wèn)控制決策,并發(fā)出一個(gè)塊訪問(wèn)令牌(用HMAC-SHA1),可以把這個(gè)令牌交給DataNode用于塊 訪問(wèn)請(qǐng)求。因?yàn)镈ataNode沒(méi)有文件或訪問(wèn)許可的概念,所以必須在HDFS許可和數(shù)據(jù)塊的訪問(wèn)之間建立對(duì)接 。
用作業(yè)令牌強(qiáng)制任務(wù)授權(quán)——作業(yè)令牌是由JobTracker創(chuàng)建的,傳給TaskTracker,確保 Task只能做交給他們?nèi)プ龅淖鳂I(yè)。也可以把Task配置成當(dāng)用戶提交作業(yè)時(shí)才運(yùn)行,簡(jiǎn)化訪問(wèn)控制檢查。
把這些整合到一起讓Hadoop向前邁出了一大步。自那之后,又實(shí)現(xiàn)了一些值得稱道的修改:
從“即插即用的認(rèn)證”到HTTP SPNEGO認(rèn)證——盡管2009年的Hadoop安全設(shè)計(jì)重 點(diǎn)是即插即用的認(rèn)證,但因?yàn)镽PC連接(用戶、應(yīng)用和Hadoop服務(wù))已經(jīng)采用了Kerberos認(rèn)證,所以 Hadoop開(kāi)發(fā)者社區(qū)覺(jué)得如果能跟Kerberos保持一致更好。現(xiàn)在Hadoop web控制臺(tái)被配置成使用HTTP SPNEGO這一用于web控制臺(tái)的Kerberos實(shí)現(xiàn)。這樣可以部分滿足Hadoop亟需的一致性。
網(wǎng)絡(luò)加密——采用了SASL的連接可以配置成使用機(jī)密保護(hù)質(zhì)量(QoP),在網(wǎng)絡(luò)層強(qiáng)制加密 ,包括使用Kerberos RPC的連接和使用代理令牌的后續(xù)認(rèn)證。Web控制臺(tái)和MapReduce隨機(jī)操作可以配置成 使用SSL進(jìn)行加密。HDFS文件傳輸器也能配置為加密的。
自對(duì)安全性進(jìn)行重新設(shè)計(jì)以來(lái),Hadoop的安全模型大體上沒(méi)發(fā)生什么變化。隨著時(shí)間的推移,Hadoop 體系中的一些組件在Hadoop之上構(gòu)建了自己的安全層,比如Apache Accumulo,提供單元級(jí)的授權(quán),而 HBase提供列和族系一級(jí)的訪問(wèn)控制。
Hadoop當(dāng)前所面臨的安全挑戰(zhàn)
組織在保證Hadoop的安全性時(shí)會(huì)面臨一些安全方面的挑戰(zhàn),在我和Boris Lublinsky 及 Alexey Yakubovich寫(xiě)的新書(shū)中,我們用了兩章的篇幅集中討論Hadoop的安全問(wèn)題,其中一章的重點(diǎn)是Hadoop本身 的安全能力,另外一章的重點(diǎn)是對(duì)Hadoop的安全性進(jìn)行補(bǔ)充的策略。
常見(jiàn)的安全問(wèn)題有:
如何強(qiáng)制所有類型的客戶端(比如web控制臺(tái)和進(jìn)程)上的用戶及應(yīng)用進(jìn)行驗(yàn)證?
如何確保服務(wù)不是流氓服務(wù)冒充的(比如流氓TaskTracker和Task,未經(jīng)授權(quán)的進(jìn)程向 DataNode 出示 ID 以訪問(wèn)數(shù)據(jù)塊等?)
如何根據(jù)已有的訪問(wèn)控制策略和用戶憑據(jù)強(qiáng)制數(shù)據(jù)的訪問(wèn)控制?
如何實(shí)現(xiàn)基于屬性的訪問(wèn)控制(ABAC)或基于角色的訪問(wèn)控制(RBAC)?
怎么才能將Hadoop跟已有的企業(yè)安全服務(wù)集成到一起?
如何控制誰(shuí)被授權(quán)可以訪問(wèn)、修改和停止MapReduce作業(yè)?
怎么才能加密傳輸中的數(shù)據(jù)?
如何加密靜態(tài)數(shù)據(jù)?
如何對(duì)事件進(jìn)行跟蹤和審計(jì),如何跟蹤數(shù)據(jù)的出處?
對(duì)于架設(shè)在網(wǎng)絡(luò)上的Hadoop集群,通過(guò)網(wǎng)絡(luò)途徑保護(hù)它的最好辦法是什么?
這其中很多問(wèn)題都能靠Hadoop自身的能力解決,但也有很多是Hadoop所無(wú)能為力的,所以行業(yè)內(nèi)涌現(xiàn) 出了很多Hadoop安全補(bǔ)充工具。廠商們發(fā)布安全產(chǎn)品來(lái)彌補(bǔ)Hadoop的不足有幾個(gè)原因:
沒(méi)有“靜態(tài)數(shù)據(jù)”加密。目前HDFS上的靜態(tài)數(shù)據(jù)沒(méi)有加密。那些對(duì)Hadoop集群中的數(shù)據(jù)加 密有嚴(yán)格安全要求的組織,被迫使用第三方工具實(shí)現(xiàn)HDFS硬盤(pán)層面的加密,或安全性經(jīng)過(guò)加強(qiáng)的Hadoop版 本(比如今年早些時(shí)候英特爾發(fā)布的版本)。
以 Kerberos為中心的方式——Hadoop依靠 Kerberos做認(rèn)證。對(duì)于采用了其他方式的組織 而言,這意味著他們要單獨(dú)搭建一套認(rèn)證系統(tǒng)。
有限的授權(quán)能力——盡管Hadoop能基于用戶及群組許可和訪問(wèn)控制列表(ACL)進(jìn)行授權(quán), 但對(duì)于有些組織來(lái)說(shuō)這樣是不夠的。很多組織基于XACML和基于屬性的訪問(wèn)控制使用靈活動(dòng)態(tài)的訪問(wèn)控制 策略。盡管肯定可以用Accumulo執(zhí)行這些層面的授權(quán)過(guò)濾器,但Hadoop的授權(quán)憑證作用是有限的。
安全模型和配置的復(fù)雜性。 Hadoop的認(rèn)證有幾個(gè)相關(guān)的數(shù)據(jù)流,用于應(yīng)用程序和Hadoop服務(wù)的 Kerberos RPC認(rèn)證,用于web控制臺(tái)的HTTP SPNEGO認(rèn)證,以及使用代理令牌、塊令牌、作業(yè)令牌。對(duì)于網(wǎng) 絡(luò)加密,也必須配置三種加密機(jī)制,用于SASL機(jī)制的保護(hù)質(zhì)量,用于web控制臺(tái)的SSL,HDFS數(shù)據(jù)傳輸加密 。所有這些設(shè)置都要分別進(jìn)行配置,并且很容易出錯(cuò)。
如果Hadoop如今還不具備實(shí)現(xiàn)者所要求的安全能力,那么他們只能轉(zhuǎn)而集成第三方工具,或使用某個(gè) 廠商提供的安全加強(qiáng)版Hadoop,或采用其他有創(chuàng)造性的辦法。
即將發(fā)生的大變化
2013年開(kāi)端之際,英特爾發(fā)起了一個(gè)開(kāi)源項(xiàng)目Rhino,以提升Hadoop及其整個(gè)體系的安全能力,并將代 碼貢獻(xiàn)給了Apache。這有望顯著加強(qiáng)Hadoop當(dāng)前的貢獻(xiàn)。這一開(kāi)源項(xiàng)目的總體目標(biāo)是要支持加密和密鑰管 理,一個(gè)超越Hadoop當(dāng)前提供的用戶及群組ACL的通用授權(quán)框架,一個(gè)基于認(rèn)證框架的通用令牌,改善 HBase的安全性,改善安全審計(jì)。這些任務(wù)都被記錄在Hadoop、 MapReduce、HBase 和 Zookeeper的JIRA 中,擇重點(diǎn)摘錄如下:
加密的靜態(tài)數(shù)據(jù)——JIRA 任務(wù) HADOOP-9331 (Hadoop加密編碼解碼器框架及加密編碼解碼 器的實(shí)現(xiàn)) 和 MAPREDUCE-5025 (支持MapReduce中的加密編碼解碼器的密鑰發(fā)行和管理) 有直接的關(guān)系。 第一個(gè)側(cè)重于創(chuàng)建一個(gè)加密框架及其實(shí)現(xiàn),以支持對(duì)HDFS上文件的加密和解密;第二個(gè)側(cè)重于為 MapReduce提供密鑰發(fā)行和管理框架,以便能在MapReduce操作過(guò)程中對(duì)數(shù)據(jù)加密和解密。為此向Hadoop中 引入了一個(gè)可分割A(yù)ES編碼解碼器的實(shí)現(xiàn),可以對(duì)磁盤(pán)上分散的數(shù)據(jù)加密和解密。密鑰發(fā)行和管理框架可 以在MapReduce操作過(guò)程中解析密鑰的上下文,因此MapReduce作業(yè)能夠進(jìn)行加解密操作。他們已經(jīng)發(fā)展出 的需求包括MapReduce作業(yè)不同階段的不同選項(xiàng),并且要支持靈活的密鑰獲取辦法。在一些相關(guān)的任務(wù)中 ,ZOOKEEPER-1688 將提供透明的快照加密能力,并在硬盤(pán)記錄日志,防止敏感信息從靜態(tài)文件中泄漏出 去。
基于令牌的認(rèn)證及統(tǒng)一授權(quán)框架——JIRA 任務(wù) HADOOP-9392 (基于令牌的認(rèn)證及單點(diǎn)登錄 ) 和 HADOOP-9466 (統(tǒng)一授權(quán)框架) 也是相互關(guān)聯(lián)的。第一項(xiàng)任務(wù)展示了一個(gè)跟Kerberos耦合不是那么緊 密的基于令牌的認(rèn)證框架。第二項(xiàng)任務(wù)會(huì)用基于令牌的框架支持靈活的授權(quán)強(qiáng)制引擎,以取代(但能向后 兼容)當(dāng)前的ACL式訪問(wèn)控制。對(duì)基于令牌的認(rèn)證框架,第一項(xiàng)任務(wù)計(jì)劃支持多種認(rèn)證機(jī)制的令牌,比如 LDAP 用戶名/密碼認(rèn)證,Kerberos,X.509證書(shū)認(rèn)證,SQL認(rèn)證(基于SQL數(shù)據(jù)庫(kù)的用戶名/密碼認(rèn)證)和 SAML。第二項(xiàng)任務(wù)要支持一個(gè)先進(jìn)的授權(quán)模型,側(cè)重于基于屬性的訪問(wèn)控制(ABAC)和XACML標(biāo)準(zhǔn)。
提升HBase的安全性——JIRA 任務(wù) HBASE-6222 (增加每-鍵值安全) 向HBase添加Apache Accumulo具備但HBase還沒(méi)有的單元級(jí)授權(quán)。開(kāi)發(fā)出構(gòu)建在加密框架上的HBASE-7544 ,把它擴(kuò)展到HBase ,提供透明的表加密。
這些就是Hadoop的主要變化,但有望解決有這些安全需求的組織的安全問(wèn)題。
結(jié)論
在我們這個(gè)步履匆匆而又相互關(guān)聯(lián)的世界里,大數(shù)據(jù)就是王道,在我們對(duì)海量數(shù)據(jù)進(jìn)行處理和分析時(shí) ,明白安全的重要性至關(guān)重要。這要從弄懂?dāng)?shù)據(jù)及相關(guān)的安全策略開(kāi)始,也要明白組織的安全策略,并知 道如何強(qiáng)制執(zhí)行。本文介紹了Hadoop的安全簡(jiǎn)史,重點(diǎn)講了常見(jiàn)的安全問(wèn)題,并介紹了Rhino項(xiàng)目,給出 了一個(gè)未來(lái)的快照。
總結(jié)
以上是生活随笔為你收集整理的大数据安全:Hadoop安全模型的演进的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 问题三十五: 怎么用ray tracin
- 下一篇: 移动端拖动元素