何曉園
摘 要:該文介紹了一種基于角色的訪問(wèn)控制機(jī)制,提供了資源訪問(wèn)控制、用戶隔離以及等級(jí)劃分等通用功能,實(shí)現(xiàn)后可以作為一個(gè)模塊掛接到一個(gè)應(yīng)用系統(tǒng)當(dāng)中,該系統(tǒng)只需要調(diào)用其提供的API即可使用其功能,由于使用了面向?qū)ο蟮木幊谭绞?,其所有功能都在一個(gè)基類里面提供,開(kāi)發(fā)人員可以通過(guò)繼承、派生的方式擴(kuò)充其功能。在實(shí)際應(yīng)用中驗(yàn)證了其具有通用性、較好的擴(kuò)展性以及較高的性能。
關(guān)鍵詞:角色 權(quán)限 訪問(wèn)控制
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)11(a)-0156-02
基于角色的訪問(wèn)控制機(jī)制(RBAC:Role-Based Access Control)是目前較為常用的一種訪問(wèn)權(quán)限控制機(jī)制,如ORACLE、SQL Server著名的系統(tǒng)都使用這種方式進(jìn)行訪問(wèn)控制,權(quán)限與角色相關(guān)聯(lián),用戶通過(guò)扮演不同的角色從而獲得授予角色的權(quán)限,極大地簡(jiǎn)化了權(quán)限的管理工作。這些機(jī)制通常都遵循最小授權(quán),責(zé)任分離和數(shù)據(jù)抽象這三個(gè)基本原則,并且具有很多相似的地方。該文介紹了一種RBAC機(jī)制,下文簡(jiǎn)稱UPAC,實(shí)現(xiàn)了RBAC機(jī)制中大部分通用的功能,在實(shí)際應(yīng)用中可以把UPAC當(dāng)成一個(gè)架構(gòu)進(jìn)行擴(kuò)充,也可以直接使用其API進(jìn)行開(kāi)發(fā)工作。使用UPAC的系統(tǒng)(下文簡(jiǎn)稱調(diào)用系統(tǒng))只需要將UPAC作為一個(gè)模塊掛接到調(diào)用系統(tǒng)當(dāng)中,就可以使用其功能。
1 系統(tǒng)的構(gòu)成
UPAC主要由用戶、角色、對(duì)象、模塊和訪問(wèn)權(quán)限這5個(gè)元素構(gòu)成,這些元素相互作用構(gòu)成一套完整的權(quán)限控制機(jī)制。
用戶是最小的授權(quán)單元,用戶具有賬號(hào)、密碼、域以及等級(jí)等基本屬性,在實(shí)際應(yīng)用中用戶的屬性可以由調(diào)用系統(tǒng)擴(kuò)充。系統(tǒng)的使用者,例如普通用戶和管理員等都是通過(guò)用戶的賬號(hào)獲得訪問(wèn)系統(tǒng)的權(quán)限的。
2 訪問(wèn)權(quán)限
在UPAC中,訪問(wèn)權(quán)限只是被當(dāng)成一些整數(shù),其代表的實(shí)際意義由調(diào)用系統(tǒng)進(jìn)行解釋。訪問(wèn)權(quán)限作用于模塊和對(duì)象這兩種訪問(wèn)單元。UPAC負(fù)責(zé)獲取某個(gè)訪問(wèn)單元的訪問(wèn)權(quán)限值,然后將該值返回給調(diào)用系統(tǒng)。
UPAC的訪問(wèn)權(quán)限是累加的關(guān)系,主要體現(xiàn)在兩個(gè)方面。
(1)角色與用戶:一個(gè)用戶所具有的權(quán)限為其本身被授予的權(quán)限加上其加入的所有角色的權(quán)限。
(2)模塊與對(duì)象:如果一個(gè)授權(quán)單元具有了一個(gè)模塊的某種訪問(wèn)權(quán)限,那么該授權(quán)單元就具有了該模塊所有對(duì)象的相同的訪問(wèn)權(quán)限,如果單獨(dú)再對(duì)這個(gè)授權(quán)單元進(jìn)行了模塊中的對(duì)象的授權(quán),那么該授權(quán)單元對(duì)該對(duì)象具有的訪問(wèn)權(quán)限為其對(duì)模塊的訪問(wèn)權(quán)限加上對(duì)該對(duì)象的訪問(wèn)權(quán)限。
從文中可以看出,UPAC只是按照規(guī)則提供了為各種元素提供了相互之間的關(guān)聯(lián),并沒(méi)有對(duì)各個(gè)元素賦予任何的實(shí)際意義,這使得UPAC可以獨(dú)立于任何系統(tǒng),而調(diào)用系統(tǒng)由于不需要再處理這些元素之間的關(guān)系,簡(jiǎn)化了其權(quán)限系統(tǒng)的設(shè)計(jì)。
3 用戶
在UPAC中用戶是訪問(wèn)系統(tǒng)資源的唯一依據(jù),用戶登錄后,通過(guò)其本身授予的權(quán)限和其所加入的角色的所獲得的權(quán)限對(duì)系統(tǒng)資源進(jìn)行訪問(wèn)。UPAC中用戶的基本屬性只有5個(gè),如圖1所示。
賬號(hào)和密碼用于登錄,等級(jí)用于控制用戶等級(jí)的高低,域用于控制用戶相互之間的可見(jiàn)性。
需要注意的是,上面提到的系統(tǒng)資源的訪問(wèn)權(quán)限與用戶等級(jí)之間沒(méi)有必然的聯(lián)系,等級(jí)高的用戶并不一定比等級(jí)低的用戶對(duì)某個(gè)資源具有更多的訪問(wèn)權(quán)限,它們之間的關(guān)系由調(diào)用系統(tǒng)確定。
UPAC的用戶等級(jí)屬性是一個(gè)正整數(shù),數(shù)字越大表示等級(jí)越高,具體意義也由調(diào)用系統(tǒng)決定。例如為了簡(jiǎn)單起見(jiàn)調(diào)用系統(tǒng)可以在實(shí)現(xiàn)中通過(guò)程序指定將所有的系統(tǒng)資源的所有訪問(wèn)權(quán)限賦予等級(jí)為系統(tǒng)管理員的用戶,從而使得系統(tǒng)管理員不受RBAC規(guī)則的限制。
域?qū)傩灾付擞脩羲诘摹坝颉?,這個(gè)屬性用來(lái)控制用戶之間的可見(jiàn)性,域?qū)傩灾迪嗤挠脩籼幱谕粋€(gè)“域”中,他們相互之間是可見(jiàn)的,而處于不同的“域”之中的用戶,相互之間是不可見(jiàn)的。例如,在一個(gè)ERP系統(tǒng)中,財(cái)務(wù)部的部門(mén)的員工可以看到該部門(mén)中的所有員工,但是卻不能看到人事部的員工,就可以通過(guò)為這兩個(gè)部門(mén)的員工賦予不同的域?qū)傩詠?lái)進(jìn)行控制。
另外,等級(jí)和域?qū)傩钥梢韵嗷ソY(jié)合,以實(shí)現(xiàn)更多的功能,例如,要求部門(mén)經(jīng)理級(jí)別的用戶都可以看到整個(gè)企業(yè)所有的員工,盡管每個(gè)部門(mén)經(jīng)理的域?qū)傩远疾幌嗤?,但是此時(shí)可以根據(jù)等級(jí)屬性來(lái)進(jìn)行控制。
ID是一個(gè)用戶在UPAC中的一個(gè)整數(shù)類型的唯一標(biāo)識(shí)符,由UPAC使用,對(duì)于調(diào)用系統(tǒng)不可見(jiàn)。使用ID的原因是由于整數(shù)檢索速度更快。
4 API
UPAC通過(guò)面向?qū)ο蟮姆椒▽?shí)現(xiàn),通過(guò)類的成員函數(shù)為調(diào)用系統(tǒng)提供了API,并且調(diào)用系統(tǒng)可以通過(guò)UPAC的基類派生出自己的子類,從而擴(kuò)充UPAC的功能。UPAC提供的API如表1所示。
其中HasModulePrivileges、GetModulePrivileges、HasObjectPrivileges和GetObjectPrivileges這四個(gè)函數(shù)會(huì)自動(dòng)處理用戶所屬的角色的權(quán)限問(wèn)題。
UPAC只提供了基本的API函數(shù),但是卻提供了RBAC的最常用的功能,使得調(diào)用系統(tǒng)不需要考慮RBAC中的最難處理的權(quán)限獲取的問(wèn)題。
5 結(jié)語(yǔ)
UPAC定義了用戶、角色、模塊、對(duì)象和訪問(wèn)權(quán)限等元素,實(shí)現(xiàn)了各元素之間的關(guān)系的處理、關(guān)系數(shù)據(jù)的保存和檢索功能,并且給調(diào)用系統(tǒng)提供了靈活的擴(kuò)展機(jī)制,調(diào)用系統(tǒng)只需要在UPAC的基礎(chǔ)上進(jìn)行少量的工作就可以實(shí)現(xiàn)一個(gè)個(gè)性化的RBAC機(jī)制。UPAC已經(jīng)在多個(gè)項(xiàng)目使用,驗(yàn)證了其具有較好的擴(kuò)展性、靈活性以及較高的性能。
參考文獻(xiàn)
[1] 李志英,黃強(qiáng),樓新遠(yuǎn),等.RBAC模型研究、改進(jìn)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2006,26(12):2945-2947.
[2] 唐守利.基于RBAC的粒度訪問(wèn)控制模型研究[J].信息系統(tǒng)工程,2010(9):125,133.
[3] 梁澤梅,李蜀瑜.基于RBAC的兩級(jí)訪問(wèn)控制模型[J].微型電腦應(yīng)用,2011,27(3):54-56.