韓磊 陳含 郝曉雪
(中國(guó)移動(dòng)(深圳)有限公司,廣東 深圳 518048)
近幾年,如果談到IT科技界最火熱的話題,“大數(shù)據(jù)”應(yīng)屬當(dāng)仁不讓。隨著互聯(lián)網(wǎng)的高速發(fā)展,大量的信息快速流通,人們之間的信息交流越來(lái)越密切,生活也越來(lái)越便利,大數(shù)據(jù)科技就是這個(gè)高科技時(shí)代的產(chǎn)物。企業(yè)利用大數(shù)據(jù)科技對(duì)大量消費(fèi)者消費(fèi)習(xí)慣進(jìn)行統(tǒng)計(jì)分析,利用大數(shù)據(jù)進(jìn)行精準(zhǔn)營(yíng)銷;在互聯(lián)網(wǎng)發(fā)展的浪潮中,大數(shù)據(jù)科技可以促進(jìn)傳統(tǒng)企業(yè)的信息化轉(zhuǎn)型,充分利用大數(shù)據(jù)科技挖掘企業(yè)價(jià)值;大數(shù)據(jù)科技可以促進(jìn)企業(yè)科技創(chuàng)新,孕育新的企業(yè)發(fā)展動(dòng)力。阿里巴巴創(chuàng)辦人馬云曾經(jīng)說(shuō)過(guò),未來(lái)的時(shí)代將不是IT時(shí)代,而是DT的時(shí)代,DT就是Data Technology數(shù)據(jù)科技,顯示大數(shù)據(jù)在阿里巴巴集團(tuán)具有舉足輕重的地位。
眾所周知,任何IT科技的發(fā)展都離不開底層架構(gòu)的支持,大數(shù)據(jù)科技的深入發(fā)展離不開Hadoop等大數(shù)據(jù)底層平臺(tái)技術(shù)的支持,大數(shù)據(jù)的巨量性、多樣性、時(shí)效性、準(zhǔn)確性等特性都要求我們需要有一個(gè)性能穩(wěn)定、信息安全的基礎(chǔ)平臺(tái)作為支撐。這時(shí),Hadoop底層大數(shù)據(jù)集群的平臺(tái)安全問(wèn)題就變得尤為突出,本文正是基于此對(duì)企業(yè)級(jí)大數(shù)據(jù)平臺(tái)安全管理機(jī)制進(jìn)行研究。
在企業(yè)級(jí)大數(shù)據(jù)集群環(huán)境中,通常會(huì)采用多租戶共享Hadoop大數(shù)據(jù)集群的模式。這種模式可以有效縮減集群數(shù)量,便于集中化、統(tǒng)一化管理,減少人力維護(hù)成本,同時(shí)多租戶共享集群避免了數(shù)據(jù)過(guò)度冗余進(jìn)而達(dá)到節(jié)約硬件成本的目的。
多租戶共享大數(shù)據(jù)集群是指:
(1)通常我們把一個(gè)集群使用者,稱作一個(gè)租戶。租戶可能以項(xiàng)目或不同的應(yīng)用劃分。每個(gè)租戶相當(dāng)于一個(gè)資源池,管理員為租戶配置了一定的集群資源,租戶下的所有用戶共用資源池內(nèi)的資源,多個(gè)租戶共同使用一個(gè)Hadoop大數(shù)據(jù)集群;
(2)大數(shù)據(jù)集群管理員為每個(gè)獨(dú)立的租戶分配獨(dú)有的yarn隊(duì)列,每個(gè)yarn隊(duì)列包含一定量的集群資源,每個(gè)租戶只能使用指定yarn隊(duì)列中已分配的資源;
(3)HDFS存儲(chǔ)多種類型的數(shù)據(jù),有公共數(shù)據(jù)、私有數(shù)據(jù),每個(gè)租戶組對(duì)應(yīng)不同的訪問(wèn)權(quán)限,要求特定租戶只能訪問(wèn)自己擁有權(quán)限的數(shù)據(jù)。
多租戶共享Hadoop大數(shù)據(jù)集群給企業(yè)帶來(lái)巨大的硬件成本和維護(hù)成本優(yōu)勢(shì)。同時(shí)由于大數(shù)據(jù)集群的共享性、數(shù)據(jù)隔離性、特有性等特點(diǎn),要求其必須擁有很高的賬戶安全管理和數(shù)據(jù)權(quán)限管理,同時(shí)還要兼顧大規(guī)模數(shù)據(jù)集群的統(tǒng)一化、集中化管理問(wèn)題。這些都決定了Hadoop集群的安全管理機(jī)制變得格外重要和突出,下文正是基于多租戶共享Hadoop大數(shù)據(jù)集群的安全問(wèn)題展開探究。
當(dāng)前大數(shù)據(jù)安全管理主要包含兩部分:用戶認(rèn)證或授權(quán)和Hadoop組件資源的權(quán)限控制。
用戶認(rèn)證是保障多租戶大數(shù)據(jù)集群安全機(jī)制的第一道屏障,在這一步主要實(shí)現(xiàn)用戶需要通過(guò)一系列安全策略對(duì)自身進(jìn)行認(rèn)證(主要通過(guò)Kerberos實(shí)現(xiàn),后續(xù)會(huì)有介紹),只有通過(guò)認(rèn)證的賬號(hào)才能進(jìn)行下一步操作。簡(jiǎn)單總結(jié)這一步主要功能是實(shí)現(xiàn):證明你是你的問(wèn)題。
當(dāng)前主流的大數(shù)據(jù)安全認(rèn)證機(jī)制,主要是通過(guò)Kerberos進(jìn)行用戶認(rèn)證。Kerberos認(rèn)證機(jī)制使得集群中的節(jié)點(diǎn)是可信賴的。Kerberos將認(rèn)證秘鑰放到大數(shù)據(jù)集群的節(jié)點(diǎn)上。集群運(yùn)行時(shí),集群內(nèi)的節(jié)點(diǎn)通過(guò)秘鑰進(jìn)行認(rèn)證。只有通過(guò)Kerberos認(rèn)證節(jié)點(diǎn),才能正常使用集群。沒(méi)有得到秘鑰信息或者冒充集群身份的用戶無(wú)法與集群內(nèi)部的其他節(jié)點(diǎn)通信,從而無(wú)法使用集群資源,防止了惡意登錄或篡改Hadoop集群的問(wèn)題,保證了Hadoop大數(shù)據(jù)集群的安全性、可靠性。
資源權(quán)限控制指的是租戶對(duì)大數(shù)據(jù)平臺(tái)組件的使用權(quán)限的管理,對(duì)租戶權(quán)限進(jìn)行嚴(yán)密的權(quán)限控制,按照實(shí)際租戶需要分配特定的使用權(quán)限。其中比較常見(jiàn)的是針對(duì)如HDFS、hbase、Kafka和yarn隊(duì)列等一系列組件的權(quán)限控制。Hadoop本身集成了Apache Sentry或Apache Ranger實(shí)現(xiàn)大數(shù)據(jù)集群組件資源的權(quán)限管理。簡(jiǎn)單說(shuō)明一下:Apache Sentry是Cloudera公司發(fā)布的一個(gè)Hadoop開源組件,它提供了細(xì)粒度級(jí)、基于角色的授權(quán)以及多租戶的管理模式。Apache Ranger是hortonworks提供一個(gè)集中式安全管理框架,它可以對(duì)Hadoop生態(tài)的組件如Hive、Hbase進(jìn)行細(xì)粒度的數(shù)據(jù)訪問(wèn)控制。通過(guò)操作Ranger控制臺(tái),管理員可以輕松地通過(guò)配置策略來(lái)控制用戶訪問(wèn)HDFS文件夾、HDFS文件、數(shù)據(jù)庫(kù)、表、字段權(quán)限。這些策略可以由不同的用戶和組來(lái)設(shè)置,同時(shí)權(quán)限可與Hadoop無(wú)縫對(duì)接。
目前主流的企業(yè)級(jí)Hadoop大數(shù)據(jù)集群安全機(jī)制,主要存在以下幾點(diǎn)問(wèn)題:
(1)通常企業(yè)級(jí)的Hadoop集群規(guī)模巨大,幾百個(gè)節(jié)點(diǎn)、上千個(gè)節(jié)點(diǎn)的集群是比較常見(jiàn)的。尤其是在多租戶的集群上,Kerberos這種需要獨(dú)占操作系統(tǒng)靜態(tài)kinit自己的Principal的方式,完全無(wú)法接受。試想一下,我們要在成百上千臺(tái)服務(wù)器上執(zhí)行kinit操作,繁重、重復(fù)的工作非??菰?、無(wú)味,會(huì)讓管理員崩潰。
(2)企業(yè)級(jí)大數(shù)據(jù)集群中常見(jiàn)的方案是使用LDAP做認(rèn)證,單獨(dú)使用Kerberos比較小眾,因此采用Kerberos+LDAP是比較理想的方式,LDAP作為總的用戶認(rèn)證中心,使用thrift server的用戶通過(guò)LDAP做認(rèn)證。按照傳統(tǒng)的Hadoop安全認(rèn)證方式,服務(wù)間認(rèn)證使用Kerberos,hive JDBC使用LDAP認(rèn)證,但實(shí)際存在一個(gè)問(wèn)題:Kerberos和LDAP兩套系統(tǒng)是互相獨(dú)立的。例如:用戶A通過(guò)LDAP登錄到hive上對(duì)數(shù)據(jù)做了一下分析查詢,然后想再將自己的spark應(yīng)用提交到集群執(zhí)行,會(huì)發(fā)現(xiàn)Kerberos中根本就不存在此用戶A!按照傳統(tǒng)的操作方式,我們需要在Kerberos里再添加一遍用戶A來(lái)解決,一套系統(tǒng)中有兩個(gè)用戶管理,顯然是不可接受的。
基于上面提到的現(xiàn)有大數(shù)據(jù)安全方案的兩點(diǎn)不足,我們主要思考以下兩個(gè)問(wèn)題:
(1)如何實(shí)現(xiàn)Kerberos賬戶認(rèn)證、LDAP賬號(hào)和操作系統(tǒng)賬號(hào)的統(tǒng)一化、集中化管理問(wèn)題;
(2)如何實(shí)現(xiàn)認(rèn)證賬戶與Hadoop大數(shù)據(jù)集群組件Apache Ranger(或Apache Sentry)權(quán)限管理的有效結(jié)合問(wèn)題。
在正式介紹本文提出的解決方案時(shí),我們先簡(jiǎn)單了解一下FreeIPA和Ranger這兩個(gè)核心概念。
FreeIPA是Redhat公司推出的開源用戶統(tǒng)一管理軟件,其集成了 Kerberos、LDAP、DNS、NTP和 CERTIFICATE 服務(wù)。圖1為FreeIPA的架構(gòu)圖。
圖1 FreeIPA架構(gòu)圖
從圖1可以看出,F(xiàn)reeIPA提供了WEB、命令行兩種管理工具。通過(guò)WEB或者命令行添加用戶,只需要指定用戶名,即可生成LDAP、Kerberos、Linux三個(gè)賬戶,且三個(gè)用戶的密碼和其他信息都是一致的,體現(xiàn)出了FreeIPA的集中化管理和統(tǒng)一性。其主要實(shí)現(xiàn)了Hadoop大數(shù)據(jù)集群的用戶認(rèn)證工作。
Ranger實(shí)現(xiàn)Hadoop集群資源的權(quán)限管理,通過(guò)租戶權(quán)限管理,實(shí)現(xiàn)了租戶資源級(jí)權(quán)限、功能級(jí)權(quán)限兩類權(quán)限管理,實(shí)現(xiàn)對(duì)數(shù)據(jù)資源、計(jì)算資源、管理平臺(tái)功能資源的基于多租戶的權(quán)限管控,確保租戶內(nèi)的資源、數(shù)據(jù)、任務(wù)狀態(tài)等訪問(wèn)安全。
圖2 Ranger架構(gòu)圖
Ranger提供統(tǒng)一的管理界面,包括策略管理、審計(jì)查看、插件管理,可以支持HDFS、Hive、Hbase、Kafka、Knox、Yarn、Storm、Atlas組件,提供細(xì)粒度的權(quán)限控制,表1為Ranger可以實(shí)現(xiàn)的權(quán)限控制粒度表(部分)。
表1 Ranger權(quán)限控制粒度表(部分)
Ranger的訪問(wèn)權(quán)限定義了“用戶-資源-權(quán)限”這三者間的關(guān)系,同時(shí)內(nèi)置了LDAP、文件的用戶同步機(jī)制,Hadoop+Ranger+FreeIPA(LDAP+Kerberos)的完美結(jié)合,保證了大數(shù)據(jù)集群從用戶認(rèn)證到組件權(quán)限控制的整體方案。
本文利用FreeIPA的賬戶集中化、統(tǒng)一化管理特性,通過(guò)WEB或者命令行添加用戶,同時(shí)生成LDAP、Kerberos、Linux三個(gè)賬戶,且三個(gè)用戶的密碼和其他配置信息都是一致的。避免了傳統(tǒng)賬戶認(rèn)證方式兩套賬戶管理系統(tǒng)(Kerbero認(rèn)證系統(tǒng)和LDAP認(rèn)證系統(tǒng))帶來(lái)的維護(hù)不便,從很大程度上減輕了大數(shù)據(jù)集群賬戶維護(hù)的復(fù)雜度。在大數(shù)據(jù)集群的日常維護(hù)過(guò)程中,賬戶的維護(hù)是最復(fù)雜和頻繁的,從賬戶的創(chuàng)建到回收,整個(gè)生命周期都可以通過(guò)FreeIPA的用戶密碼策略進(jìn)行設(shè)置。用戶到期后自動(dòng)失去認(rèn)證資格,只有再次申請(qǐng)延期或開放,才能繼續(xù)使用,可以從根本上對(duì)賬號(hào)的生命周期進(jìn)行控制。
通過(guò)Hadoop Ranger對(duì)集群組件權(quán)限進(jìn)行控制,前面已經(jīng)提到Ranger提供統(tǒng)一的管理界面,包括策略管理、審計(jì)查看、插件管理,可以支持 HDFS、Hive、Hbase、Kafka、Knox、Yarn、Storm、Atlas組件,提供細(xì)粒度的權(quán)限控制。
圖3 FreeIPA和Ranger的Hadoop大數(shù)據(jù)集群架構(gòu)圖
從FreeIPA和Ranger的Hadoop大數(shù)據(jù)集群架構(gòu)圖(圖3)中可以看到,任何通過(guò)大數(shù)據(jù)管理平臺(tái)的請(qǐng)求,首先需要通過(guò)FreeIPA集成的Kerberos服務(wù)完成大數(shù)據(jù)集群的用戶身份認(rèn)證,只有通過(guò)認(rèn)證的賬號(hào)才能使用大數(shù)據(jù)集群內(nèi)的節(jié)點(diǎn),沒(méi)有通過(guò)認(rèn)證的用戶,無(wú)法得到服務(wù)授權(quán),沒(méi)法使用大數(shù)據(jù)集群內(nèi)資源。在完成Kerberos認(rèn)證的同時(shí),由于Kerberos用戶也是LDAP賬戶和Linux系統(tǒng)賬戶,所以一次認(rèn)證就完成了在大數(shù)據(jù)集群的整個(gè)生態(tài)中的認(rèn)證工作。在此需要說(shuō)明的是,因?yàn)橥ㄟ^(guò)FreeIPA創(chuàng)建的賬號(hào)是Linux系統(tǒng)賬號(hào)、LDAP賬號(hào)、Kerberos賬號(hào)統(tǒng)一的,所以根本不存在非法賬號(hào)的認(rèn)證問(wèn)題。
經(jīng)過(guò)FreeIPA認(rèn)證的用戶,在向集群申請(qǐng)資源時(shí),遵循Ranger配置的訪問(wèn)策略和資源權(quán)限,滿足策略規(guī)則的用戶成功分配集群資源,不滿足權(quán)限配置的無(wú)法訪問(wèn)集群資源。例如:用戶在請(qǐng)求訪問(wèn)Hive中test數(shù)據(jù)庫(kù)時(shí),首先需要經(jīng)過(guò)系統(tǒng)Kerberos認(rèn)證,確認(rèn)是否為L(zhǎng)DAP域內(nèi)的賬戶,如果用戶通過(guò)認(rèn)證,繼續(xù)請(qǐng)求Hadoop集群內(nèi)組件資源,檢查Ranger中是否配置相應(yīng)test數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限,可以定義create、select、update、drop、index、lock、alter等控制策略,然后按照已經(jīng)配置好的權(quán)限策略進(jìn)行對(duì)應(yīng)的操作即可。
本文對(duì)企業(yè)級(jí)大數(shù)據(jù)集群安全機(jī)制進(jìn)行了初步的探究,不同的企業(yè)采用的方案可能各不相同,尤其在賬戶集中化認(rèn)證方面,常用的OpenLDA方案不盡相同,不過(guò)最終的目標(biāo)是一致的。本文通過(guò)FreeIPA實(shí)現(xiàn)大數(shù)據(jù)集群前端賬號(hào)的集中化管理和統(tǒng)一策略管理,保障了集群前端賬戶層面的安全性。實(shí)現(xiàn)了前端LDAP賬號(hào)、Linux系統(tǒng)賬號(hào)、Kerberos認(rèn)證賬號(hào)的統(tǒng)一化管理。真正的Hadoop資源、管理權(quán)限是通過(guò)Ranger來(lái)控制的。通過(guò)操作Ranger控制臺(tái),管理員可以輕松通過(guò)配置策略來(lái)控制用戶訪問(wèn)HDFS文件夾、HDFS文件、數(shù)據(jù)庫(kù)、表、字段權(quán)限。本文使用FreeIPA+Ranger的方式,實(shí)現(xiàn)了企業(yè)級(jí)Hadoop大數(shù)據(jù)集群安全管理的整體化方案。限于個(gè)人水平有限,本文中的不當(dāng)之處也在所難免,真誠(chéng)希望請(qǐng)廣大同行不吝賜教,批評(píng)指正。在此,衷心感謝本文中借鑒的一切參考材料的作者。
[1]Apache Ranger ? [EB/OL]. 2017- 12- 15. http://ranger.a(chǎn)pache.org/.
[2]sherlockyb.從kinit 到kerberos 安全機(jī)制[EB/OL].2017-6-4.http://www.jianshu.com/p/2039fe8c62a1.
[3]安裝ipa-server[EB/OL].2012-7-16.http://purplegrape.blog.51cto.com/1330104/932818.
[4]Apache Ranger 剖析:Hadoop 生態(tài)圈的安全管家[EB/OL].2016- 8- 16. http://blog. csdn. net/zhangjun2915/article/details/44830231.
[5]Dong. Hadoop Kerberos 安全機(jī)制介紹[EB/OL]. http://dongxicheng.org/mapreduce/hadoop-kerberos-introduction/
[6]Redhat. LINUX DOMAIN IDENTITY, AUTHENTICATION,AND POLICY GUIDE[EB/OL]. https://access.redhat.com/documentation/en - US/Red_Hat_Enterprise_Linux/7/html/Linux_Domain_Identity_Authentication_and_Policy_Guide/index.html.
[7]Tom White.Hadoop權(quán)威指南(第三版)[M].北京:清華大學(xué)出版社,2014.