引言:敏感數(shù)據(jù)在傳輸過程中,從終點傳輸?shù)郊簳r,或者在企業(yè)數(shù)據(jù)從集群中的一個節(jié)點轉(zhuǎn)移到另一個節(jié)點時,都必須受到保護(hù)。有一些方案可以為靜態(tài)和傳輸?shù)臄?shù)據(jù)進(jìn)行數(shù)據(jù)加密,從而使企業(yè)不僅可以滿足合規(guī)要求,更為重要的是,還可以保護(hù)信息資產(chǎn)的安全。
在真正的大數(shù)據(jù)環(huán)境中,有很多其他的數(shù)據(jù)源、數(shù)據(jù)暫存區(qū)域、臨時文件和日志文件都保存著HDFS之外的敏感數(shù)據(jù)。當(dāng)然,敏感數(shù)據(jù)在傳輸過程中,從終點傳輸?shù)郊簳r,或者在企業(yè)數(shù)據(jù)從集群中的一個節(jié)點轉(zhuǎn)移到另一個節(jié)點時,都必須受到保護(hù)。有一些方案可以為靜態(tài)和傳輸?shù)臄?shù)據(jù)進(jìn)行數(shù)據(jù)加密,從而使企業(yè)不僅可以滿足合規(guī)要求,還可以保護(hù)信息資產(chǎn)的安全。
確保Apache Hadoop集群安全的首要一步是支持傳輸加密,這是為日后增加的每一個其他的安全層的基礎(chǔ)。認(rèn)證和Kerberos依賴于通信安全,所以在深入支持認(rèn)證和Kerberos之前,必須支持?jǐn)?shù)據(jù)傳輸?shù)募用堋?/p>
Apache Hadoop并非是“鐵板一塊”的應(yīng)用,正相反,它要涉及Pig和Hive直至Impala及Kudu等。這些服務(wù)可能與包括RPC、TCP/IP等協(xié)議在內(nèi)的不同協(xié)議通信,而且每種協(xié)議都有加密數(shù)據(jù)的不同方法。使用Web的都不會對瀏覽器地址欄中的“https://”及其旁邊的鎖頭標(biāo)志感到陌生。與之類似的是,要實現(xiàn)Hadoop中的安全通信,需要支持使用協(xié)議的安全版本。
對于與RPC通信的組件來說,需啟用SASL來保護(hù)傳輸中的RPC數(shù)據(jù)。SASL是通過在core-site.xml文件中設(shè)置hadoop.rpc.protection屬性來啟用,在啟用此選項時有三個選項:
認(rèn)證:提供雙方間的身份驗證;
完整性:提供雙方間的身份驗證和消息的完整性;
私密性:除提供認(rèn)證和完整性之外,還提供機(jī)密性。
當(dāng)然,用戶可能希望選用最安全的選項,所以下面就看看在core-site.xml文件的內(nèi)容:
改變此屬性后,在集群中的所有后臺程序均需重新啟動,以確保所有各方都通過相同的加密協(xié)議進(jìn)行通信。
由于Hadoop 的數(shù)據(jù)協(xié)議用于通過集群數(shù)據(jù)節(jié)點發(fā)送和接收數(shù)據(jù),這種協(xié)議使用直接的TCP/IP套接字,并且支持通過密鑰(由RPC進(jìn)行交換)進(jìn)行加密通信。為支持TCP/IP加密的數(shù)據(jù)流,用戶需在hdfssite.xml配置文件中將dfs.encrypt.data.transfer屬性設(shè)置為“true”。這種配置的變化也必須在NameNode和 DataNodes中做出改變:
還可選擇配置加密密碼;在此案例中,已經(jīng)配置了更安全的AES-256算法。
在改變了這種屬性后,集群中的NameNode 和DataNode后臺程序都需要重新啟動。
不同的Hadoop組件都是用不同的編碼語言開發(fā)的,例如,MapReduce用Java開發(fā),因而SSL/TLS可以用不同的方法進(jìn)行配置。此例中檢查啟用MapReduce v2的WebUI的加密。
為啟用MapReduce v2的加密WebUI,需要編輯 core-site.xml文件,將hadoop.ssl.enabled屬性設(shè)置為”true”:
為啟用MapReduce v2的shuffle,用戶需要編輯mapred-site.xml文件并將
mapreduce.shuffle.ssl.enabled屬性設(shè)置為“true”:
除此之外,還有證書問題、信任存儲以及其他SSL/TLS配置。但是,由于此文只是從一個較高的層次上進(jìn)行概覽而不討論細(xì)節(jié),而是僅僅指出用戶需要從活動目錄管理員或內(nèi)部的CA獲得SSL/TLS證書后,用正確的值來修改ssl-server.xml和ssl-client.xml文件。
在啟用了所有Apache Hadoop組件中的傳輸數(shù)據(jù)和靜態(tài)數(shù)據(jù)加密后,用戶需要配置的最后一方面就是HDFS之外的數(shù)據(jù)加密。
雖然有些企業(yè)可能會考慮加密硬盤,但并不普遍,而且還要求專門的和更為昂貴的硬件。相反,可以充分利用Linux的本地靜態(tài)數(shù)據(jù)加密特性,即dm-crypt。
通 過dm-crypt和LUKS用戶可以創(chuàng)建一個加密的塊設(shè)備,使其位于用戶的標(biāo)準(zhǔn)存儲設(shè)備之上,并且在其讀寫文件時對數(shù)據(jù)進(jìn)行加密或解密。雖然由于Cryptsetup等工具的使用可以使建立dm-crypt塊設(shè)備相當(dāng)簡單,但加密口令的存儲和保護(hù)并非不重要,并且要求謹(jǐn)慎規(guī)劃和測試。