版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章大數(shù)據(jù)平臺(tái)Hadoop的安全機(jī)制主要內(nèi)容安全威脅概述Hadoop安全機(jī)制Hadoop組件的安全機(jī)制安全技術(shù)工具Hadoop的安全性分析Hadoop安全技術(shù)架構(gòu)3.1安全威脅概述Hadoop是Apache下基于Java語言實(shí)現(xiàn)的開源大數(shù)據(jù)計(jì)算處理框架,允許使用簡(jiǎn)單的編程模型在計(jì)算機(jī)集群上對(duì)大型數(shù)據(jù)集進(jìn)行分布式處理。下面是網(wǎng)上報(bào)道過的其安全漏洞案例:1.漏洞1:SSRF偽造請(qǐng)求漏洞Apache的Ambari引用,導(dǎo)致攻擊者可以直接通過外部的管理對(duì)Hadoop的生態(tài)組件進(jìn)行管控。惡意攻擊者通過SSRF攻擊,遠(yuǎn)程對(duì)Hadoop服務(wù)以及進(jìn)程進(jìn)行操縱和讀取數(shù)據(jù)。3.1安全威脅概述2.漏洞2:MapReduce信息漏洞主要是由于數(shù)據(jù)文件、用戶產(chǎn)生的數(shù)據(jù)以及加密密鑰都存儲(chǔ)在同一個(gè)文件和磁盤中,導(dǎo)致惡意用戶獲取到加密密鑰,并讀取了數(shù)據(jù)塊中的數(shù)據(jù)。3.漏洞3:Ambari重定向漏洞由于target的URI參數(shù)被修改成了黑客指定的任意網(wǎng)址,由此造成了釣魚攻擊,甚至結(jié)合Linux底層的操作系統(tǒng)漏洞以及Hadoop的其他漏洞還能實(shí)現(xiàn)惡意代碼的加載。3.1安全威脅概述4.漏洞4:引入Docker組件,黑客偽造root身份在Linux這層沒有輸入過程的認(rèn)證,而Docker命令通過root身份來執(zhí)行。因此,黑客通過Docker命令偽造root身份,然后對(duì)Hadoop進(jìn)行全線賬戶的提權(quán),實(shí)現(xiàn)對(duì)整個(gè)操作系統(tǒng)的權(quán)限控制。早期Hadoop,在默認(rèn)情況下沒有身份認(rèn)證和訪問控制機(jī)制,基本上繼承Linux的權(quán)限控制體系。此外,在數(shù)據(jù)傳輸和靜態(tài)數(shù)據(jù)保存過程中無有效的加密措施。3.2Hadoop安全機(jī)制3.2.1基本安全機(jī)制1.Simple機(jī)制
Simple機(jī)制是JAAS協(xié)議與DelegationToken結(jié)合的一種機(jī)制,JAAS提供JAVA認(rèn)證與授權(quán)服務(wù)。(1)用戶提交作業(yè)時(shí),JobTracker端要進(jìn)行身份核實(shí),先是驗(yàn)證到底是不是這個(gè)人,即通過檢查執(zhí)行當(dāng)前代碼的人與JobConf中的中的用戶是否一致。3.2Hadoop安全機(jī)制3.2.1基本安全機(jī)制1.Simple機(jī)制(2)然后檢查ACL(AccessControlList)配置文件(由管理員配置)確認(rèn)是否有提交作業(yè)的權(quán)限。一旦通過驗(yàn)證,會(huì)獲取HDFS或者M(jìn)apReduce授予的DelegationToken(訪問不同模塊有不同的DelegationToken),之后的任何操作,比如訪問文件,均要檢查該Token是否存在,且使用者跟之前注冊(cè)使用該Token的用戶是否一致。3.2Hadoop安全機(jī)制3.2.1基本安全機(jī)制2.Kerberos機(jī)制Kerberos機(jī)制是基于認(rèn)證服務(wù)器的一種方式。整體過程如圖3.1所示。3.2Hadoop安全機(jī)制3.2.2總體安全機(jī)制(1)Hadoop客戶端通過RPC庫訪問相應(yīng)服務(wù),在RPC層中添加權(quán)限認(rèn)證機(jī)制,所有RPC都會(huì)使用SASL進(jìn)行連接。(2)HDFS認(rèn)證分成兩部分:一是客戶端與NameNode連接時(shí)的認(rèn)證;二是客戶端從DataNode獲取Block時(shí)所需要的認(rèn)證。前者使用Kerberos協(xié)議認(rèn)證和授權(quán)令牌認(rèn)證,此令牌可以作為接下來訪問HDFS的憑證。后者則是客戶端從NameNode獲取一個(gè)認(rèn)證令牌,只有使用這個(gè)令牌才能從相應(yīng)的DataNode獲取Block。3.2Hadoop安全機(jī)制3.2.2總體安全機(jī)制(3)在MapReduce中用戶的每個(gè)Task均使用用戶的身份運(yùn)行,防止了惡意用戶使用Task干擾TaskTracker或者其他用戶的Task。(4)HDFS在啟動(dòng)時(shí),NameNode首先進(jìn)入一個(gè)安全模式,此時(shí)系統(tǒng)不會(huì)寫入任何數(shù)據(jù)。NameNode在安全模式下會(huì)檢測(cè)數(shù)據(jù)塊的最小副本數(shù),當(dāng)一定比例的數(shù)據(jù)塊達(dá)到最小副本數(shù)時(shí)(一般為3),系統(tǒng)就會(huì)退出安全模式,否則補(bǔ)全副本,以達(dá)到一定的數(shù)據(jù)塊比例。3.2Hadoop安全機(jī)制3.2.2總體安全機(jī)制(5)當(dāng)從HDFS獲得數(shù)據(jù)時(shí),客戶端會(huì)檢測(cè)從DataNode收到的數(shù)據(jù)塊,通過檢測(cè)每個(gè)數(shù)據(jù)塊的校驗(yàn)和驗(yàn)證數(shù)據(jù)塊是否損壞。如損壞,則從其他DataNode獲得數(shù)據(jù)塊的副本,以保證數(shù)據(jù)的完整性和可用性。(6)MapReduce和HDFS都設(shè)計(jì)了心跳機(jī)制,Task和DataNode都定期向JobTracker和NameNode發(fā)送信條數(shù)據(jù)。當(dāng)JobTracker不能接收到某個(gè)Task的心跳數(shù)據(jù)時(shí),則認(rèn)為該Task已經(jīng)失敗,會(huì)在另一個(gè)節(jié)點(diǎn)上重啟該任務(wù),以保證整個(gè)MapReduce程序的運(yùn)行。同理,如果NameNode收不到某個(gè)DataNode的心跳消息,也認(rèn)為該節(jié)點(diǎn)已經(jīng)死掉,不會(huì)向該節(jié)點(diǎn)發(fā)送新的I/O任務(wù),并復(fù)制那些丟失的數(shù)據(jù)塊。3.3Hadoop組件的安全機(jī)制3.3.1RPC安全機(jī)制RPC是指遠(yuǎn)程過程調(diào)用,也就是說兩臺(tái)不同的服務(wù)器(不受操作系統(tǒng)限制),一個(gè)應(yīng)用部署在A上,一個(gè)應(yīng)用部署在B上,若A想要調(diào)用B上的某個(gè)方法,由于不在一個(gè)內(nèi)存空間,不能直接調(diào)用,需要通過網(wǎng)絡(luò)來表達(dá)調(diào)用的語意和傳達(dá)調(diào)用的參數(shù)。Hadoop集群是Master/Slave(主/從)結(jié)構(gòu),Master包括NameNode和JobTracker,Slave包括DataNode和TaskTracker。
3.3Hadoop組件的安全機(jī)制3.3.1RPC安全機(jī)制
NameNode可看作是分布式文件系統(tǒng)中的管理者,主要負(fù)責(zé)管理文件系統(tǒng)的命名空間、集群配置信息和存儲(chǔ)塊的復(fù)制等。
DataNode是文件存儲(chǔ)的基本單元,它將Block存儲(chǔ)在本地文件系統(tǒng)中,保存了Block的MetaData,同時(shí)周期性地將所有存在的Block信息發(fā)送給NameNode。3.3Hadoop組件的安全機(jī)制3.3.1RPC安全機(jī)制
就通信方式而言,Client與NameNode、NameNode與DataNode都是在不同進(jìn)程、不同系統(tǒng)間的通信,因此Hadoop要用到RPC。
RPC安全機(jī)制是在HadoopRP中添加權(quán)限認(rèn)證授權(quán)機(jī)制。當(dāng)用戶調(diào)用RPC時(shí),用戶的LoginName會(huì)通過RPC頭部傳遞給RPC,之后RPC使用SASL確定一個(gè)權(quán)限協(xié)議(支持Kerberos和DIGEST-MD5兩種),完成RPC授權(quán)。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
客戶端獲取NameNode初始訪問認(rèn)證后,獲取一個(gè)DelegationToken,作為接下來訪問HDFS或者提交作業(yè)的憑證。為了讀取某個(gè)文件,客戶端首先要與NameNode交互,獲取對(duì)應(yīng)數(shù)據(jù)塊的BlockAccessToken,然后到相應(yīng)的DataNode上讀取各個(gè)數(shù)據(jù)塊,而DataNode在初始啟動(dòng)向NameNode注冊(cè)時(shí),已提前獲取這些Token,當(dāng)客戶端要從TaskTracker上讀取數(shù)據(jù)塊時(shí),首先驗(yàn)證Token,通過后才允許讀取。
3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
1.DelegationToken
當(dāng)用戶使用Kerberos證書向NameNode提交認(rèn)證后,從NameNode獲得一個(gè)DelegationToken,之后該用戶提交作業(yè)時(shí)可使用該DelegationToken進(jìn)行身份認(rèn)證。DelegationToken是用戶和NameNode之間的共享密鑰,獲取DelegationToken的任何人都可以假冒該用戶。只有當(dāng)用戶再次使用Kerberos認(rèn)證時(shí),才會(huì)再次得到一個(gè)新的DelegationToken。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
1.DelegationToken
當(dāng)從NameNode獲得DelegationToken時(shí),用戶應(yīng)該告訴NameNode這個(gè)Token的renewer(更新者)。在對(duì)該用戶的Token進(jìn)行更新之前,更新者先向NameNode進(jìn)行認(rèn)證。Token的更新將延長(zhǎng)該Token在NameNode上的有效時(shí)間,而非產(chǎn)生一個(gè)新的Token。為了讓一個(gè)MapReduce作業(yè)使用一個(gè)DelegationToken,用戶通常需要將JobTracker作為DolegationToben的更新者。同一個(gè)作業(yè)下的所有任務(wù)使用同一個(gè)Token。在作業(yè)完成之前,JobTracker確保這些Token是有效的;在作業(yè)完成之后,JobTracker就可以廢除這個(gè)Token。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
1.DelegationToken
NameNode隨機(jī)選取masterKey,并用它生成和驗(yàn)證DelegationToken,保存在NameNode的內(nèi)存中,每個(gè)DelegationToken都有一個(gè)Token,存在expiryDate(過期時(shí)間)。如果currentTime>expiryDate,該Token將被認(rèn)為是過期的,任何使用該Token的認(rèn)證請(qǐng)求都將被拒絕。NameNode將過期的DelegationToken從內(nèi)存中刪除,另外,如果Token和owner(擁有者)和renewer(更新者)廢除了該Token,則NameNode將這個(gè)DelegationToken從內(nèi)容中刪除。SequenceNunber(序列號(hào))隨著新的DelegationToken的產(chǎn)生不斷增大,唯一標(biāo)識(shí)每個(gè)Token。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
1.DelegationToken
當(dāng)客戶端(如一個(gè)Task)使用DelegationToken認(rèn)證時(shí),首先向NameNode發(fā)送Token。TokenID代表客戶端將要使用的DelegationToken。NameNode利用TokenID和masterKey重新計(jì)算出DelegationToken,然后檢查其是否有效。當(dāng)且僅當(dāng)該Token存在于NameNode內(nèi)存中,并且當(dāng)前時(shí)間小于過期時(shí)間時(shí),這個(gè)Token才算是有效的。如果Token是有效的,則客戶端和NameNode就會(huì)使用它們自己的TokenAuthenticator作為密鑰、DIGESTMD5作為協(xié)議相互認(rèn)證。以上雙方認(rèn)證過程中,都未泄露自己的TokeAuthenticator給另一方。如果雙方認(rèn)證失敗,意味著客戶端和NameNode沒有共享同一個(gè)TokenAuthenticator,那么它們也不會(huì)知道對(duì)方的TokenAuthenticator。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
1.DelegationToken
為了保證有效,DelegationToken需要定時(shí)更新。假設(shè)JobTracker是一個(gè)Token的更新者,在JobTacker向NameNode成功認(rèn)證后,JobTracker向NameNode發(fā)送要被更新的Token。NameNode將進(jìn)行如下驗(yàn)證。(1)JobTracker是TokenID中指定的更新者;(2)TokenAuthenticator是正確的;(3)currentTime<maxDate。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
1.DelegationToken
驗(yàn)證成功之后,如果該Token在NameNode內(nèi)存中,即該Token是有效的,則NameNode將其新expiryDate設(shè)置為min(currentTime+renewPeriod,maxDate),如果這個(gè)Token不在內(nèi)存中,說明NameNode重啟丟失了之前內(nèi)存中保存的Token,則NameNode將這個(gè)Token添加到內(nèi)存中,并且用相同的方法設(shè)置其expiryDate,使得NameNode重啟后作業(yè)依然可以運(yùn)行。JobTracker需要在重新運(yùn)行失敗Tasks之前,向NameNode更新所有的DelegationToken。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
1.DelegationToken
注意:只要currentTime<maxDate,那么即使這個(gè)Token已經(jīng)過期,更新者依然可以更新它。因?yàn)镹ameNode無法判斷一個(gè)Token過期與否(或是否被廢除),或是由于NameNode重啟導(dǎo)致其不在內(nèi)存中。只有被指定的更新者可以使一個(gè)過期的Token復(fù)活,即便攻擊者竊取到了這個(gè)Token,也不能更新使其復(fù)活。masterKey需要定時(shí)更新,NameNode只循要將masterKey而不是Tokens保存在磁盤上。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
2.BlockAccessToken
當(dāng)用戶向NameNode請(qǐng)求訪問文件時(shí),NameNode進(jìn)行文件權(quán)限檢查。NameNode根據(jù)對(duì)用戶所請(qǐng)求的文件(即相關(guān)的數(shù)據(jù)塊)是否具有相應(yīng)權(quán)限來做出授權(quán)。為了在HDFS上實(shí)施一致的數(shù)據(jù)訪問控制策略,需要一個(gè)機(jī)制來將NameNode上的訪問授權(quán)實(shí)施到DataNode上,并且任何未授權(quán)的訪問將被拒絕。NameNode通過使用BlockAccessToken向DataNode傳遞數(shù)據(jù)訪問權(quán)限授權(quán)信息。BlockAccessToken由NameNode生成,在DataNode上使用,其擁有者能夠訪問DataNode中的特定數(shù)據(jù)塊,而DataNode能夠驗(yàn)證其授權(quán)。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
2.BlockAccessToken
BlockAccessToken通過對(duì)稱密鑰機(jī)制生成,NameNode和所有的DataNode共享一個(gè)密鑰。對(duì)于每一個(gè)Token,NameNode使用這個(gè)共享密鑰計(jì)算出一個(gè)加密的哈希值(MAC),這個(gè)哈希值就是TokenAuthenticator。TokenAuthenticator是構(gòu)成BlockAccessToken的必要部分。當(dāng)DataNode收到一個(gè)Token時(shí),它使用自己的密鑰重新計(jì)算出Token
Authenticator。并將其與接收到的Token中的TokenAuthenticator進(jìn)行比較,如果匹配,則認(rèn)為這個(gè)Token是可信的。因?yàn)橹挥蠳ameNode和DataNode知道密鑰,所以第三方無法偽造Token。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
2.BlockAccessToken
若使用公鑰機(jī)制生成Token,則計(jì)算成本較為昂貴。其主要優(yōu)點(diǎn)是即使一個(gè)DataNode被攻陷,攻擊者也不會(huì)獲得能夠偽造出有效Token的密鑰。然而,通常在HDFS部署中,所有DataNode的保護(hù)措施都是相同的(相同的數(shù)據(jù)中心、相同的防火墻策略)。如果攻擊者有能力攻陷一個(gè)DataNode,那么就能夠利用相同的手段攻陷所有的DataNode,而不必使用密鑰。因此,使用公鑰機(jī)制不會(huì)帶來根本性的差異。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
2.BlockAccessToken
理想情況下,BlockAccessToken是不可轉(zhuǎn)移的,僅其擁有者可以使用它。Token中包含了其擁有者的ID,無論誰使用這個(gè)Token都要認(rèn)證其是否為擁有者,所以沒有必要擔(dān)心Token的丟失。在當(dāng)前的安全機(jī)制中,BlockAccessToken中包含其擁有者的ID。但DataNode并不驗(yàn)證其擁有者的ID,預(yù)計(jì)以后會(huì)添加相關(guān)驗(yàn)證。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
2.BlockAccessToken
無須更新或者廢除一個(gè)BlockAccessToken。當(dāng)一個(gè)BlockAccessToken過期時(shí),只需獲取一個(gè)新的Token。BlockAccessToken保存在內(nèi)存中,無須寫入磁盤中。BlockAccessToken的使用場(chǎng)景如下:HDFS客戶端向NameNode請(qǐng)求一個(gè)文件的BlockID和所在位置;NameNode驗(yàn)證該客戶端是否被授權(quán)訪問這個(gè)文件,然后將所需的BlockID和對(duì)應(yīng)的BlockAccessToken發(fā)送給客戶端;當(dāng)客戶端需要訪問一個(gè)數(shù)據(jù)塊時(shí),將向DataNode發(fā)送BlockID和對(duì)應(yīng)的BlockAccessToken;DataNode驗(yàn)證收到的BlockAccessToken,判斷是否客戶端允許訪問數(shù)據(jù)塊。HDFS客戶端把從NameNode獲取的BlockAccessToken保存在內(nèi)存中,當(dāng)Token過期或者訪問到未緩存的數(shù)據(jù)塊時(shí),客戶端會(huì)向NameNode請(qǐng)求新的Token。3.3Hadoop組件的安全機(jī)制3.3.2HDFS安全機(jī)制
2.BlockAccessToken
無論數(shù)據(jù)塊實(shí)際存儲(chǔ)在哪里,BlockAccessToken在所有的DataNode上都是有效的。NameNode隨機(jī)選取計(jì)算TokenAuthenticator的密鑰,當(dāng)DataNode首次向NameNode注冊(cè)時(shí),NameNode將密鑰發(fā)送給該DataNode。NameNode上有一個(gè)密鑰滾動(dòng)生成機(jī)制以更新密鑰,并定期將新的密鑰發(fā)送給DataNode。3.3Hadoop組件的安全機(jī)制3.3.3MapReduce安全機(jī)制MapReduce也是Hadoop中核心組件之一,它為海量的數(shù)據(jù)提供計(jì)算。1.作業(yè)提交(JobSubmission)
用戶提交作業(yè)后,JobClient需與NameNode和JobTracker等服務(wù)進(jìn)行通信,以進(jìn)行身份認(rèn)證和獲取相應(yīng)令牌。授權(quán)用戶提交作業(yè)時(shí),JobTracker會(huì)為之生成一個(gè)DelegationToken,該Token將被作為Job的一部分存儲(chǔ)到HDFS上并通過RPC分發(fā)給各個(gè)TaskTracker,一旦Job運(yùn)行結(jié)束,該Token失效。3.3Hadoop組件的安全機(jī)制3.3.3MapReduce安全機(jī)制2.作業(yè)控制
用戶提交作業(yè)時(shí),可通過參數(shù)mapreduce.job.acl-view-job指定哪些用戶或者用戶組可以查看作業(yè)狀態(tài),也可以通過mapreduce.job.acl-modify-job指定哪些用戶或者用戶組可以修改或者殺掉Job。3.3Hadoop組件的安全機(jī)制3.3.3MapReduce安全機(jī)制3.任務(wù)啟動(dòng)
TaskTracker收到JobTracker分配的任務(wù)后,如果該任務(wù)來自某個(gè)作業(yè)的第一個(gè)任務(wù),則會(huì)進(jìn)行作業(yè)本地化:將任務(wù)運(yùn)行相關(guān)的文件下載到本地目錄中,其中,作業(yè)令牌文件會(huì)被寫到${mapred.local.dir}/ttprivate/taskTracker/${user}/jobcache/${jobid}/jobToken目錄下。由于只有該作業(yè)的擁有者可以訪問該目錄,因此令牌文件是安全的。此外,Task要使用作業(yè)令牌向TaskTracker進(jìn)行安全認(rèn)證,以請(qǐng)求新的任務(wù)或者匯報(bào)任務(wù)狀態(tài)。3.3Hadoop組件的安全機(jī)制3.3.3MapReduce安全機(jī)制4.任務(wù)運(yùn)行(Task)
用戶提交作業(yè)的每個(gè)Task均是以用戶身份啟動(dòng)的,這樣,一個(gè)用戶的Task便不可以向TaskTracker或者其他用戶的Task發(fā)送操作系統(tǒng)信號(hào),對(duì)其他用戶造成干擾。這要求為每個(gè)用戶在所有TaskTracker上建一個(gè)賬號(hào)。3.3Hadoop組件的安全機(jī)制3.3.3MapReduce安全機(jī)制5.Shuffle
當(dāng)一個(gè)MapTask運(yùn)行結(jié)束時(shí),它要將計(jì)算結(jié)果告訴管理它的TaskTracker,之后每個(gè)ReduceTask會(huì)通過HTTP向該TaskTracker請(qǐng)求自己要處理的那塊數(shù)據(jù),Hadoop應(yīng)該確保其他用戶不可以獲取MapTask的中間結(jié)果,其做法是:ReduceTask對(duì)“請(qǐng)求URL”和“當(dāng)前時(shí)間”計(jì)算HMAC-SHA1值,并將該值作為請(qǐng)求的一部分發(fā)動(dòng)給TaskTracker,TaskTracker收到后會(huì)驗(yàn)證該值的正確性。3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
1.Ganglia
Ganglia是UCBerkeley發(fā)起的一個(gè)開源集群監(jiān)視項(xiàng)目,用于測(cè)量數(shù)以千計(jì)的節(jié)點(diǎn)。Ganglia的核心包含gmond、gmetad及一個(gè)Web前端,主要用來監(jiān)控系統(tǒng)性能,如CPU、內(nèi)存、硬盤利用率、I\O負(fù)載、網(wǎng)絡(luò)流量情況等。通過曲線可以看到每個(gè)節(jié)點(diǎn)的工作狀態(tài),對(duì)合理調(diào)整、分配系統(tǒng)資源,提高系統(tǒng)整體性能起到重要作用。3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
1.Ganglia
每臺(tái)計(jì)算機(jī)都運(yùn)行一個(gè)收集和發(fā)送度量數(shù)據(jù)的gmond守護(hù)進(jìn)程。接收所有度量數(shù)據(jù)的主機(jī)可以顯示這些數(shù)據(jù)并且可以將這些數(shù)據(jù)的精簡(jiǎn)表單傳遞到層次結(jié)構(gòu)中。這種層次結(jié)構(gòu)模式使得Ganglia可以實(shí)現(xiàn)良好的擴(kuò)展,同時(shí)gmod帶來的系統(tǒng)負(fù)載非常少,使得它成為在集群中各臺(tái)計(jì)算機(jī)上運(yùn)行的一段代碼,不會(huì)影響用戶性能,但所有這些數(shù)據(jù)多次收集就會(huì)影響節(jié)點(diǎn)性能。網(wǎng)絡(luò)中的“抖動(dòng)”發(fā)生在大量小消息同時(shí)出現(xiàn)的時(shí)候,可以通過將節(jié)點(diǎn)時(shí)鐘保持一致來解決問題。3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
1.Ganglia
gmetad可以部署在集群內(nèi)任一節(jié)點(diǎn)或者通過網(wǎng)絡(luò)連接到集群的獨(dú)立主機(jī),它通過單播路由的方式與gmond通信,收集區(qū)域內(nèi)節(jié)點(diǎn)的狀態(tài)信息,并以XML數(shù)據(jù)的形式保存在數(shù)據(jù)庫中。由RRDTool工具處理數(shù)據(jù)并生成相應(yīng)的圖形顯示,以Web方式直觀地提供給客戶端。3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
2.Nagios
Nagios是一個(gè)監(jiān)視系統(tǒng)運(yùn)行狀態(tài)和網(wǎng)絡(luò)信息的監(jiān)視系統(tǒng),能夠監(jiān)視所指定的本地或遠(yuǎn)程主機(jī)及服務(wù),同時(shí)提供異常通知功能。它可以運(yùn)行在Linux/UNIX平臺(tái)上,同時(shí)提供一個(gè)可選的基于瀏覽器的Web界面,以方便系統(tǒng)管理人員查看網(wǎng)絡(luò)狀態(tài)、各種系統(tǒng)問題及日志等。3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
2.Nagios
Nagios可以監(jiān)控的功能包括:?監(jiān)控網(wǎng)絡(luò)服務(wù)?監(jiān)控主機(jī)資源
?簡(jiǎn)單的插件設(shè)計(jì)?并行服務(wù)檢查機(jī)制?具備定義網(wǎng)絡(luò)分層結(jié)構(gòu)的能力3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
2.Nagios
Nagios可以監(jiān)控的功能包括:?當(dāng)服務(wù)或主機(jī)問題產(chǎn)生與解決時(shí),將告警發(fā)送給聯(lián)系人?定義一些處理程序,在服務(wù)/主機(jī)發(fā)生故障時(shí)起預(yù)防作用
?自動(dòng)的日志滾動(dòng)功能?
支持并實(shí)現(xiàn)對(duì)主機(jī)的冗余監(jiān)控?可選的Web界面用于查看當(dāng)前的網(wǎng)絡(luò)狀態(tài)、通知等?通過手機(jī)查看系統(tǒng)監(jiān)控信息?指定自定義的事件處理控制器3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
3.Ambari
ApacheAmbari是一個(gè)基于Web的工具,用于配置、管理和監(jiān)視Hadoop集群,支持HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig和Sqoop。同時(shí),提供了集群狀況儀表盤,如Heatmaps和查看MapReduce、Pig、Hive應(yīng)用程序的能力,以友好的用戶界面對(duì)性能特性進(jìn)行診斷。3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
3.Ambari
Ambari充分利用了已有的優(yōu)秀開源軟件,巧妙地將它們結(jié)合起來,在分布式環(huán)境中具有集群式服務(wù)管理能力、監(jiān)控能力、展示能力。相關(guān)的開源軟件包括:
(1)在Agent端,采用puppet管理節(jié)點(diǎn);
(2)在Web端,采用ember.js作為前端MVC框架和NodeJS相關(guān)工具,handlebars.js作為頁面渲染引擎,在CSS/HTML方面使用Bootstrap框架;
(3)在Server端,采用Jetty、Spring、JAX-RS等;
(4)同時(shí)利用Ganglia、Nagios的分布式監(jiān)控能力。3.4安全技術(shù)工具3.4.1系統(tǒng)安全工具
3.Ambari
Ambari采用Server/Client的框架模式,主要由ambari-agent和ambari-server兩部分組成。Ambari依賴其他已經(jīng)成熟的工具,如ambari-server依賴python,而ambari-agent依賴ruby、puppet、facter等工具,也依賴一些監(jiān)控工具如Nagios和Ganglia用于監(jiān)控集群狀況。其中,puppet是分布式集群配置管理工具,也是典型的Server/Client模式,能夠集中管理分布式集群的安裝配置部署,主要語言是ruby;facter是使用Python編寫的一個(gè)節(jié)點(diǎn)資源采集庫,用于采集節(jié)點(diǎn)的系統(tǒng)信息,如操作系統(tǒng)信息。由于ambari-agent主要使用Python編寫,因此使用facter可以很好地采集節(jié)點(diǎn)信息。3.4安全技術(shù)工具表3.1Ambari項(xiàng)目目錄介紹目
錄描
述ambari-serverAmbari的Server程序,主要管理部署在每個(gè)節(jié)點(diǎn)上的管理監(jiān)控程序ambari-agent部署在監(jiān)控節(jié)點(diǎn)上運(yùn)行的管理監(jiān)控程序Contrib自定義第三方庫ambari-webAmbari頁面UI的代碼,作為用戶與ambari-server的交互ambari-views用于擴(kuò)展ambari-webUI中的框架Docs文檔ambari-commonambari-server和ambari-agent共用的代碼3.4安全技術(shù)工具3.4.2ApacheSentry
1.Sentry
ApacheSentry是一個(gè)Hadoop開源組件,提供細(xì)粒度級(jí)、基于角色的授權(quán)以及多租戶的管理模式。在Hadoop生態(tài)中扮演著“守門人”角色,擔(dān)負(fù)大數(shù)據(jù)平臺(tái)的數(shù)據(jù)安全訪問。以插件形式運(yùn)行于組件中,通過關(guān)系型數(shù)據(jù)庫(或本地文件)來存取訪問策略,對(duì)數(shù)據(jù)使用者提供細(xì)粒度的訪問控制。Sentry僅支持基于角色的訪問控制。無法直接向用戶或組授予權(quán)限,需要在角色下組合權(quán)限。只能將角色授予組,而不能直接授予用戶。3.4安全技術(shù)工具3.4.2ApacheSentry
Sentry授權(quán)包括以下幾種角色:?資源。資源是要管理訪問權(quán)限的對(duì)象,如Server、Database、Table或者URL(如HDFS或本地路徑)。Sentry支持對(duì)列進(jìn)行授權(quán)。?權(quán)限。權(quán)限的本質(zhì)是授權(quán)訪問某一個(gè)資源的規(guī)則。?角色。角色是一系列權(quán)限的集合。?用戶和組。一個(gè)組是一系列用戶的集合。默認(rèn)情況下,Sentry使用Hadoop的組映射。Sentry允許將用戶和組進(jìn)行關(guān)聯(lián)。3.4安全技術(shù)工具3.4.2ApacheSentry
2.Sentry特性
ApacheSentry為Hadoop使用者提供了以下便利:?能夠在Hadoop中存儲(chǔ)更敏感的數(shù)據(jù);?使更多的終端用戶擁有Hadoop數(shù)據(jù)訪問權(quán);?創(chuàng)建更多的Hadoop使用案例;?構(gòu)建多用戶應(yīng)用程序;?符合規(guī)范(如SOX、PCI、HIPAA、EAL3)。3.4安全技術(shù)工具3.4.2ApacheSentry
3.Sentry體系結(jié)構(gòu)的組件及工作流程
(1)BindingBinding實(shí)現(xiàn)對(duì)不同的查詢引擎授權(quán),Sentry將自己的Hook函數(shù)插入到各SQL引擎的編譯、執(zhí)行的不同階段。這些Hook函數(shù)起兩大作用:一是起過濾器的作用,只放行具有相應(yīng)數(shù)據(jù)對(duì)象訪問權(quán)限的SQL查詢;二是起授權(quán)接管的作用,使用了Sentry之后,Grant/Revoke管理的權(quán)限完全被Sentry接管,Grant/Revoke的執(zhí)行也完全在Sentry中實(shí)現(xiàn);所有引擎的授權(quán)信息也存儲(chǔ)在由Sentry設(shè)定的統(tǒng)一的數(shù)據(jù)庫中,這樣就實(shí)現(xiàn)了對(duì)引擎的授權(quán)的集中管理。3.4安全技術(shù)工具3.4.2ApacheSentry
3.Sentry體系結(jié)構(gòu)的組件及工作流程
(2)PolicyEngine這是Sentry授權(quán)的核心組件。PolicyEngine判定從Binding層獲取的輸入的權(quán)限要求與服務(wù)提供層已保存的權(quán)限描述是否匹配。(3)PolicyProviderPolicyProvider負(fù)責(zé)從文件或數(shù)據(jù)庫中讀取原先設(shè)定的訪問權(quán)限。PolicyEngine以及PolicyProvider其實(shí)對(duì)于任何授權(quán)體系來說都是必需的,因此是公共模塊,后續(xù)還可服務(wù)于別的查詢引擎。3.4安全技術(shù)工具圖3.2Sentry權(quán)限管理流程圖3.4安全技術(shù)工具3.4.3ApacheRanger
1.Ranger概念
ApacheRanger提供一個(gè)集中式安全管理框架,提供統(tǒng)一授權(quán)和統(tǒng)一審計(jì)的能力,可對(duì)整個(gè)Hadoop生態(tài)中的組件如HDFS、YARN、Hive、HBase、Kafka、Strom等進(jìn)行細(xì)粒度的數(shù)據(jù)訪問控制。通過操作Ranger控制臺(tái),管理員可輕松通過配置策略來控制用戶訪問HDFS文件夾、HDFS文件、數(shù)據(jù)庫、表、字段權(quán)限。這些策略可以為不同的用戶和組來設(shè)置,同時(shí)權(quán)限可與Hadoop無縫對(duì)接。3.4安全技術(shù)工具圖3.3Ranger架構(gòu)圖(1)RangerAdmin(2)RangerUserSync(3)RangerTagSync(4)RangerPlugin3.4安全技術(shù)工具圖3.3Ranger架構(gòu)圖(1)RangerAdmin(2)RangerUserSync(3)RangerTagSync(4)RangerPlugin3.4安全技術(shù)工具圖3.3Ranger架構(gòu)圖(1)RangerAdmin(2)RangerUserSync(3)RangerTagSync(4)RangerPlugin3.4安全技術(shù)工具圖3.3Ranger架構(gòu)圖(1)RangerAdmin(2)RangerUserSync(3)RangerTagSync(4)RangerPlugin3.4安全技術(shù)工具3.4.3ApacheRanger
2.Ranger權(quán)限模型
Ranger的權(quán)限模型由一條條的權(quán)限策略組成的,權(quán)限策略主要由3個(gè)方面組成,即用戶、資源、權(quán)限。圖3.4Ranger權(quán)限模型3.3Hadoop組件的安全機(jī)制圖3.5用戶訪問資源權(quán)限校驗(yàn)流程圖3.4安全技術(shù)工具3.4.3ApacheRanger
2.Ranger權(quán)限模型
黑名單、黑名單排除、白名單、白名單排除匹配的優(yōu)先級(jí)如下:黑名單優(yōu)先級(jí)高于白名單黑名單排除的優(yōu)先級(jí)高于黑名單白名單排除的優(yōu)先級(jí)高于白名單3.5Hadoop的安全性分析3.4.1Hadoop面臨的安全問題
在1.0版本之前,Hadoop基本沒有任何安全機(jī)制,因此面臨著各方面的安全威脅,主要包括以下方面:(1)如何強(qiáng)制所有類型的客戶端上的用戶及應(yīng)用進(jìn)行驗(yàn)證?(2)如何確保服務(wù)不是服務(wù)冒充的?(3)如何根據(jù)已有的訪問控制策略和用戶憑據(jù)強(qiáng)制數(shù)據(jù)的訪問控制?(4)如何實(shí)現(xiàn)基于屬性的訪問控制(ABAC)或基于角色的訪問控制(RBAC)?(5)怎么才能將Hadoop跟已有的企業(yè)安全服務(wù)集成到一起?3.5Hadoop的安全性分析3.4.1Hadoop面臨的安全問題
在1.0版本之前,Hadoop基本沒有任何安全機(jī)制,因此面臨著各方面的安全威脅,主要包括以下方面:(6)如何控制誰被授權(quán)可以訪問、修改和停止MapReduce作業(yè)?(7)怎么才能加密傳輸中的數(shù)據(jù)?(8)如何加密靜態(tài)數(shù)據(jù)?(9)如何對(duì)事件進(jìn)行跟蹤和審計(jì),如何跟蹤數(shù)據(jù)的出處?(10)對(duì)于架設(shè)在網(wǎng)絡(luò)上的Hadoop集群,通過網(wǎng)絡(luò)途徑保護(hù)它的最好辦法是什么?3.5Hadoop的安全性分析3.4.2Hadoop生態(tài)圈安全風(fēng)險(xiǎn)Hadoop生態(tài)圈的安全風(fēng)險(xiǎn)主要有5類:
1.安全認(rèn)證
任何用戶都可以偽裝成為其他合法用戶,訪問其在HDFS上的數(shù)據(jù),獲取MapReduce產(chǎn)生的結(jié)果,從而存在惡意攻擊者假冒身份,篡改HDFS上他人的數(shù)據(jù),提交惡意作業(yè)破壞系統(tǒng)、修改節(jié)點(diǎn)服務(wù)器的狀態(tài)等隱患。由于集群缺乏對(duì)Hadoop服務(wù)器的認(rèn)證,攻擊者假冒成為DataNode或TaskTracker節(jié)點(diǎn),加入集群,接受NameNode和JobTracker。3.5Hadoop的安全性分析3.4.2Hadoop生態(tài)圈安全風(fēng)險(xiǎn)
2.權(quán)限控制
用戶只要得知數(shù)據(jù)塊的BlockID后,可以不經(jīng)過NameNode的身份認(rèn)證和服務(wù)授權(quán),直接訪問相應(yīng)DataNode,讀取DataNode節(jié)點(diǎn)上的數(shù)據(jù)或者將文件寫入DataNode節(jié)點(diǎn),并可以隨意啟動(dòng)假的DataNode和TaskTracker。對(duì)于JobTracker,用戶可以任意修改或者殺掉其他用戶的作業(yè),提高自身作業(yè)的優(yōu)先級(jí),JabTracker對(duì)此不作任何控制。3.5Hadoop的安全性分析3.4.2Hadoop生態(tài)圈安全風(fēng)險(xiǎn)
3.關(guān)鍵行為審計(jì)
默認(rèn)情況下,Hadoop缺乏審計(jì)機(jī)制,但可以通過Hadoop系產(chǎn)品添加日志監(jiān)控來完成一部分審計(jì)功能。通過日志的記錄來判斷整個(gè)流程中是否存在問題。這種日志的記錄缺乏特征的判斷和自動(dòng)提示功能。完全可以利用進(jìn)行改進(jìn)后的審計(jì)產(chǎn)品來進(jìn)行審計(jì),只審計(jì)客戶端的行為即可追查到惡意操作或誤操作行為。3.5Hadoop的安全性分析3.4.2Hadoop生態(tài)圈安全風(fēng)險(xiǎn)
4.靜態(tài)加密
默認(rèn)情況下,Hadoop在對(duì)集群HDFS系統(tǒng)上的文件沒有存儲(chǔ)保護(hù),所有數(shù)據(jù)均是明文存儲(chǔ)在HDFS中,超級(jí)管理員可以不經(jīng)過用戶允許直接查看和修改用戶在云端保存的文件,這就很容易造成數(shù)據(jù)泄露。采用靜態(tài)加密的方式,對(duì)核心敏感數(shù)據(jù)進(jìn)行加密處理,使得數(shù)據(jù)密文存儲(chǔ),可防止泄露風(fēng)險(xiǎn)。具體細(xì)節(jié)詳見6.1及6.3節(jié)。3.5Hadoop的安全性分析3.4.2Hadoop生態(tài)圈安全風(fēng)險(xiǎn)
5.動(dòng)態(tài)加密
默認(rèn)情況下,Hadoop集群各節(jié)點(diǎn)之間,客戶端與服務(wù)器之間數(shù)據(jù)明文傳輸,使得用戶隱私數(shù)據(jù)、系統(tǒng)敏感信息極易在傳輸?shù)倪^程被竊取。解決動(dòng)態(tài)加密一般會(huì)提供一個(gè)附加的安全層。對(duì)于動(dòng)態(tài)數(shù)據(jù)而言,即傳輸?shù)交驈腍adoop生態(tài)系統(tǒng)傳送出來的數(shù)據(jù),利用簡(jiǎn)單認(rèn)證與安全層(SASL)認(rèn)證框架進(jìn)行加密,通過添加一個(gè)安全層的方式,保證客戶端和服務(wù)器傳輸數(shù)據(jù)的安全性,確保在中途不回被讀。具體細(xì)節(jié)詳見6.2及6.4節(jié)。3.5Hadoop的安全性分析3.4.3Hadoop安全應(yīng)對(duì)廠商們發(fā)布安全產(chǎn)品來彌補(bǔ)Hadoop的不足,主要基于以下考慮:?(1)沒有“靜態(tài)數(shù)據(jù)”加密。?(2)以Kerberos為中心的方式——Hadoop依靠Kerberos做認(rèn)證。?(3)有限的授權(quán)能力。?(4)安全模型和配置的復(fù)雜性。3.5Hadoop的安全性分析3.4.3Hadoop安全應(yīng)對(duì)針對(duì)Hadoop存在的潛在風(fēng)險(xiǎn),其自身改進(jìn):?(1)HDFS的命令行不變,但在WebUI中添加權(quán)限管理。?(2)MapReduce添加ACL。?(3)MapReduce系統(tǒng)目錄訪問權(quán)限改為700。?(4)所有Task以作業(yè)擁有者身份運(yùn)行。?(5)Task對(duì)應(yīng)的臨時(shí)目錄訪問權(quán)限改為700。?(6)DistributedCache是安全的。3.6Hadoop安全技術(shù)架構(gòu)
如何實(shí)現(xiàn)Hadoop安全,可以考慮:認(rèn)證授權(quán)訪問控制數(shù)據(jù)加密網(wǎng)路安全系統(tǒng)安全基礎(chǔ)架構(gòu)安全審計(jì)監(jiān)控3.6Hadoop安全技術(shù)架構(gòu)3.6.1Hadoop認(rèn)證授權(quán)1.用戶層次訪問控制用戶層次訪問控制,要有對(duì)用戶和用戶組的認(rèn)證機(jī)制,具體包括:
?Hadoop用戶只能訪問授權(quán)的數(shù)據(jù);
?只有認(rèn)證的用戶可以向Hadoop集群提交作業(yè);
?用戶可以査看、修改和終止他們的作業(yè);
?只有認(rèn)證的服務(wù)可以注冊(cè)為DataNode或TaskTracker;
?DataNode中數(shù)據(jù)塊的訪問需要保證安全,只有認(rèn)證用戶才能訪問Hadoop集群中存儲(chǔ)的數(shù)據(jù);3.6Hadoop安全技術(shù)架構(gòu)3.6.1Hadoop認(rèn)證授權(quán)2.服務(wù)層次訪問控制服務(wù)層次訪問控制,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東惠州市龍門龍城創(chuàng)展經(jīng)濟(jì)發(fā)展有限責(zé)任公司招聘5人公考前自測(cè)高頻考點(diǎn)模擬試題附答案
- 2025安徽六安市金寨縣消防救援局政府專職消防員招聘10人(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案
- 2025廣西北海市合浦縣人民醫(yī)院校園雙選會(huì)招聘43人(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案
- 2025山東濟(jì)南城投集團(tuán)校園招聘63人模擬試卷附答案
- 2025年安陽縣面向中小學(xué)教師選調(diào)鄉(xiāng)鎮(zhèn)所屬事業(yè)單位工作人員50名(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案
- 2025年甘肅昊源工貿(mào)有限責(zé)任公司招聘?jìng)淇碱}庫附答案
- 2025年伊春豐林縣人民檢察院公開招聘聘用制書記員2人考試歷年真題匯編附答案
- 2026河北邯鄲市公安局峰峰礦區(qū)分局招錄輔警60人筆試備考試題及答案解析
- 2025年上??茖W(xué)院事業(yè)單位工作人員公開招聘?jìng)淇碱}庫(第四批)附答案
- 2026重慶水利電力職業(yè)技術(shù)學(xué)院高層次人才招聘筆試備考題庫及答案解析
- 醫(yī)療衛(wèi)生機(jī)構(gòu)6S常態(tài)化管理打分表
- 幾種常用潛流人工濕地剖面圖
- 危險(xiǎn)源辨識(shí)、風(fēng)險(xiǎn)評(píng)價(jià)、風(fēng)險(xiǎn)控制措施清單-05變電站工程5
- 2023年副主任醫(yī)師(副高)-推拿學(xué)(副高)考試歷年真題摘選帶答案
- 朱子治家格言(朱子家訓(xùn))課件
- 20S517 排水管道出水口
- vpap iv st說明總體操作界面
- 初中一年級(jí)(7年級(jí))上學(xué)期生物部分單元知識(shí)點(diǎn)
- 長(zhǎng)興中學(xué)提前招生試卷
- 2022年基礎(chǔ)教育國家級(jí)教學(xué)成果獎(jiǎng)評(píng)審工作安排
- 生物統(tǒng)計(jì)學(xué)(課堂PPT)
評(píng)論
0/150
提交評(píng)論