蘇秋月,陳興蜀,羅永剛
(1. 四川大學計算機學院,四川 成都 610065;2. 四川大學網絡空間安全學院,四川 成都 610065;3. 四川大學網絡空間安全研究院,四川 成都 610065)
大數據平臺不僅是分布式、高度可擴展的平臺,還支持多源異構數據源的集成。隨著大數據、云計算的不斷發展,越來越多的企業將其內部數據存放在公共大數據平臺中,以降低公司的運行成本。與此同時,如何保障平臺中的數據不被其他租戶非法訪問,確保數據的安全性成為企業用戶關心的問題。因此,如何實現云存儲中多租戶的數據安全隔離一直是業界研究的重點。
訪問控制是實現數據受控訪問、保護數據安全的有效手段之一。在存儲海量多源異構數據的大數據開放平臺上,為了實現租戶之間數據的隔離訪問,應實施高效、細粒度且靈活的訪問控制。但在大數據平臺中對多源異構數據的訪問控制面臨如下問題:首先大數據平臺上匯聚了來自不同租戶的異構數據,雖然基于Hadoop的大數據平臺提供了不同的組件來存儲這些多源異構的數據,但大多只能依賴訪問控制列表(ACL, access control list)[1]實現粗粒度的訪問控制,在使用過程中權限不易管控,存在用戶可以擅自提權的風險;其次平臺中用戶、數據以及訪問上下文環境在時刻變化,訪問權限也需要隨之變化,否則容易出現授權不足或過度授權的問題。
近年來,國內外企業和學者對 Hadoop平臺的訪問控制問題進行了深入研究。Hortonworks公司和Cloudera公司相繼推出了Hadoop平臺上集中訪問控制的開源框架,分別是 Apache Ranger[2]和 Apache Sentry[3]。其中,Ranger采用基于策略的訪問控制模型,通過設置策略為用戶或用戶組授予對數據的訪問權限。Sentry采用基于角色的訪問控制(RBAC,role-based access control)模型[4]。RBAC模型通過分配給用戶的角色來授予用戶訪問的權限,并且可以通過構建角色層次結構來減少用戶-角色分配,實現了對訪問控制系統的簡單管理。但在多租戶環境下,用戶-角色關系和角色-權限關系經常變化,安全管理員難以考慮所有的數據訪問權限,使權限分配難度增加。
Gupta 等[5-6]總結 Ranger、Sentry 以及 Hadoop原生基于ACL這3種訪問控制機制的特點,提出了Hadoop生態系統的多層授權框架和Hadoop生態系統授權模型。陳垚坤等[7]和Gupta等[8]將基于屬性的訪問控制(ABAC,attribute-based access control)[9]模型應用到Hadoop平臺中,根據用戶、數據、環境以及操作的屬性制定訪問控制策略,其中,相應屬性可以包含實體的任何描述符,如標簽、安全級別等。與RBAC模型相比,ABAC模型利用基于屬性的訪問控制策略直接定義了用戶權限關系,實現了更加靈活的訪問控制,在一定程度上避免了RBAC中權限分配困難的問題。但正是由于ABAC模型靈活的授權管理,目前屬性的定義沒有一個較好的格式標準,導致屬性管理難度較大。另外,訪問權限判定的時間消耗也取決于屬性選擇的復雜性。
文獻[10-12]將 RBAC模型與主客體標簽結合,提出了一種面向多租戶云存儲平臺的訪問控制策略。該策略通過比較主客體標簽是否相符,確保了租戶之間數據的強隔離性,但隨著用戶和數據不斷變化,這種強制訪問控制機制下的訪問權限難以靈活地隨之改變。Bhatt等[13]將角色作為屬性之一添加到ABAC模型中,提出在多租戶云環境下的一種屬性角色結合的訪問控制機制。王于丁等[14]進一步提出了一種基于角色和屬性的云計算數據訪問控制模型。最近,Gupta等[15]在Hadoop生態系統中討論了角色與屬性結合的方法,將對象標簽作為對象屬性添加到RBAC模型中,提出基于對象標簽的角色訪問控制模型。上述研究將屬性與RBAC結合使用,實現了簡單的授權管理和動態的權限分配,但均未解決屬性管理復雜的問題。
針對上述問題,本文提出了大數據平臺下多源異構數據的訪問控制模型(MT-MHAC,access control model for multi-source heterogeneous data in big data platform)。該模型通過構建數據組層次結構擴展RBAC模型,避免了冗余的角色權限分配;采用基于屬性的策略定義角色權限關系,細粒度、靈活地分配角色的權限;另外,將相同數據屬性的數據分配到同一數據組,數據可以通過數據組的層次結構繼承數據屬性,避免為數據設置重復屬性,簡化了數據屬性的管理。最后,本文將MT-MHAC模型實現在Hadoop平臺中。通過實驗驗證,該模型可以滿足多租戶環境下,對多源異構數據細粒度、動態授權的訪問控制需求,保障租戶之間數據的安全隔離。
RBAC模型為每個用戶分配一個或多個角色,并通過定義角色層次結構減少了用戶角色的分配工作。隨著大數據向更多應用領域擴展,越來越多的數據涌入大數據平臺中,RBAC模型下的角色-權限分配成為一項重大挑戰。本文旨在Hadoop平臺中多租戶場景下,對多源異構數據實施靈活、細粒度的訪問控制。本文使用數據治理工具 Apache Atlas[2]對平臺中的多源異構數據進行集中管理,并在此前提下提出了MT-MHAC模型,如圖1所示。

圖1 MT-MHAC模型
在基于Hadoop的大數據平臺中,很多組件中數據具有天然的層次結構。例如,分布式文件系統(HDFS)中的文件存在于目錄樹下;數據倉庫工具Hive中數據有數據庫、表、行或列這幾種類型,也存在層次結構。MT-MHAC模型利用了平臺中這些數據的特點,構建了數據組的層次結構,與 RBAC模型的角色層次結構相結合,簡化了角色-權限的分配,可以將平臺中具有相同屬性的數據分配到同一數據組中,為該組分配適當的屬性和屬性值,而不用為每個數據分配屬性。如果數據組之間還存在層次結構,可以間接通過其他數據組繼承數據屬性,通過這種數據組層次結構簡化了數據屬性的管理。另外,采用基于屬性的權限策略,實現對多源異構數據靈活簡單的訪問控制,確保了租戶間數據安全靈活的隔離。
為了保證MT-MHAC模型的正常運行,假設訪問 Hadoop平臺的用戶均已通過身份認證。本文所提出的模型中實體包括用戶(U)、角色(R)、會話(S)、數據(D)、數據組(G)、操作(OP)。屬性集合包括數據屬性(DATT)、環境屬性(EATT)和操作屬性(OPATT)。具體定義描述如表1所示。
除了實體之外,模型中還包含實體間的關系,通過關系集合將各個實體集聯系起來,實現實體中元素之間的操作。下面對這些關系進行定義。
定義1角色層次結構RH?R×R,表示在角色集合R上存在的偏序關系。角色的繼承從低到高,即父角色繼承其所有的子角色。若存在ri?rj,其中ri,rj?R,則ri是rj的父角色。這里ri不僅具有其自身角色,還繼承了rj的角色。
例如,用戶 Gary被分配角色為developer,用戶 Bard被分配角色為direct,其中,direct是developer的父角色。因此用戶 Bard所擁有的角色除了被直接分配的direct之外,還有通過繼承得到的developer。由此可知,角色層次結構可以方便地為單個用戶分配和刪除多個角色,簡化了用戶-角色關聯關系的管理。
定義2數據-數據組分配DGA?D×G,等價于directG(d):D→ 2G,表示數據與數據組之間多對多的映射關系??梢詫祿峙浣o多個數據組,通過函數directG獲取數據并返回該數據所屬的數據組集合。
定義3數據組層次結構GH?G×G,表示在數據組集合G上的偏序關系。若gi?gj,其中gi,gj?G,意味著分配了數據組gi的角色將獲得該組和來自低級數據組gj這2個組中所有數據的訪問權限。
大數據環境下,租戶將數據源源不斷地從各種系統聚集到 Hadoop平臺中,同時用戶訪問數據的上下文在不斷變化,導致用戶的訪問權限需要及時更新。但在RBAC模型中,用戶權限的更新只能通過修改或增加為用戶所分配的角色,而角色的權限更新需要修改原有的角色權限關系,導致授權管理難度增加。為了解決上述問題,本文定義數據屬性、環境屬性和操作屬性,根據屬性策略進行角色權限分配,動態地建立角色與權限之間的關系。

表1 實體和屬性定義
定義4屬性是對實體特征的具體描述,記為ATT::=(att_nameopatt_value)。其中,att_name是指屬性名稱;op指屬性運算符,包括<、=、>、≤、≠、≥等;att_value指屬性的取值,可由有限的原子值或集合表示。例如, ?datt?DATT,datt::= (type= {file、database、table})表示數據屬性集中有一個屬性為type,其屬性值等于一個包含file、database和table的集合。
定義5數據組的有效屬性effectiveGdatt,包含直接分配給用戶組的數據屬性和來自子數據組所繼承的屬性。對于?datt∈DATT,?g∈G,有

定義6數據有效屬性effectiveDdatt,由自身具有的屬性、所屬數據組的所有屬性,以及數據組通過繼承其他組所得的屬性這3部分組成。當為數據設置屬性時,無須為每個數據都設置屬性,只需將相同屬性的數據添加到同一數據組,然后設置其最小權限范圍的屬性及屬性值。數據組中的數據通過數據組的層次關系間接獲得層次化的屬性和屬性值。本文通過這種數據組層次結構為安全管理員提供了簡單靈活的數據屬性管理,簡化了角色-權限的分配。對于 ?datt∈DATT,?g∈G,有

定義7基于屬性的權限AP?DATT×EATT×OPATT,其中,?eatt∈EATT,?opatt∈OPATT,數據屬性滿足 ?datt∈DATT?effectiveDdatt(d)。通過定義數據屬性、環境屬性和操作屬性動態地確定數據的訪問權限,實現了靈活的授權管理。
定義8模型中的函數
1) 用戶-角色分配assignRole(u):U→ 2R,等價于UR?U×R,其中,?r∈{ri|ri?rj,ri,rj∈R},表示用戶到角色多對多的映射關系。
2) 角色-權限分配assignPerm(r) :R→ 2AP,表示角色到權限多對多的映射關系。
3) 用戶會話user_session(u) :U→ 2S,表示單個用戶到會話集合的映射函數。
4) 角色會話role_session(s) :S→ 2R,表示會話到角色集合的函數,其中,會話所對應的角色應滿足R?UR。
5) 角色權限判定規則如下:當用戶在會話中所獲得的角色r滿足數據d的屬性、環境屬性eatt和操作屬性opatt時,允許角色訪問。

為了將MT-MHAC模型應用到Hadoop平臺中,本文利用基于Apache Atlas的元數據管理工具來集中管理匯集到平臺中的多源異構數據。另外,在基于Apache Ranger的權限管理框架上進行了修改和擴展,以實現本文所提出的MT-MHAC模型。Ranger主要由2部分組成:策略服務器和插件。策略服務器即權限管理模塊,負責管理策略和從Unix或LDAP同步的用戶/用戶組,以及為集成到組件中的插件提供策略信息和用戶信息。插件是內嵌在組件中的權限判定引擎,通過從策略服務器定時輪詢獲取更新策略來評估訪問請求。本文在權限管理模塊中定義了訪問控制策略決策點(PDP, policy decision point)、訪問控制策略管理點(PAP, policy administration point)和訪問控制策略信息點(PIP, policy information point),并且修改了Ranger的權限判定引擎和策略的定義。在權限管理模塊中添加用戶-角色表、數據屬性表和環境屬性表,以便安全管理員定義用戶-角色關系、數據屬性和環境屬性。具體的實現細節如圖2所示。
在模型的運行過程中,系統對用戶訪問數據的控制有2個重要階段。一是授權階段,當用戶進入 Hadoop平臺時,安全管理員在權限管理模塊中將用戶-角色表定義為用戶所分配的角色;然后選擇合適數據屬性datt、環境屬性eatt(如時間、位置等)和操作屬性opatt,為角色設置基于屬性的權限策略,建立角色與權限之間的關聯關系,這樣使用戶擁有的角色在不同狀態下的權限也不同,從而可以動態地確定用戶的訪問權限。二是鑒權階段,權限管理模塊中的PIP先從組件(圖2中的Hive)中獲取當前會話的用戶信息和環境信息,從而根據用戶-角色表得到其擁有的角色,然后通過查詢數據屬性表、環境屬性表和操作屬性表分別得到訪問請求中數據的有效屬性、環境屬性和操作屬性,將其與從 PAP獲取的訪問權限策略中對應的策略項進行一一匹配。若均匹配,則權限管理模塊中的 PDP將權限判定結果true返回給組件中的 Ranger插件,即訪問控制策略執行點(PEP, policy enforcement point),否則返回false。組件中的PEP根據PDP返回的結果執行具體的操作。

圖2 MT-MHAC模型在Hadoop中的實現框架
例如,用戶u提交訪問Hive中數據d的請求,權限管理模塊首先獲取用戶的訪問請求信息request(u,d,op),根據環境屬性表和操作屬性表得到訪問請求的環境屬性eatt和操作屬性opatt,再從元數據管理模塊中獲取d的屬性信息,然后獲取用戶-角色表和角色-權限策略。根據訪問權限判定算法(算法1)對訪問請求request進行判定,并將訪問判定結果返回給Hive中內嵌的Ranger插件,最終由Ranger插件執行允許訪問或拒絕訪問。
算法1訪問權限判定算法
輸入u,d,op
輸出result ,result ∈ boolean

本節以下述應用場景為例說明MT-MHAC模型的有效性和優勢?,F有2個公司TOK和SUN租用同一大數據平臺存儲企業的數據,這里,同一大數據平臺中角色定義和數據屬性、環境屬性等定義都相同。例如,定義了角色developer和direct,數據組analysis、collect和log,數據屬性type={general、develop、network},環境屬性location={china、sichuan、beijing }。其中,direct?developer,analysis?collect,analysis?log。另外,數據組analysis包含的屬性為type={develop},數據組collect包含的屬性為type={general},數據組log包含的屬性為type= {network}。根據各公司的訪問需求定義了部分權限策略如下。另外,對不同組件中數據的操作不同,如HDFS中文件操作為r/w/x,Hive中數據操作為create/delete/update等。為了簡化權限策略,這里沒有定義數據的具體操作,均為access。
Policy1:{developer,type= network,location=sichuan,op=access}。
Policy2:{developer,type= general,location=beijing,op=access }。
Policy3:{direct,type= develop,location=beijing,op=access}。
假設有TOK公司員工Ablett和SUN公司員工Carl,且2個公司分別在四川和北京。TOK公司和SUN公司的安全管理員分別為Ablett和Carl分配了角色developer和direct。通過測試結果表明,根據Policy1定義的權限策略,Ablett只能訪問本公司數據組為log中的數據。由于存在角色繼承和數據組繼承關系,根據 Policy2和Policy3定義的策略可知,員工Carl除了能訪問數據組為analysis的數據之外,還具有數據組collect中數據的訪問權限。通過該角色層次結構和數據組的層次結構,簡化了角色分配和數據屬性分配,從而為管理員提供了權限的簡單管理。另外,雖然SUN公司的員工Carl通過角色繼承擁有了developer角色,但根據策略中環境屬性的定義,其不能訪問TOK公司數據組為log中的數據。
上述實驗表明,本文所提出的模型根據用戶的角色以及角色是否擁有當前會話上下文環境下對數據的訪問權限,嚴格限制租戶之間數據的訪問,實現了對多租戶之間數據的安全隔離;并且通過層次化的角色和數據屬性,簡化了管理員的權限分配工作;基于屬性的權限策略也為租戶間及內部提供了細粒度、靈活的訪問權限管理。另外,當平臺中增加用戶和數據或用戶權限發生變動時,不用添加角色,通過更新基于屬性的權限策略即可實現用戶權限的變更。
為了驗證 MT-MHAC模型的性能,本文在Hadoop平臺中進行了實驗測試,其中Hadoop版本是2.7.3,Apache Ranger版本是0.7.0。本文通過測試時間開銷來分析模型的性能,將MT-MHAC模型與RBAC模型、ABAC模型的訪問控制決策時間進行對比,分析MT-MHAC模型的性能優勢。根據訪問控制策略判定用戶的訪問請求是訪問控制過程中關鍵步驟,也是影響訪問控制決策時間的主要因素。因此,本文為驗證模型對 Hadoop平臺的性能損失,將統計不同數量的訪問控制策略下 MT-MHAC模型和 RBAC模型、ABAC模型的訪問控制決策時間對比,結果如圖3所示。

圖3 策略數量與訪問決策時間對比
隨著訪問控制策略的增加,三者的訪問控制時間均呈上升的趨勢。其中,MT-MHAC模型的整體訪問決策時間與 RBAC模型相比稍高,是由于使用數據屬性、環境屬性和操作來確定角色的權限,但同時相比RBAC模型增加了角色權限匹配的靈活性。另外,通過添加數據組層次結構簡化了角色權限匹配,MT-MHAC模型的訪問決策時間低于ABAC模型。從圖3中可看出,策略數量1 000條以內訪問控制決策所用的時間僅在4 ms以內。即使策略數量達到上萬條甚至幾十萬條,訪問控制決策的時間開銷依然能保持在毫秒級別。由此可知,MT-MHAC模型的訪問控制時間開銷對整個訪問過程的性能影響較小。
本文針對大數據平臺下如何實現多源異構數據的訪問控制,確保租戶數據的安全隔離問題,提出了MT-MHAC模型。該模型結合RBAC模型中角色層次結構,增加了數據組的層次結構,父數據組的權限可以直接從子數據組繼承,簡化了角色權限分配;使用基于屬性的策略定義角色與權限的分配關系,提供了細粒度、靈活地授權;可通過數據組層次關系獲得其他數據組的繼承屬性,提供了數據屬性的簡單管理。另外,本文利用Hadoop平臺中的數據治理工具Apache Atlas集中管理這些異構數據,并在Apache Ranger的基礎上進行修改,實現了本文所提出的模型;并且通過實驗性能分析驗證了MT-MHAC模型在對性能損失基本可以忽略的情況下,實現了大數據平臺中多源異構數據靈活、細粒度的訪問控制,保證了多租戶數據之間的安全隔離。