蘇秋月
(四川大學(xué)計算機學(xué)院,成都610065)
大數(shù)據(jù)時代下,隨著政府、企業(yè)的信息系統(tǒng)越來越多,系統(tǒng)之間的資源共享與業(yè)務(wù)協(xié)同的需求越來越迫切。而大數(shù)據(jù)平臺可以幫助政府和企業(yè)打破部門間的數(shù)據(jù)孤島,支持多源異構(gòu)數(shù)據(jù)源的集成,支持跨行業(yè)、跨部門、跨平臺的數(shù)據(jù)共享與交換[1]。但平臺上數(shù)據(jù)安全問題也隨之而來,如何保證數(shù)據(jù)不被未授權(quán)訪問是數(shù)據(jù)使用過程中必須解決的問題。
學(xué)者Gupta 等人[2-3]總結(jié)開源項目Apache Ranger、Sentry 以及Hadoop 原生基于訪問控制列表(Access Control List,ACL)這三種訪問控制機制的特點,提出了Hadoop 生態(tài)系統(tǒng)的多層授權(quán)框架和Hadoop 生態(tài)系統(tǒng)授權(quán)(HeAC)模型。陳垚坤等人[4]將基于屬性的訪問控制(Attribute-Based Access Control,ABAC)模型應(yīng)用到Hadoop 平臺中,提供了細粒度、靈活的訪問控制。但是當平臺中存在大量的屬性時,屬性管理難度增大,并且訪問控制策略由多個實體屬性組成的集合,訪問權(quán)限判定過程也較為復(fù)雜。最近,Gupta 等人[5]在Hadoop 生態(tài)系統(tǒng)中討論了角色與屬性結(jié)合的方法,將對象標簽作為對象屬性添加到RBAC 模型中,提出基于對象標簽的角色訪問控制(OT-RBAC)模型。但文中只增加了對象屬性,未考慮主體屬性、環(huán)境屬性等上下文環(huán)境對訪問授權(quán)的影響。
綜上,本文提出了大數(shù)據(jù)平臺上基于屬性的角色訪問控制(Attribute-based Role Access Control,ARAC)模型。該模型將基于屬性的策略應(yīng)用到RBAC 模型中,根據(jù)用戶屬性和環(huán)境屬性來確定用戶可分配的角色,自動地建立用戶-角色的分配關(guān)系;同樣,屬性策略也用于建立角色-權(quán)限的映射關(guān)系,其中考慮到Hadoop 平臺多層訪問架構(gòu)的特點,在策略中加入了組件屬性和數(shù)據(jù)對象屬性,而不是只根據(jù)數(shù)據(jù)本身作為授權(quán)對象,實現(xiàn)對平臺中數(shù)據(jù)靈活、統(tǒng)一的權(quán)限管理。最后我們在Hadoop 平臺上實現(xiàn)了ARAC 模型,并進行了實驗分析,結(jié)果表明該模型在性能損失較小的情況下,為大數(shù)據(jù)平臺了提供細粒度、靈活的訪問控制。
本文提出的大數(shù)據(jù)平臺上基于屬性的角色訪問控制(ARAC)模型如圖1 所示。ARAC 模型中包括的實體有:用戶U、用戶組G、角色R、組件C、數(shù)據(jù)對象O、操作OP。
其中用戶U 是與計算機交互以訪問Hadoop 生態(tài)系統(tǒng)組件和數(shù)據(jù)對象的人。用戶組G 是具有相同屬性和權(quán)限的用戶集合。組件C 是指Hadoop 平臺中的組件,例如HDFS、YARN、Hive、HBase、Storm、Kafka、Atlas等。數(shù)據(jù)對象O 是組件中包含的不同類型的資源,例如HDFS 中的資源路徑(path),Hive 中的數(shù)據(jù)庫(database)、表(table),YARN 中的隊列(queue)等。由于Hadoop 平臺中多層訪問框架的特點,用戶在對數(shù)據(jù)對象進行操作之前,先要有訪問組件的權(quán)限,即只有同時擁有組件和數(shù)據(jù)對象的訪問權(quán)限才能對數(shù)據(jù)對象實施操作。操作OP 是指對不同的數(shù)據(jù)對象執(zhí)行不同的訪問行為,如對HDFS 文件或目錄進行讀、寫、執(zhí)行操作,而對Hive 中數(shù)據(jù)庫、表進行創(chuàng)建、查詢、刪除等操作。除了實體之外,模型中還包含了一些屬性。下面會對屬性相關(guān)的概念進行形式化的定義,具體如定義1 所示。
圖1 ARAC模型
定義1 屬性:屬性是對實體的具體描述,記為AT::=(Attribute_name op attribute_value)。其中attribute_name 是指屬性名稱;op 指屬性運算符,包括<,=,>,≤,≠,≥等;attribute_value 指屬性的取值,可由有限的原子值或集合值來表示。其中AT?(UAT∪EAT∪CAT∪OAT),表示不同類型屬性集合的子集;entity 表示實體類型,包括用戶U、環(huán)境E、組件C、對象O;Range(at)表示屬性的范圍,是一個原子值的有限枚舉集。
用戶屬性UAT 表示對在Hadoop 平臺中執(zhí)行操作的用戶特征描述,包括用戶的身份標識、所屬組、名稱、安全等級等;環(huán)境屬性EAT 是對執(zhí)行操作過程中上下文環(huán)境的描述,包括時間、位置等;組件屬性CAT 是對組件特征進行了描述,包括組件類型,組件中擁有的數(shù)據(jù)類型等;數(shù)據(jù)對象屬性O(shè)AT 是對數(shù)據(jù)對象的特征描述,包括數(shù)據(jù)對象的標識、數(shù)據(jù)類型、數(shù)據(jù)擁有者和安全標簽等。
文獻[6-7]采用了傳統(tǒng)RBAC 模型,需要安全管理員根據(jù)用戶身份手動為其分配角色,從而授權(quán)相應(yīng)的權(quán)限。在大數(shù)據(jù)環(huán)境中,數(shù)據(jù)和用戶在不斷移動,使得安全管理員無法提前預(yù)知所有的用戶信息,更無法提前預(yù)設(shè)用戶-角色對應(yīng)關(guān)系,從而難以精確、細粒度對用戶授予實際的訪問權(quán)限。
因此在我們的模型中,利用屬性來描述用戶,通過定義用戶屬性和環(huán)境屬性與角色的映射關(guān)系,動態(tài)地建立用戶-角色隱含關(guān)系。這一特點使安全管理員無需知道全部的用戶信息就能為用戶授權(quán),并且自動分配角色到用戶不僅減輕了授權(quán)管理負擔(dān),還提供了足夠的靈活性和動態(tài)授權(quán),也為用戶安全的匿名訪問提供了可能。
定義6 用戶-角色分配RA:RA ?UAT×EAT×R,表示用戶屬性、環(huán)境屬性到角色的映射關(guān)系,隱含了用戶到角色的對應(yīng)關(guān)系。若?uat∈UAT,?eat∈EAT,則有函數(shù):
其中?r∈R,這里用戶屬性、環(huán)境屬性到角色的映射函數(shù)assign_role 表示了角色的分配策略。例如管理員定義了用戶屬性uat::=(department=外科),環(huán)境屬性為eat::=(access_time=8:00AM~20:00PM)對應(yīng)的角色為醫(yī)生,則assign_role(department=外科,access_time=8:00AM~20:00PM)=醫(yī)生。
Hadoop 平臺存在多層訪問架構(gòu),當用戶請求訪問生態(tài)系統(tǒng)中的數(shù)據(jù)時,首先使用組件授權(quán)策略檢查是否擁有對數(shù)據(jù)所在組件的訪問權(quán)限,該步驟發(fā)生在平臺應(yīng)用網(wǎng)關(guān)如Apache Knox;若沒有權(quán)限訪問組件直接拒絕訪問,否則繼續(xù)根據(jù)數(shù)據(jù)授權(quán)策略檢查用戶對數(shù)據(jù)的訪問權(quán)限;若有權(quán)限則通過訪問請求,沒有就拒絕請求。另外由于平臺中數(shù)據(jù)的大規(guī)模和多樣性,管理員很難為每種組件類型的數(shù)據(jù)進行細粒度、靈活的權(quán)限管理,導(dǎo)致授權(quán)過度或授權(quán)不足現(xiàn)象出現(xiàn),并且授權(quán)管理難度較大。
因此,本文提出的ARAC 模型中不再對數(shù)據(jù)對象本身進行授權(quán),而是根據(jù)組件屬性或數(shù)據(jù)對象屬性、環(huán)境屬性和操作定義權(quán)限。然后通過定義權(quán)限與角色的映射,從而地建立角色-權(quán)限的動態(tài)關(guān)系。
定義7 權(quán)限PERMS,表示模型中對組件、數(shù)據(jù)對象的操作權(quán)限集合。這里我們將權(quán)限分為兩種類型:對組件的訪問權(quán)限和對數(shù)據(jù)對象的訪問權(quán)限,將統(tǒng)一的基于屬性的訪問策略用于平臺中多層訪問權(quán)限的判定。
定義8 角色-權(quán)限分配PA:,表示角色到權(quán)限的映射關(guān)系。若?r∈R,則有函數(shù):
這里?perms∈PERMS,我們使用角色到權(quán)限的映射函數(shù)assign_perms 定義權(quán)限的分配策略。例如管理員為角色醫(yī)生授予訪問權(quán)限perms 是對組件屬性為cat::=(type=HDFS,Hive)和數(shù)據(jù)對象屬性為oat::=(tag=PII)在環(huán)境屬性為eat::=(location=醫(yī)院)下進行的操作op::=(type=讀,寫,查詢,創(chuàng)建,刪除)。則權(quán)限分配策略為:
assign_perms(r=醫(yī)生)=(cat::=(type=HDFS,Hive))?(oat::=(tag=PII))
?(eat::=(location=醫(yī)院))?(op::=(type=讀,寫,查詢,創(chuàng)建,刪除))
為了更加直觀、簡潔地分析ARAC 模型的優(yōu)勢,本文從以下五個方面進行了分析:
(1)細粒度訪問控制。ARAC 模型使用屬性來描述訪問請求過程中用戶、環(huán)境、組件和數(shù)據(jù)對象,可以嚴格控制訪問請求者獲得權(quán)限的各種條件,并且訪問范圍可以精確到表、字段級別的數(shù)據(jù),滿足最小權(quán)限原則。
(2)動態(tài)授權(quán)。ARAC 模型中各種實體屬性的定義和設(shè)置有很大的靈活性,并支持大規(guī)模的動態(tài)擴展,可以滿足各種應(yīng)用系統(tǒng)的訪問控制需求。
(3)授權(quán)復(fù)雜程度。ARAC 模型保留了RBAC 模型的優(yōu)勢,使用角色來間接地建立用戶和權(quán)限之間的關(guān)系,避免在用戶和數(shù)據(jù)之間設(shè)置很多關(guān)系參數(shù),系統(tǒng)管理員只需要設(shè)置角色與權(quán)限的映射,降低了授權(quán)復(fù)雜程度。
(4)屬性管理復(fù)雜度。ARAC 模型使用用戶組層次結(jié)構(gòu)來管理用戶屬性,用戶可以通過從所在組及組繼承其他組獲得用戶的屬性。管理員無需為每一個用戶設(shè)置屬性,實現(xiàn)了用戶屬性的簡單管理。
(5)大數(shù)據(jù)平臺中多組件數(shù)據(jù)權(quán)限統(tǒng)一管理。結(jié)合Hadoop 平臺多層訪問框架的特點,針對組件屬性和數(shù)據(jù)對象屬性授權(quán),統(tǒng)一控制平臺中數(shù)據(jù)的訪問權(quán)限。
本文提出的大數(shù)據(jù)平臺上基于屬性的角色訪問控制(ARAC)模型。該模型以RBAC 模型框架為基礎(chǔ),使用基于屬性的策略分別建立用戶-角色關(guān)系和角色-權(quán)限關(guān)系,實現(xiàn)了將角色自動分配給用戶,減輕了管理員的工作負擔(dān)。同時,使用平臺中的組件屬性和數(shù)據(jù)對象屬性、環(huán)境屬性定義與角色的分配策略,實現(xiàn)平臺中多個組件數(shù)據(jù)權(quán)限統(tǒng)一管理。分析表明ARAC 模型可有效地為大數(shù)據(jù)平臺提供細粒度、管理簡單、動態(tài)的訪問控制。