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