(武夷學(xué)院 數(shù)學(xué)與計(jì)算機(jī)系,福建 武夷山 354300)
操作系統(tǒng)是否安全直接影響到計(jì)算機(jī)系統(tǒng)的安全,因?yàn)樗菢?gòu)筑在其上的應(yīng)用系統(tǒng)和安全系統(tǒng)的根基,操作系統(tǒng)應(yīng)盡可能提供強(qiáng)的訪問(wèn)控制機(jī)制以限制不安全的非法訪問(wèn)。
為從操作系統(tǒng)底層提高其安全性,本文研究基于操作系統(tǒng)內(nèi)核的安全訪問(wèn)控制模型,以linux系統(tǒng)內(nèi)核為例,采用基于角色的訪問(wèn)控制策略 (Role Based Access Control,RBAC),以提高操作系統(tǒng)的安全性。
基于角色的訪問(wèn)控制模型 (RBAC)是美國(guó)的NIST (National Institute of Standards and Technology)于上世紀(jì)九十年代初提出的一種訪問(wèn)控制技術(shù)。該技術(shù)主要研究將用戶劃分成與其在組織結(jié)構(gòu)體系相一致的角色,以減少授權(quán)管理的復(fù)雜性,降低管理開(kāi)銷(xiāo)和為管理員提供一個(gè)比較好的實(shí)現(xiàn)復(fù)雜安全政策的環(huán)境。[1]
美國(guó)George Mason大學(xué)教授Ravi Sandhu于1996年提出的RBAC96模型系統(tǒng)全面地描述了RBAC多方面、多層次的意義,得到了廣泛的認(rèn)可[2]。我國(guó)很多的學(xué)術(shù)機(jī)構(gòu)和學(xué)者也于上世紀(jì)90年代初提出了若干訪問(wèn)控制策略。吳開(kāi)超[3]等提出按照客體類(lèi)型及其層次關(guān)系將訪問(wèn)控制邏輯分層處理,在不同層次上采取與客體特點(diǎn)相符的訪問(wèn)控制技術(shù),從而形成一種訪問(wèn)控制的層次模型。單智勇[4]等給出一個(gè)適用于操作系統(tǒng)的角色訪問(wèn)控制模型OSR,并在linux內(nèi)核中實(shí)現(xiàn)。劉偉[5]等詳細(xì)描述了SELinux、RFSOS等三個(gè)安全操作系統(tǒng)對(duì)角色訪問(wèn)控制特性支持的不同實(shí)現(xiàn)方法。吳作順[6]等以Flask安全模型為研究基礎(chǔ),闡述了linux操作系統(tǒng)中訪問(wèn)控制的動(dòng)態(tài)安全策略特性。張朝清[7]等詳細(xì)描述了SELinux中通過(guò)獨(dú)立的安全服務(wù)器來(lái)封裝安全政策,通過(guò)對(duì)其調(diào)用來(lái)獲得安全決定,進(jìn)而標(biāo)識(shí)和控制進(jìn)程、內(nèi)核主體和訪問(wèn)的客體。李洪心[8]等通過(guò)分析信息終端中進(jìn)程的行為,將進(jìn)程訪問(wèn)的客體分為可信客體和可疑客體,并在操作系統(tǒng)內(nèi)核中引入RBAC模型,阻止進(jìn)程主體訪問(wèn)可疑客體以此強(qiáng)化安全管理機(jī)制。
本文也將在linux操作系統(tǒng)內(nèi)核層面討論如何建立一種改進(jìn)的RBAC模型以提高系統(tǒng)的安全性。
在傳統(tǒng)的 RBAC96模型[2]中,用戶(User)被賦予角色(Role),而權(quán)限(Permission)是被賦給角色,用戶通過(guò)擔(dān)任某些角色來(lái)獲得訪問(wèn)權(quán)限。會(huì)話(Session)有對(duì)用戶和角色兩種映射關(guān)系。整個(gè)模型是由集合、集合的函數(shù)關(guān)系及其上的映射關(guān)系組成。其具體模型及各元素間關(guān)系如下圖1所示:
● 用戶集合:U={u1,u2,… ,un1}。
● 角色集合:R={r1,r2,… ,rn2}。
● 權(quán)限集合:P={p1,… ,pn3}。
● 用戶與角色的映射關(guān)系:UA?U×R。
● 權(quán)限到角色的映射關(guān)系:PA?P×R。
● 角色繼承關(guān)系:RH?R×R,是角色集R上的偏序關(guān)系,用?表示。如果r1,r2∈R且r1?r2表示r1是r2的上級(jí)角色,則r1擁有r2的所有權(quán)限。
● 角色間的約束關(guān)系:RC?R×R,此處的約束主要是靜態(tài)約束,是對(duì)模型各元素、用戶-角色分配、角色-權(quán)限分配等進(jìn)行限制的約束條件。
● 會(huì)話集合SE(Session):為使用戶與系統(tǒng)之間能夠正常交互而建立的連接,在會(huì)話中激活相應(yīng)的角色。
在linux操作系統(tǒng)中,用戶程序或系統(tǒng)程序訪問(wèn)文件、設(shè)備等系統(tǒng)資源往往是通過(guò)進(jìn)程(Process)來(lái)完成的,進(jìn)程是某個(gè)用戶執(zhí)行程序的一次動(dòng)態(tài)過(guò)程,因此我們將進(jìn)程和用戶作為訪問(wèn)客體資源的主體(Subject),而主體訪問(wèn)的客體資源是系統(tǒng)中的文件、目錄、設(shè)備、IPC通信等,同時(shí)操作OP(Operation)是對(duì)客體對(duì)象進(jìn)行增加、刪除、修改等動(dòng)作,并將權(quán)限這一概念擴(kuò)展為主體對(duì)客體的操作許可。如下圖2所示:
● 主體集合 S={s1,s2,… ,sn1},包括進(jìn)程和用戶。
● 客體集合 OB={ob1,ob2,… ,obn2},是系統(tǒng)中的文件、目錄、設(shè)備、IPC通信、系統(tǒng)控制數(shù)據(jù)等。
● 操作集合 OP={op1,op2,…,opn3},即對(duì)客體對(duì)象進(jìn)行增加、刪除、修改等動(dòng)作。
● 權(quán)限集合P:是一個(gè)二元組(op,ob),表示對(duì)客體ob進(jìn)行op操作的權(quán)限。
● 主體與角色的映射關(guān)系:SA?S×R。
● 角色與角色的沖突關(guān)系:分為靜態(tài)和動(dòng)態(tài)兩種。靜態(tài)沖突角色既不能賦于同一用戶,也不能賦于同一進(jìn)程,用 RSC 表示:RSC={(r1,r2)│ r1∈ R ,r2∈R}。動(dòng)態(tài)沖突角色可以賦于同一用戶,但不能在同一個(gè)進(jìn)程激活,用RDC表示:RDC={(r1,r2)│r1∈R,r2∈R}。它們同樣都滿足角色集R上的偏序關(guān)系,可以繼承。即
由于引入進(jìn)程和用戶作為主體,并且進(jìn)程是動(dòng)態(tài)產(chǎn)生的,因此主體對(duì)角色的映射關(guān)系更加復(fù)雜并造成會(huì)話過(guò)多,產(chǎn)生很多冗余數(shù)據(jù),引入激活角色集合以滿足最小權(quán)限原則,它是主體到角色映射的最大角色集合的子集。
●主體S映射到角色R的最大角色集:
●當(dāng)用戶開(kāi)始會(huì)話,進(jìn)程被創(chuàng)建或者用戶使用命令、系統(tǒng)調(diào)用時(shí),激活的角色集應(yīng)滿足最小特權(quán)原則:并且是主體禁止的角色集合,比如主體將訪問(wèn)一些可疑程序,可禁止賦予一些權(quán)限高或涉及私密的角色。
● 權(quán)限集合在這里改進(jìn)成一個(gè)三元組:(op,ob,pt),pt表示權(quán)限的類(lèi)型:分為普通權(quán)限和系統(tǒng)權(quán)限,系統(tǒng)權(quán)限又分為系統(tǒng)管理權(quán)限、安全管理權(quán)限和審計(jì)管理權(quán)限[9]。普通權(quán)限可以允許主體獲得指定客體的訪問(wèn),系統(tǒng)管理權(quán)限是可以維持系統(tǒng)正常運(yùn)行的權(quán)限,安全管理權(quán)限是負(fù)責(zé)除系統(tǒng)正常運(yùn)行以外主客體的安全管理權(quán)限,審計(jì)管理權(quán)限是進(jìn)行安全審計(jì)的權(quán)限。用RSC表示它們之間的沖突關(guān)系。如下圖3所示:
在linux系統(tǒng)內(nèi)核中加入訪問(wèn)控制信息處理模塊和訪問(wèn)請(qǐng)求判定模塊。當(dāng)應(yīng)用層的應(yīng)用程序或系統(tǒng)管理工具產(chǎn)生進(jìn)程進(jìn)行系統(tǒng)調(diào)用請(qǐng)求時(shí),訪問(wèn)控制信息處理模塊會(huì)截取進(jìn)程操作請(qǐng)求,將進(jìn)程的標(biāo)識(shí)號(hào)、要訪問(wèn)的客體類(lèi)型及申請(qǐng)的操作權(quán)限發(fā)送給訪問(wèn)請(qǐng)求判定模塊,訪問(wèn)請(qǐng)求判定模塊會(huì)通過(guò)查詢(xún)內(nèi)存中已建立的進(jìn)程信息、角色信息等得到主體激活的所有角色的權(quán)限,再通過(guò)已有的權(quán)限三元組(op,ob,pt)比對(duì)激活角色權(quán)限是否有效,如果有效就許可訪問(wèn),進(jìn)行內(nèi)核的系統(tǒng)調(diào)用,否則返回出錯(cuò)信息給訪問(wèn)控制信息處理模塊。
例如:讀一個(gè)文件的操作,read命令執(zhí)行后將產(chǎn)生一個(gè)進(jìn)程,該進(jìn)程申請(qǐng)使用系統(tǒng)調(diào)用即讀文件的請(qǐng)求發(fā)送給內(nèi)核的訪問(wèn)控制信息處理模塊,訪問(wèn)控制信息處理模塊會(huì)截取進(jìn)程讀操作請(qǐng)求,并將進(jìn)程的標(biāo)識(shí)號(hào)、要訪問(wèn)的文件所屬客體類(lèi)型及申請(qǐng)的讀操作權(quán)限發(fā)送給訪問(wèn)請(qǐng)求判定模塊,訪問(wèn)請(qǐng)求判定模塊會(huì)通過(guò)查詢(xún)內(nèi)存中已建立的進(jìn)程信息、角色信息等得到主體激活的所有角色的權(quán)限,再通過(guò)已有的權(quán)限三元組(op,ob,pt)比對(duì)激活角色權(quán)限是否有效,如果有效就可以進(jìn)行read的操作,否則返回出錯(cuò)信息給訪問(wèn)控制信息處理模塊,訪問(wèn)控制信息處理模塊再把信息反饋給應(yīng)用層。實(shí)現(xiàn)的邏輯結(jié)構(gòu)如下圖4所示:
筆者在RBAC96模型基礎(chǔ)上做了多次改進(jìn)并給出一個(gè)新型的應(yīng)用在linux操作系統(tǒng)上的RBAC模型,提出了激活角色集合以滿足最小特權(quán)原則,將進(jìn)程和用戶做為主體,引入權(quán)限三元組來(lái)描述權(quán)限和客體操作之間關(guān)系,并給出了系統(tǒng)中實(shí)現(xiàn)的邏輯結(jié)構(gòu)。今后會(huì)對(duì)linux中capability機(jī)制下如何判斷權(quán)限做出更詳細(xì)的論述。
[1] 吳薇.基于角色的訪問(wèn)控制技術(shù)的用戶權(quán)限管理及實(shí)現(xiàn)[J].福建電腦,2008(11).
[2] Sandhu R S,Coyne E J,Feinstein H L,and et.al.Rolebased access control models[J].IEEE Computer,1996,29(2):38-47.
[3] 吳開(kāi)超,沈志宏,周園春,等.信息系統(tǒng)訪問(wèn)控制的層次模型[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(1):22-50.
[4]單智勇,孫玉芳.一個(gè)應(yīng)用于操作系統(tǒng)的RBAC模型及其實(shí)施[J].計(jì)算機(jī)研究與發(fā)展,2004,41(2):287-298.
[5] 劉偉,孫玉芳.若干安全操作系統(tǒng)中的基于角色的訪問(wèn)控制特性[J]計(jì)算機(jī)工程與應(yīng)用,2004(4):41-44.
[6] 吳作順,竇文華.基于增強(qiáng)訪問(wèn)控制的安全Linux研究[J].計(jì)算機(jī)應(yīng)用研究,2002(3):68-70.
[7] 張朝清,王非非.SELinux系統(tǒng)中可擴(kuò)展強(qiáng)制訪問(wèn)控制的實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2006,237(6):25-28.
[8] 李洪心,關(guān)可卿.基于RBAC的信息終端內(nèi)核模型[J].計(jì)算機(jī)科學(xué),2011,38(11):100-103.
[9] 劉偉,孫玉芳.基于角色訪問(wèn)控制模型及其在操作系統(tǒng)中的實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2003,30(8):166-168.