曾錫山, 陳振洲
(華南師范大學(xué)計(jì)算機(jī)學(xué)院,廣州 510631)
?
基于對(duì)象屬性約束權(quán)限控制研究與實(shí)現(xiàn)
曾錫山*, 陳振洲
(華南師范大學(xué)計(jì)算機(jī)學(xué)院,廣州 510631)
摘要:授權(quán)控制是軟件設(shè)計(jì)中一個(gè)比較難處理的問題,目前大多授權(quán)研究均基于用戶授權(quán)方法,未涉及授權(quán)后實(shí)現(xiàn)技術(shù).上述授權(quán)技術(shù)通常采用簡(jiǎn)單限制或允許某些菜單、命令功能操作,授權(quán)控制方式簡(jiǎn)單、粒度大而且不靈活.文中提出一種基于對(duì)象屬性的約束訪問控制方法,通過對(duì)軟件最小控制單位(對(duì)象屬性)進(jìn)行約束,很好解決上述問題;該方法具有授權(quán)管理方便以及實(shí)現(xiàn)簡(jiǎn)單等特點(diǎn),并極大提高軟件開發(fā)效率和復(fù)用程度.
關(guān)鍵詞:角色; 對(duì)象屬性; 控制粒度; 約束管理
提高訪問控制安全性是軟件設(shè)計(jì)必須解決的問題,應(yīng)用程序根據(jù)不同角色授權(quán)不同資源使用,達(dá)到授權(quán)限制使用目的.角色管理是權(quán)限控制的一個(gè)重要環(huán)節(jié),權(quán)限控制技術(shù)有3種:自主型訪問控制(DAC)[1]、強(qiáng)制型訪問控制(MAC)[2]和基于角色的訪問控制(RBAC)[3].基于角色的訪問控制(RBAC)是目前公認(rèn)的解決資源訪問控制的有效方法[4].其特征是:減小授權(quán)管理的復(fù)雜性,降低管理開銷;靈活地支持企業(yè)的安全策略,對(duì)用戶變化有很大的伸縮性.企業(yè)系統(tǒng)普遍采用基于角色的授權(quán)控制方法,根據(jù)需要設(shè)立不同操作權(quán)限的角色,用戶通過授權(quán)不同角色獲得相應(yīng)操作權(quán)限.
基于角色訪問控制已開展較多研究,應(yīng)用效果好,但在軟件設(shè)計(jì)中如何實(shí)現(xiàn)授權(quán)控制技術(shù),一直困擾軟件開發(fā)人員,目前涉及用戶權(quán)限研究的文獻(xiàn)基本是介紹基于角色如何授權(quán)的技術(shù),對(duì)用戶授權(quán)后軟件設(shè)計(jì)或代碼實(shí)現(xiàn)方法等關(guān)鍵技術(shù)少有介紹[5];另外,如何獲得受約束控制資源、其規(guī)范要求、如何控制資源訪問及實(shí)現(xiàn)技術(shù)也鮮有介紹[6],有的是采用靜態(tài)把功能和相應(yīng)具體角色或用戶進(jìn)行綁定[7].大多授權(quán)方法存在如下不足:
(1)授權(quán)粒度較大.授權(quán)資源的粒度大,大多采用菜單授權(quán),少數(shù)是針對(duì)操作對(duì)象進(jìn)行控制,每個(gè)菜單可能代表一個(gè)比較復(fù)雜處理功能,不能在處理模塊授權(quán),如需使用某個(gè)程序功能一部分,則需增加新模塊實(shí)現(xiàn)使用,程序功能重復(fù),不利于軟件開發(fā)和維護(hù)[8].
(2)功能角色相互綁定,無法添加新角色.有些系統(tǒng)設(shè)計(jì),可以把授權(quán)粒度縮小到某一個(gè)功能控件,但在程序中綁定了某些固定角色,所受約束的控件無法作為其他角色使用[9],不能實(shí)現(xiàn)新角色的添加及使用.
(3)控制簡(jiǎn)單.授權(quán)采用簡(jiǎn)單允許或限制操作,沒有根據(jù)不同對(duì)象進(jìn)行不同約束,策略簡(jiǎn)單、授權(quán)粒度較大,資源控制不夠靈活,無法滿足細(xì)化管理要求,造成軟件功能重復(fù)現(xiàn)象.
(4)缺乏對(duì)非功能約束.無法根據(jù)業(yè)務(wù)或特定需求進(jìn)行非功能執(zhí)行的限制,例如對(duì)一個(gè)文本對(duì)象,無法增加用戶只讀、部分信息禁止顯示等非執(zhí)行約束.
本文提出一種基于對(duì)象屬性訪問控制方法,通過對(duì)軟件的最小控制單位——對(duì)象屬性約束,可以很好解決上述問題.
1基本原理及實(shí)現(xiàn)
基于對(duì)象屬性訪問控制是在RBAC基礎(chǔ)上,針對(duì)展示層受約束對(duì)象屬性進(jìn)行授權(quán)和控制管理,不同角色用戶使用展現(xiàn)層模塊時(shí),通過約束對(duì)象(控件)啟動(dòng)、只讀、顯示等3個(gè)屬性,控制用戶對(duì)控件響應(yīng)、數(shù)據(jù)修改、信息顯示等操作,實(shí)現(xiàn)對(duì)用戶授權(quán)目的.
1.1基本概念
定義1啟用控制(Enabled).Enabled屬性用來設(shè)置控件是否啟動(dòng),Enabled取值為“True”時(shí)可以啟動(dòng),Enabled取值為“Fasle”時(shí),對(duì)象不可以啟動(dòng)、被禁止, Enabled控制的默認(rèn)值為“True”.
定義2文本讀寫控制(Readonly).Readonly 表示文本對(duì)象是否可以被更改操作,Readonly設(shè)置為“True”時(shí),該文本對(duì)象不能被更改、只能只讀.通過設(shè)置,實(shí)現(xiàn)對(duì)用戶授權(quán)限制,默認(rèn)值為“Fasle”.
定義3可見控制(Visible).Visible是用來設(shè)置控件是否可見或隱藏,對(duì)象屬性Visible值設(shè)置為“True”時(shí)對(duì)象可以顯示,設(shè)置為“Fasle”時(shí)對(duì)象隱藏不被顯示,默認(rèn)值為“True”.
定義4授權(quán)約束屬性. 授權(quán)約束屬性是約束限制Enabled、Readonly、Visible集合,記作A,授權(quán)約束屬性子集記作a.
定義5表示層模塊集.表示層模塊集是指需要進(jìn)行授權(quán)控制的程序模塊集合.常見約束模塊有菜單模塊、輸入輸出程序模塊等.
定義6約束對(duì)象.約束對(duì)象是能夠?qū)κ跈?quán)約束屬性A進(jìn)行操作的軟件對(duì)象,記作f,約束對(duì)象全集記作F.約束對(duì)象包括菜單項(xiàng)、按鈕(Button)、文本(Text)或標(biāo)簽(Label)等控件.
授權(quán)有2種:一種是許可授權(quán),根據(jù)用例圖實(shí)現(xiàn)對(duì)角色使用的許可.可許可資源比較多,為減少許可復(fù)雜性,在約束時(shí)多數(shù)是針對(duì)模塊進(jìn)行[10].另一種是資源使用約束,約束資源只占資源很少一部分,可以把約束粒度縮小,約束資源的授權(quán)要比許可授權(quán)簡(jiǎn)單且容易實(shí)現(xiàn).
定義8角色.角色是具有一組操作權(quán)限集合,不同角色具有不同操作集,這些操作由系統(tǒng)管理員分配給角色,記作r,角色的全集記作R.
角色表:存放角色信息,模型簡(jiǎn)化為角色I(xiàn)D、角色名稱主要屬性.
定義10用戶.用戶是可以獨(dú)立訪問系統(tǒng)中的數(shù)據(jù)的主體,記作u,用戶的全集記作U.
定義11角色指派.角色指派是用戶集U和角色集R之間的二元關(guān)系,假定U×R是—個(gè)角色指派關(guān)系的集合,那么(u,r)?U×R表示用戶被指派了—個(gè)角色r.
授權(quán)管理實(shí)際是限制角色對(duì)資源使用,包括對(duì)象的啟動(dòng)、寫操作、信息顯示限制等,其他限制都可以通過對(duì)象Enabled、Readonly、Visible屬性設(shè)置實(shí)現(xiàn),本文主要通過對(duì)象Enabled、Readonly和Visible等3個(gè)控制屬性值設(shè)置,討論授權(quán)限制及實(shí)現(xiàn)技術(shù).
1.2控件資源約束描述基本結(jié)構(gòu)模型
基于對(duì)象資源權(quán)限控制訪問,涉及用戶、角色及約束資源等相關(guān)對(duì)象,它們關(guān)系如圖1所示,一個(gè)用戶可以授權(quán)多個(gè)角色,用戶約束是其擁有各角色的資源約束集的交集.例如:如果用戶UA具有角色R1和R2,假設(shè)R1對(duì)控件C1約束,R2沒有約束,則UA對(duì)控件C1沒有約束.
考慮模型設(shè)計(jì)及算法實(shí)現(xiàn)需要,授權(quán)管理實(shí)體分用戶表、角色表、用戶角色表、功能模塊表、模塊約束資源表和角色約束表等6個(gè)實(shí)體表,它們關(guān)系如圖2表示.
圖2中,角色約束表是關(guān)鍵,它直接限制用戶對(duì)展示資源使用.用戶擁有的角色是通過對(duì)用戶指定角色實(shí)現(xiàn)的[11].
圖1 用戶、角色、約束資源、約束權(quán)限結(jié)構(gòu)
圖2 用戶、角色、約束權(quán)限表等聯(lián)系結(jié)構(gòu)
1.3實(shí)現(xiàn)技術(shù)模型
1.3.1約束對(duì)象資源劃分及抽取大多用戶授權(quán)是基于用例圖進(jìn)行許可管理,考慮到許可資源較多,為簡(jiǎn)化授權(quán)管理和設(shè)計(jì)方便,一般采用功能授權(quán)(菜單授權(quán))或有少量簡(jiǎn)單增、刪、改等操作授權(quán)、或放寬許可粒度來降低許可復(fù)雜性和編程的難度[12],授權(quán)只是實(shí)現(xiàn)簡(jiǎn)單禁止或許可[13].
本方法在不增加系統(tǒng)復(fù)雜度情況下,把授權(quán)粒度降低到對(duì)象屬性,既滿足所有授權(quán)需要,又提高系統(tǒng)靈活性.
用戶使用一個(gè)UI界面進(jìn)行操作,操作界面程序受約束的控件比較少.對(duì)用戶需約束的控件,抽象相應(yīng)關(guān)鍵屬性,根據(jù)不同權(quán)限設(shè)置不同屬性值,實(shí)現(xiàn)用戶授權(quán)目的.角色名稱設(shè)置UI界面如圖3所示,抽象約束資源如表1所示,角色名稱設(shè)置中包括5個(gè)標(biāo)簽、1個(gè)表格、2個(gè)輸入文本框、3個(gè)按鈕等對(duì)象,這些控件都約束授權(quán).
圖3 UI界面控件及原理圖
UI模塊名對(duì)象對(duì)象類型備注角色設(shè)置增加Button增加按鈕角色設(shè)置刪除Button刪除按鈕角色設(shè)置保存Button保存按鈕角色設(shè)置Text1Text編號(hào)輸入框角色設(shè)置Text2Text姓名輸入框角色設(shè)置表格GridView顯示表內(nèi)容角色設(shè)置編號(hào)Label編號(hào)標(biāo)簽角色設(shè)置名稱Label名稱標(biāo)簽
1.3.2授權(quán)約束管理模型授權(quán)約束表是對(duì)角色資源使用限制說明,結(jié)構(gòu)屬性包括角色I(xiàn)D、對(duì)象ID、Enabled、Readonly、Visible.假設(shè)有2個(gè)格式:R1和R2,對(duì)角色R1和R2分別授權(quán),R1只能查看數(shù)據(jù);R2不能刪除,可增加和修改(表2).
表2 一般角色名稱設(shè)置授權(quán)約束
實(shí)現(xiàn)過程:(1)根據(jù)不同角色對(duì)資源進(jìn)行統(tǒng)一管理和授權(quán),每種角色對(duì)應(yīng)一組權(quán)限.用戶被分配角色后,就擁有這些角色操作約束.(2)通過一個(gè)授權(quán)程序,對(duì)資源進(jìn)行功能限制管理,創(chuàng)建用戶時(shí)只需指派相應(yīng)角色.
一個(gè)功能約束授權(quán),只需通過對(duì)象設(shè)置禁止響應(yīng)、只讀或不顯示等,則滿足要求,方法簡(jiǎn)單方便.
2約束資源授權(quán)算法及實(shí)現(xiàn)
用戶授權(quán)控制包括角色指派和使用約束管理兩部分,通過軟件指派用戶角色;用戶指派角色后,每進(jìn)入一個(gè)程序操作時(shí),會(huì)受角色限制資源的使用.
授權(quán)后用戶操作控制實(shí)現(xiàn)過程包括:(1)權(quán)限約束驗(yàn)證過程Role_Check()算法實(shí)現(xiàn);(2)Role_Check()過程使用方法及說明.
2.1權(quán)限約束驗(yàn)證過程Role_Check()的實(shí)現(xiàn)
權(quán)限約束驗(yàn)證程控制:用于對(duì)表現(xiàn)層模塊指定對(duì)象進(jìn)行約束使用限制,實(shí)現(xiàn)角色授權(quán)限制,它提供一個(gè)公共約束接口Role_Check(模塊ID,用戶ID),在需要授權(quán)的模塊程序編寫代碼調(diào)用,簡(jiǎn)化授權(quán)約束程序編寫.Role_Check()過程在表現(xiàn)層進(jìn)行初始化時(shí)被調(diào)用,主要處理過程包括:
(1)根據(jù)參數(shù)傳入模塊和用戶,獲得用戶角色所受約束對(duì)象集.
(2)根據(jù)約束對(duì)象集,按以下步驟逐條設(shè)置相應(yīng)對(duì)象約束屬性值:
①當(dāng)約束對(duì)象Enabled受約束,對(duì)象Enabled設(shè)置為False,對(duì)象方法被禁啟用動(dòng).
②當(dāng)約束對(duì)象Readonly受約束,對(duì)象Readonly設(shè)置為True,禁止修改相應(yīng)數(shù)據(jù).
③當(dāng)約束對(duì)象Visible受約束,對(duì)象Visible設(shè)置為False,對(duì)象信息不顯示.
權(quán)限約束驗(yàn)證過程Role_Check()實(shí)現(xiàn)算法描述流程如圖4.
圖4 Role_Check()算法描述
2.2表現(xiàn)層模塊調(diào)用權(quán)限約束方法
軟件編碼時(shí),在需要授權(quán)的模塊調(diào)用過程Role_Check()實(shí)現(xiàn)限制,不同角色可以同時(shí)使用同一個(gè)模塊功能,使用的流程如圖5所示.
圖5說明每個(gè)展示層都可以調(diào)用Role_Check進(jìn)行控制,包括菜單、一般輸入輸出、彈出過程等模塊.當(dāng)程序P_ID、用戶U_ID作為參數(shù)被傳入授權(quán)控制程序,則完成授權(quán)控制,調(diào)用程序方式: Role_Check(P_ID,U_ID).
授權(quán)后的編程實(shí)現(xiàn)簡(jiǎn)單方便、不增加其他限制、不需添加復(fù)雜邏輯算法或程序代碼.授權(quán)控制的粒度可以降到最低,添加新角色也不用修改控制系統(tǒng).
3結(jié)束語
基于對(duì)象資源約束權(quán)限控制研究,授權(quán)控制資源可以細(xì)化到程序?qū)ο髮傩?,極大縮小控制粒度,提高程序控制靈活性、開發(fā)效率.技術(shù)已經(jīng)在澳門濠江中學(xué)學(xué)生考評(píng)系統(tǒng)等多個(gè)系統(tǒng)上應(yīng)用,結(jié)果表明:在信息量巨大、角色復(fù)雜情況下,使用效果很好.
圖5授權(quán)后的編碼實(shí)現(xiàn)方法
Figure 5Code implementation method after authorization
參考文獻(xiàn):
[1]DENNING D E. A lattice model of secure information flow[J]. Communications of the ACM, 1976, 19(5): 236-243.
[2]SANDHU R,MUNAWER Q.How to do discretionary accessusing roles[C]∥The Third ACM Workshop on Role Based Access Control.Barkley:ACM Press,1998:47-54.
[3]SANDHU R, COYNE E J, FEINSTEIN H L, et al. Role-based accesscon troll models[J]. IEEE Computer, 1996, 29(2): 38-47.
[4]于春生, 聶晶.基于組和角色的工作流權(quán)限訪問控制模型[J].計(jì)算機(jī)應(yīng)用, 2011,31(3):778-780.
YU C S,NIE J.Access control model of workflow permission based on group and role[J].Journal of Computer Applications,2011,31(3):778-780.
[5]張輝. 基于工作組的訪問控制模型研究[J].哈爾濱理工大學(xué)學(xué)報(bào),2011,16(3):31-34.
ZHANG H.Research on user group of access control[J]. Journal of Harbin University of Science and Technology, 2011,16(3):31-34.
[6]葉春曉, 李忠祎, 胡海波,等.基于角色訪問控制授權(quán)約束條件的生成方法[J].計(jì)算機(jī)工程, 2011,37(1):154-158.
YE C X, LI Z Y, HU H B, et al.Generation method of authorization constraints in role-based access control[J].Computer Engineering, 2011,37(1):154-158.
[7]胡迎松, 陳剛, 朱阿柯,等.一種基于角色和部門的訪問控制模型[J].計(jì)算機(jī)工程與科學(xué), 2006,28(7):30-33
HU Y S, CHEN G, ZHU A K, et al.An extended access control model based on roles and departments[J].Computer Engineering & Science, 2006,28(7):30-33.
[8]郝文育, 蔡宗琰, 王寧生.基于角色的訪問權(quán)限控制在ERP系統(tǒng)中的應(yīng)用[J].機(jī)械科學(xué)與技術(shù),2004,23(9):1029.
HAO W Y,CAI Z Y,WANG N S.Role-based access control and its implementation in enterprise resource planning(ERP)[J].Mechanical Science and Technology,2004,23(9):1029.
[9]司煒, 曾廣周, 盛琦,等.RBAC 模型的細(xì)粒度擴(kuò)充及應(yīng)用[J].計(jì)算機(jī)科學(xué), 2006, 33(4):278.
SI W, ZENG G Z, SHENG Q, et al.Fine grain extension and application of the RBAC model[J].Computer Science,2006, 33(4):278.
[10]張劍波,童方圓,胡金涌,等. 基于復(fù)雜角色模型安全訪問控制的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(7):290.
ZHANG J B,TONG F Y, HU J Y, et al.On complex roles model-based secure access control and its implementatin[J].Computer Applications and Software,2011,28(7):290.
[11]郭理,秦懷斌,梁斌.基于RBAC的高校WEB服務(wù)平臺(tái)權(quán)限設(shè)計(jì)[J].微計(jì)算機(jī)信息,2011,27(2):236.
GUO L,QIN H B, LIANG B.Authorization design of university web services platform based on RBAC[J].Microcomputer Information, 2011,27(2):236.
[12]韓偉力,陳剛,尹建偉,等.權(quán)限約束支持的基于角色的約束訪問控制模型與實(shí)現(xiàn)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2002,14(4):337.
HAN W L, CHEN G, YIN J W,et al.Role-based constrained access control model and implement supported by constraints among permissions[J].Journal of Computer-Aided Design & Computer Graphics,2002,14(4):337.
[13]鄧康明, 陳金玉.角色訪問控制模型的分拆數(shù)實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(12):54.
DENG K M,CHEN J Y.Research and implement of role-based access control model based on partition number[J].Computer Engineering and Application,2011,47(12):54.
【中文責(zé)編:莊曉瓊英文責(zé)編:肖菁】
Research and Implementation of Constraint Access Control Based on Object Attribute
ZENG Xishan*, CHEN Zhenzhou
(School of Computer Science, South China Normal University, Guangzhou 510631, China)
Abstract:In software design, authorization control is a very difficult problem. Most authorization research is based on user authorization method, in which no implementation technology is involved after authorization. These authorizations usually employ simple restrictions or allow some menu and command function operation. Authorization control method is simple, coarse and inflexible. A constraint access control method based on object attribute is proposed. Through some constraints on the smallest control unit of software, object attribute, the method can solve the problems above. At the same time,the method has characteristics such as it has convenient authorization management and is easy to be implemented and also it can greatly improve the efficiency of software development and reuse degree.
Key words:role; object attribute; granularity control; constraint management
中圖分類號(hào):TP39
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1000-5463(2016)01-0111-05
*通訊作者:曾錫山,講師,Email: zengxishan@126.com.
基金項(xiàng)目:廣東省科技計(jì)劃項(xiàng)目(2013B010401022);廣州市科技計(jì)劃項(xiàng)目(2014Y2-C0123)
收稿日期:2015-05-25《華南師范大學(xué)學(xué)報(bào)(自然科學(xué)版)》網(wǎng)址:http://journal.scnu.edu.cn/n