張 彬,曹京衛(wèi),劉 果,李長(zhǎng)連(.中訊郵電咨詢?cè)O(shè)計(jì)院有限公司,北京 00048;.中國(guó)聯(lián)通智網(wǎng)創(chuàng)新中心,北京 00033)
隨著《網(wǎng)絡(luò)安全法》[1]和《國(guó)家網(wǎng)絡(luò)空間安全戰(zhàn)略》[2]的發(fā)布和實(shí)施,網(wǎng)絡(luò)安全問(wèn)題被提升到了國(guó)家戰(zhàn)略高度。大數(shù)據(jù)平臺(tái)作為用戶核心業(yè)務(wù)和機(jī)密數(shù)據(jù)的載體,一方面要保證其平臺(tái)內(nèi)部的數(shù)據(jù)安全,另一方面,也要保障大數(shù)據(jù)平臺(tái)與應(yīng)用提供者之間的接口安全。
大數(shù)據(jù)平臺(tái)建設(shè)大多采用分布式架構(gòu)。作為大數(shù)據(jù)平臺(tái)的標(biāo)準(zhǔn)解決方案,Hadoop 成為目前最流行的大數(shù)據(jù)分布式系統(tǒng)架構(gòu)[3],已廣泛應(yīng)用于各個(gè)大數(shù)據(jù)產(chǎn)品生態(tài)體系。Hadoop 平臺(tái)由多個(gè)組件搭建而成,所以各個(gè)組件的安全共同影響并決定著大數(shù)據(jù)平臺(tái)的安全。
目前,Hadoop 存在以下幾個(gè)方面的安全問(wèn)題:內(nèi)部網(wǎng)絡(luò)攻擊或越權(quán)訪問(wèn)[5];缺乏必要的安全認(rèn)證機(jī)制;權(quán)限管理依賴Linux 賬戶的權(quán)限,控制能力較弱并且缺少細(xì)粒度的訪問(wèn)控制;缺乏統(tǒng)一的審計(jì)日志監(jiān)控;無(wú)法保證數(shù)據(jù)傳輸安全。針對(duì)以上安全問(wèn)題,本文從主機(jī)防火墻策略、Kerberos 用戶認(rèn)證和加密、Apache Ranger 細(xì)粒度權(quán)限控制和統(tǒng)一日志審計(jì)3 個(gè)方面,提出一套完整的大數(shù)據(jù)平臺(tái)安全加固的解決方案。
傳統(tǒng)的防火墻已經(jīng)將外網(wǎng)和內(nèi)網(wǎng)隔離開(kāi)[4],但實(shí)際上,80% 的攻擊和越權(quán)訪問(wèn)來(lái)自內(nèi)部網(wǎng)絡(luò)[5]。大數(shù)據(jù)集群一般部署在內(nèi)部網(wǎng)絡(luò),并且大多數(shù)廠商會(huì)租用數(shù)據(jù)基地的服務(wù)器來(lái)部署自己的集群。數(shù)據(jù)基地和外網(wǎng)有專業(yè)的防火墻做隔離,但是內(nèi)網(wǎng)之間,各個(gè)廠商所租用的服務(wù)器都要接受數(shù)據(jù)基地綜合監(jiān)控平臺(tái)的監(jiān)管,并沒(méi)有做到完全的資源隔離,不能排除內(nèi)網(wǎng)員工惡意攻擊或者做一些不恰當(dāng)?shù)牟僮鳌4藭r(shí)就需要依賴服務(wù)器操作系統(tǒng)的主機(jī)防火墻來(lái)阻斷內(nèi)網(wǎng)中其他服務(wù)器的非法訪問(wèn)。
Hadoop 集群部署時(shí),各個(gè)節(jié)點(diǎn)需要完全互信,并且集群運(yùn)行時(shí),各個(gè)服務(wù)占用端口比較多,集群在高負(fù)荷運(yùn)行時(shí),開(kāi)啟防火墻會(huì)影響集群的整體性能,所以官方文檔建議所有主機(jī)關(guān)閉防火墻。但是,數(shù)據(jù)安全是提供任何服務(wù)的前提,遵循“默認(rèn)拒絕,最小放開(kāi)”的原則,在不影響服務(wù)通信的前提下,集群內(nèi)所有服務(wù)器開(kāi)啟主機(jī)防火墻。對(duì)Hadoop 集群內(nèi)開(kāi)放所有IP 和端口訪問(wèn)權(quán)限;對(duì)集群外的主機(jī),只開(kāi)放某些IP下的具體服務(wù)端口訪問(wèn)權(quán)限。以HDFS和Kafka為例。
a)HDFS 客戶端訪問(wèn)HDFS 服務(wù):對(duì)客戶端放開(kāi)用于獲取文件系統(tǒng)Metadata 信息的8020 端口(coresite.xml 配置文件中參數(shù)fs.default.name namenode);對(duì)客戶端放開(kāi)用于數(shù)據(jù)傳輸?shù)乃蠨ateNode 節(jié)點(diǎn)的50010端口(hdfs-site.xml配置文件中參數(shù)dfs.datanode.address)。
b)Kafka 生產(chǎn)者或者消費(fèi)者訪問(wèn)Kafka 集群:對(duì)客戶端放開(kāi)Kafka 集群所有節(jié)點(diǎn)之間通信的RPC 端口9092(server.properties 配置文件中參數(shù)listeners 或者advertised.listeners);對(duì)客戶端放開(kāi)連接Zookeeper 的端口2181(server.properties 配置文件中參數(shù)zookeeper.connect)。
主機(jī)防火墻作為網(wǎng)絡(luò)側(cè)細(xì)粒度的訪問(wèn)控制機(jī)制,能夠有效阻止主機(jī)外任何外網(wǎng)或者內(nèi)網(wǎng)節(jié)點(diǎn)的非法訪問(wèn)。
用戶身份認(rèn)證是對(duì)訪問(wèn)者身份進(jìn)行識(shí)別并確認(rèn)的過(guò)程,是數(shù)據(jù)訪問(wèn)控制的基礎(chǔ),同時(shí)也是實(shí)現(xiàn)大數(shù)據(jù)安全架構(gòu)的基礎(chǔ)。Hadoop 集群默認(rèn)采用基于操作系統(tǒng)賬號(hào)的Simple 認(rèn)證,沒(méi)有安全性保證,用戶只需在客戶端的操作系統(tǒng)上建立一個(gè)同名賬號(hào),即可偽裝成任何用戶訪問(wèn)集群[6],一旦擁有Hadoop 用戶權(quán)限,便能隨意查看、復(fù)制HDFS 上的內(nèi)容,或者進(jìn)行其他操作[7]。Kerberos 作為一種可信的第三方認(rèn)證服務(wù)[8],無(wú)需主機(jī)操作系統(tǒng)認(rèn)證,在非安全網(wǎng)絡(luò)通信中,可使用Kerberos 通過(guò)共享密鑰的方式向另一個(gè)實(shí)體表明其身份信息[9]。
1.2.1 Kerberos認(rèn)證機(jī)制
使用Kerberos 時(shí),一個(gè)客戶端需要通過(guò)以下4 個(gè)步驟來(lái)獲取服務(wù)。
a)認(rèn)證:客戶端向認(rèn)證服務(wù)器(AS)發(fā)送服務(wù)請(qǐng)求。
b)授權(quán):AS生成2個(gè)票據(jù)(Ticket)返回給客戶端,一個(gè)用客戶端密鑰加密,另一個(gè)用服務(wù)端密鑰加密。
c)服務(wù)請(qǐng)求:客戶端向服務(wù)器出示服務(wù)Ticket,證實(shí)自己的合法性。
d)驗(yàn)證服務(wù)器:服務(wù)器給客戶端回復(fù)一條消息,客戶端比較服務(wù)器返回的時(shí)間戳是否一致,來(lái)驗(yàn)證服務(wù)器的真實(shí)性。
Kerberos 支持單點(diǎn)登錄,即當(dāng)客戶端通過(guò)了Kerberos的認(rèn)證后,便可以訪問(wèn)多個(gè)服務(wù)實(shí)體。
1.2.2 Kerberos服務(wù)高可用方案
在實(shí)際生產(chǎn)環(huán)境中,集群規(guī)模都比較大,部署單個(gè)節(jié)點(diǎn)的Kerberos 認(rèn)證服務(wù)往往會(huì)出現(xiàn)單點(diǎn)故障問(wèn)題。對(duì)于一個(gè)啟用了Kerberos 服務(wù)的Hadoop 集群來(lái)說(shuō),KDC 的高可用是必須要考慮的。Kerberos 服務(wù)支持一主多備的模式,通過(guò)kprop 服務(wù)將主節(jié)點(diǎn)的數(shù)據(jù)同步到各個(gè)備節(jié)點(diǎn)。Kerberos 服務(wù)高可用認(rèn)證系統(tǒng)架構(gòu)如圖1所示。
圖1 Kerberos高可用架構(gòu)
Kerberos 中每個(gè)KDC 都包含數(shù)據(jù)庫(kù)的副本。主KDC 包含域(Realm)數(shù)據(jù)庫(kù)的可寫副本,它以固定的時(shí)間間隔復(fù)制到從KDC 中。所有數(shù)據(jù)庫(kù)更改(例如密碼更改)都在主KDC 上進(jìn)行,當(dāng)主KDC 不可用時(shí),從KDC 提供Kerberos 票據(jù)給服務(wù)授權(quán),但不提供數(shù)據(jù)庫(kù)管理。
Kerberos 的同步機(jī)制只復(fù)制主數(shù)據(jù)庫(kù)的內(nèi)容,相關(guān)配置文件必須手動(dòng)復(fù)制到每個(gè)Slave 中,Kerberos 服務(wù)配置高可用的主要步驟如下。
a)主備節(jié)點(diǎn)安裝Kerberos服務(wù)。
b)主節(jié)點(diǎn)Kerberos配置文件修改。
c)主節(jié)點(diǎn)配置文件拷貝至備節(jié)點(diǎn)。
d)主節(jié)點(diǎn)數(shù)據(jù)同步至備節(jié)點(diǎn)并配置同步任務(wù)。
Kerberos 高可用服務(wù)為Hadoop 提供了較強(qiáng)的認(rèn)證及授權(quán)保護(hù),所有節(jié)點(diǎn)必須通過(guò)認(rèn)證確認(rèn)身份后才能訪問(wèn)集群資源,有效避免了針對(duì)Hadoop集群的惡意使用或篡改。
1.2.3 Kerberos數(shù)據(jù)加密
客戶端和服務(wù)端相互認(rèn)證階段使用的是長(zhǎng)期密鑰,而認(rèn)證結(jié)束后,客戶端和服務(wù)端都會(huì)獲取到認(rèn)證服務(wù)器隨機(jī)生成的臨時(shí)會(huì)話密鑰,此密鑰將作為臨時(shí)通信密鑰來(lái)加密需要傳輸?shù)膬?nèi)容,一段時(shí)間后會(huì)話密鑰會(huì)過(guò)期,需要重新申請(qǐng),這樣保證了數(shù)據(jù)傳輸?shù)陌踩浴?/p>
大數(shù)據(jù)集群中各個(gè)組件的訪問(wèn)權(quán)限控制都依賴于HDFS 分布式文件系統(tǒng)的權(quán)限控制。HDFS 的權(quán)限設(shè)計(jì)基于POSIX 模型,權(quán)限劃分為用戶、用戶組以及其他用戶的讀寫執(zhí)行權(quán)限。每個(gè)用戶使用不同的Linux 賬戶便能訪問(wèn)到相應(yīng)文件。若用戶已獲得HDFS NameNode 地址和端口號(hào),在HDFS 客戶端安裝完成后,使用與NameNode 相同的用戶名,即可獲得任意文件的訪問(wèn)權(quán)限,這就無(wú)法保證各個(gè)組件的數(shù)據(jù)安全性。
Apache Ranger 作為一個(gè)集中式安全管理框架,能為Hadoop 生態(tài)組件提供操作、監(jiān)控、管理復(fù)雜數(shù)據(jù)權(quán)限的能力[10],并且可以對(duì)用戶的行為日志進(jìn)行統(tǒng)一的審計(jì)管理[11]。
1.3.1 Ranger權(quán)限管理
細(xì)粒度權(quán)限管理在數(shù)據(jù)級(jí)別沒(méi)有共性,不同的組件對(duì)應(yīng)的業(yè)務(wù)資源是不一樣的,細(xì)粒度權(quán)限控制如表1所示。
表1 細(xì)粒度權(quán)限控制表
Ranger 基于策略來(lái)抽象出用戶、資源以及權(quán)限之間的關(guān)系,從而進(jìn)一步延伸并形成自己的權(quán)限模型。
用戶:用用戶(User)或者用戶組(Group)來(lái)表示。
資源:用(服務(wù),策略)二元組來(lái)表示;一條策略對(duì)應(yīng)一個(gè)服務(wù),并且是唯一對(duì)應(yīng),但一個(gè)服務(wù)可以對(duì)應(yīng)多個(gè)策略。
權(quán)限:用(AllowACL,DenyACL)二元組來(lái)表示,AllowACL代表允許執(zhí)行,DenyACL中則代表拒絕執(zhí)行。
用戶訪問(wèn)決策樹(shù)如圖2所示。
圖2 訪問(wèn)決策樹(shù)
一條策略有4 組決策項(xiàng):allow、allowException、deny、denyException,優(yōu)先級(jí)由高到低依次是:denyException、deny、allowException、allow。如果沒(méi)有策略能決策訪問(wèn),一般情況是認(rèn)為沒(méi)有權(quán)限拒絕訪問(wèn),此時(shí)Ranger會(huì)將決策下放給系統(tǒng)自身的訪問(wèn)控制層,如HDFS 分布式文件系統(tǒng)的權(quán)限控制層。
1.3.2 Ranger Audit日志審計(jì)
大數(shù)據(jù)集群各個(gè)組件都可以配置審計(jì)日志,這些審計(jì)日志會(huì)以文件的方式存儲(chǔ)在各個(gè)節(jié)點(diǎn)上,查詢審計(jì)日志比較繁瑣,不利于追蹤、定位用戶發(fā)起的任務(wù)。
Ranger在控制訪問(wèn)權(quán)限的同時(shí)會(huì)記錄所有用戶訪問(wèn)集群資源的行為并寫入日志,這些審計(jì)日志統(tǒng)一存儲(chǔ)在HDFS 文件系統(tǒng)中。Ranger 提供一個(gè)統(tǒng)一的審計(jì)管理平臺(tái)來(lái)展示和統(tǒng)計(jì)這些審計(jì)日志,審計(jì)管理包含以下6個(gè)部分。
a)Access:Access 頁(yè)為管理員提供所有已開(kāi)啟審計(jì)策略的服務(wù)活動(dòng)數(shù)據(jù),記錄用戶試圖訪問(wèn)資源的行為和決策結(jié)果(允許或者拒絕)。
b)Admin:Admin 選項(xiàng)卡記錄管理員操作Ranger Web UI 的所有事件,包括創(chuàng)建、刪除、修改策略等操作。
c)Login Sessions:Login Sessions 頁(yè)面記錄每個(gè)用戶登錄Ranger Web UI的會(huì)話信息。
d)Plugins:插件選項(xiàng)卡顯示安全代理的上載歷史,用于檢查組件是否成功地與Ranger通信。
e)Plugin Status:插件狀態(tài)選項(xiàng)卡顯示每個(gè)插件的有效策略,包括相關(guān)的主機(jī)信息以及插件下載和開(kāi)始執(zhí)行策略的時(shí)間。
f)User Sync:用戶同步頁(yè)面記錄從Unix 或LDAP同步的用戶和組信息,默認(rèn)1 min同步1次。
通過(guò)Ranger 審計(jì)管理界面可以看到詳細(xì)的用戶操作日志信息,方便管理員監(jiān)控、查詢用戶的歷史操作,做到有證可查。
本節(jié)以訪問(wèn)HDFS 文件系統(tǒng)為例對(duì)防火墻策略部署進(jìn)行說(shuō)明,具體如圖3所示。
圖3 數(shù)據(jù)采集拓?fù)鋱D
假設(shè)數(shù)據(jù)采集區(qū)的采集服務(wù)器從公網(wǎng)采集過(guò)來(lái)的數(shù)據(jù)要寫入核心數(shù)據(jù)區(qū)的HDFS 文件系統(tǒng),首先要開(kāi)放kerberos 服務(wù)的kdc 端口88 和admin_server 端口749,用作kerberos 用戶認(rèn)證,其次需要核心數(shù)據(jù)區(qū)的NameNode 節(jié)點(diǎn)對(duì)數(shù)據(jù)采集區(qū)開(kāi)放用于獲取文件系統(tǒng)Metadata 信息和接收Client 端RPC 連接的端口8020,另外還要對(duì)數(shù)據(jù)采集區(qū)的節(jié)點(diǎn)開(kāi)放所有DateNode 的50010 端口,此端口是DateNode 服務(wù)端口,用于數(shù)據(jù)傳輸。
以“默認(rèn)拒絕,最小放開(kāi)”的原則,既能保證用戶的訪問(wèn),又最大限度地保證網(wǎng)絡(luò)安全。
為了確保Hadoop 集群的安全,集群內(nèi)每個(gè)節(jié)點(diǎn)都必須設(shè)置Kerberos 認(rèn)證。首先,選擇安全且獨(dú)立的節(jié)點(diǎn)安裝并配置Kerberos 服務(wù);然后,將集群中所有服務(wù)、節(jié)點(diǎn)和用戶標(biāo)識(shí)都保存至Kerberos 數(shù)據(jù)庫(kù)中;最后,修改所有節(jié)點(diǎn)的Hadoop 配置,配置文件中加入Kerberos 認(rèn)證,方可啟動(dòng)Hadoop 集群。詳細(xì)配置流程如下。
a)安裝KDC,選擇2 個(gè)獨(dú)立節(jié)點(diǎn)進(jìn)行安裝,要保證絕對(duì)安全;在安裝成功后,需要修改3 個(gè)配置文件:krb5.conf、kdc.conf 和kadm5.acl,包括配置KDC 所在的位置、管理服務(wù)器、主機(jī)名與Kerberos 領(lǐng)域名之間的映射等。最后,在所有節(jié)點(diǎn)上安裝Kerberos客戶端。
b)配置Hadoop 服務(wù)標(biāo)識(shí)。在KDC主節(jié)點(diǎn)中分別創(chuàng)建HDFS、Mapred、Yarn 三者的對(duì)應(yīng)標(biāo)識(shí),以確保Kerberos 認(rèn)證Hadoop 的守護(hù)進(jìn)程,然后創(chuàng)建HTTP 服務(wù)標(biāo)識(shí)。
c)為Hadoop 服務(wù)創(chuàng)建Keytab 文件。Keytab 文件中包含1 個(gè)鍵值對(duì):Kerberos 標(biāo)識(shí)、基于Kerberos 密碼生成的加密密鑰。該文件的作用是當(dāng)服務(wù)在后臺(tái)運(yùn)行時(shí),在沒(méi)有人機(jī)交互的情況下進(jìn)行認(rèn)證。
d)啟用KDC主節(jié)點(diǎn)kprop服務(wù)將主節(jié)點(diǎn)的數(shù)據(jù)同步到KDC備節(jié)點(diǎn)。
e)向集群節(jié)點(diǎn)分發(fā)Keytab 文件。每個(gè)節(jié)點(diǎn)都需要?jiǎng)?chuàng)建相應(yīng)的Keytab 文件,在創(chuàng)建完成后需將Keytab文件移動(dòng)到節(jié)點(diǎn)的/etc/hadoop/conf目錄。
f)修改Keytab 文件權(quán)限,確保Keytab 文件的所有者才可以進(jìn)行查看。
g)設(shè)置Hadoop 配置文件,Kerberos 生效。在更新配置文件前,要先關(guān)閉集群,并重新設(shè)置core-site.xml和hdfs-site.xml配置文件。
在Hadoop 開(kāi)源社區(qū)提供的大數(shù)據(jù)平臺(tái)框架上部署Kerberos 認(rèn)證服務(wù)較為復(fù)雜,如果使用Ambari 搭建的HDP 集群,部署Kerberos 認(rèn)證會(huì)簡(jiǎn)便很多。Ambari服務(wù)會(huì)自動(dòng)為Hadoop 集群中的服務(wù)創(chuàng)建用戶密鑰和Keytab文件,并協(xié)助用戶修改Hadoop配置文件。
Apache Ranger 是Hadoop 生態(tài)中的安全管理框架,主要由Hortonworks 開(kāi)源和維護(hù),和Hortonworks HDP 結(jié)合得比較好,通過(guò)Ambari 服務(wù),用戶可以直接安裝Ranger 服務(wù)和相關(guān)插件。使用原始的方式部署Ranger,需要從官網(wǎng)下載源碼手動(dòng)編譯,并修改大量的配置文件。簡(jiǎn)單介紹一下使用Ambari 集成Ranger 服務(wù)的注意事項(xiàng)。
a)Ranger 服務(wù)需要依賴第三方的數(shù)據(jù)庫(kù)如MySQL、Oracle、Postgres 等,建議使用集群依賴的存儲(chǔ)元數(shù)據(jù)的數(shù)據(jù)庫(kù)。
b)Ranger服務(wù)節(jié)點(diǎn)需要安裝數(shù)據(jù)庫(kù)客戶端。
c)建議在數(shù)據(jù)庫(kù)中提前創(chuàng)建好Ranger管理用戶、密碼和database。
d)如果使用MySQL 作為數(shù)據(jù)庫(kù),請(qǐng)修改MySQL配置文件my.cnf,添加skip_ssl 來(lái)關(guān)閉SSL 驗(yàn)證,修改后重啟MySQL服務(wù)
e)執(zhí)行ambari-server setup 指定配置Ambari-Server的JDBC驅(qū)動(dòng)信息。
f)Ranger deny 策略默認(rèn)不會(huì)啟用,如果需要啟用,需要在Ranger部署完后在Ambari中Ranger配置下添加:ranger.servicedef.enableDenyAndExceptionsInPolicies=true。
使用Ambari 管理界面配置Ranger 服務(wù)較為簡(jiǎn)單,這里不再介紹。
通過(guò)Hadoop 客戶端上傳數(shù)據(jù)文件到HDFS 文件系統(tǒng)模擬數(shù)據(jù)采集流程,驗(yàn)證本文大數(shù)據(jù)平臺(tái)加固方案的安全性,用戶訪問(wèn)控制需滿足如圖4所示的流程。
圖4 用戶訪問(wèn)控制流程圖
使用3 臺(tái)虛擬機(jī)組成的Ambari HDP 集群作為驗(yàn)證環(huán)境,另外1臺(tái)虛擬機(jī)模擬數(shù)據(jù)采集服務(wù)器訪問(wèn)Hadoop 集群,實(shí)驗(yàn)環(huán)境和實(shí)驗(yàn)拓?fù)淙绫? 和圖5 所示。
表2 實(shí)驗(yàn)環(huán)境
圖5 實(shí)驗(yàn)拓?fù)鋱D
實(shí)驗(yàn)操作步驟如下。
a)集群內(nèi)的3 臺(tái)服務(wù)器全部開(kāi)啟主機(jī)防火墻,默認(rèn)拒絕所有節(jié)點(diǎn)訪問(wèn)。增加訪問(wèn)策略如下:集群內(nèi)的3臺(tái)服務(wù)器可互訪;允許采集服務(wù)器data1訪問(wèn)hdp1和hdp2 中的Kerberos 認(rèn)證端口88 和749;允許采集服務(wù)器data1 訪問(wèn)hdp1 的8020 和50010 端口;允許采集服務(wù)器data1訪問(wèn)hdp2和hdp3的50010端口。
b)為采集服務(wù)器data1 部署hadoop 客戶端,保證其能正常訪問(wèn)執(zhí)行HDFS命令。
c)為采集服務(wù)器data1 新增Kerberos 認(rèn)證用戶hdfstest,并生成Keytab 文件;同時(shí)將Keytab 文件拷貝到data1節(jié)點(diǎn)。
d)使用hdfs用戶登錄hdp1節(jié)點(diǎn),創(chuàng)建HDFS目錄/hdfstest,并修改權(quán)限為700。
e)登錄Ranger 管理界面,新增Ranger 內(nèi)部用戶hdfstest并添加至用戶組hadoop。
f)新增hdfstest 用戶訪問(wèn)策略,允許訪問(wèn)/hdfstest目錄的讀寫權(quán)限。
在主機(jī)防火墻啟用但未開(kāi)放端口策略的前提下,執(zhí)行HDFS 上傳文件命令到/hdfstest 目錄失敗,無(wú)法訪問(wèn)目標(biāo)主機(jī);采集服務(wù)器data1節(jié)點(diǎn)在沒(méi)有使用Kerberos認(rèn)證的情況下,執(zhí)行HDFS上傳文件命令到/hdfstest目錄,訪問(wèn)失敗,沒(méi)有有效的證書(shū);禁用Ranger 內(nèi)部用戶hdfstest 的訪問(wèn)策略,使用Kerberos 分配的證書(shū)認(rèn)證后,能夠識(shí)別用戶身份,但用戶沒(méi)有權(quán)限訪問(wèn)/hdfstest目錄;啟用Ranger 內(nèi)部用戶hdfstest 的訪問(wèn)策略,使用Kerberos 分配的證書(shū)認(rèn)證后,上傳文件到/hdfstest 目錄成功;停掉主KDC 的進(jìn)程,使用Kerberos 分配的證書(shū)認(rèn)證后,上傳文件到/hdfstest目錄成功。
實(shí)驗(yàn)結(jié)果滿足圖4中用戶訪問(wèn)控制流程。在停掉主節(jié)點(diǎn)KDC 進(jìn)程后,客戶端仍然能夠通過(guò)Kerberos 認(rèn)證并上傳數(shù)據(jù)文件,驗(yàn)證了KDC 的高可用性;登錄Ranger管理界面后,能夠看到詳細(xì)用戶訪問(wèn)審計(jì)日志,方便管理員監(jiān)控、查詢用戶的歷史操作。
實(shí)驗(yàn)結(jié)果符合預(yù)期目標(biāo),驗(yàn)證了方案的可行性和有效性,并且該方案已應(yīng)用到實(shí)際生產(chǎn)環(huán)境中,能夠滿足大數(shù)據(jù)平臺(tái)的安全需求。
隨著Hadoop生態(tài)系統(tǒng)的廣泛應(yīng)用,安全漏洞日益增多,本文從主機(jī)防火墻策略、Kerberos 用戶認(rèn)證和加密、Apache Ranger 細(xì)粒度權(quán)限控制和統(tǒng)一日志審計(jì)3個(gè)方面,提出一套完整的大數(shù)據(jù)平臺(tái)安全加固的解決方案,并通過(guò)實(shí)驗(yàn)驗(yàn)證該方案的可行性與有效性。下一步將研究針對(duì)大數(shù)據(jù)平臺(tái)的系統(tǒng)風(fēng)險(xiǎn)評(píng)估和安全預(yù)警,并提出相應(yīng)的安全加固方案。