劉新強,曾兵義
(1.西安鐵路職業技術學院 電子信息系,陜西 西安 710014;2.陜西開拓者軟件有限責任公司 陜西 西安 710052)
隨著互聯網的發展,Internet服務迅速崛起,基于Web的ERP(企業資源計劃)系統以其優越的方便性和快捷性掀起了企業信息化的新潮流;另一方面,由于網絡信息的共享特性,系統的安全問題變得越來越突出。在ERP綜合應用系統中,對用戶進行權限劃分,形成有效的訪問控制,是保證系統安全的重要措施之一。
在企業環境中的訪問控制方法,一般有3種[1]:
1)自主型訪問控制(DAC):是在確認主體身份的基礎上,對訪問進行限定的一種控制策略,多用于中小型軟件系統,屬于較弱的一種訪問控制策略。
2)強制型訪問控制(MAC):是指系統強制主體服從事先制訂的訪問控制政策,常用于多層次安全級別的軍事軟件系統,屬于較強的一種訪問控制策略。
3)基于角色的訪問控制(RBAC):該技術主要研究將用戶劃分成與其在組織結構體系相一致的角色,這是目前公認的解決大型企業的統一資源訪問控制的有效方法。
然而,ERP系統畢竟是企業綜合性的信息系統,涉及大量的操作、頁面和數據,幾乎所有工作人員均是用戶,系統的功能和人員的身份也在不斷變化,權限管理的任務繁雜而且龐大[2]。基于傳統的RBAC模型在ERP權限管理中難以滿足輕便、快捷的權限管理性能。本文在研發一個國有大型煤礦ERP系統過程中,通過深入研究RBAC權限策略,提出了基于用戶組和權限組的RBAC改進模型,通過擴充用戶組、權限組來強化角色的權限分配。
RBAC控制模型的最小元素集合包括用戶users、角色roles、目標objects、操作operations、許可permissions 5個基本數據元素[3]。權限被賦予角色而不是用戶,當一個角色被賦予一個用戶,該用戶就擁有了該角色的所有權限[4],這就簡化了對權限分配的管理。如圖1所示。

圖1 RBAC基本模型Fig.1 Basic model of RBAC
1)用戶users:是權限的擁有者或主體,用戶和權限通過角色實現分離。
2)角色roles:權限分配的單位與載體,通過繼承關系支持分級的權限實現。如:科長角色同時具有科長角色、科內業務人員角色。
3)目標objects:是系統所要保護的資源(Resource),可以被訪問的對象。如:網頁是資源,網頁上的按鈕、文本框等也是資源,屬于網頁節點的子節點。要想訪問按鈕,必須要能夠訪問頁面。
4)操作operations:完成資源的類別和訪問策略之間的綁定,如:瀏覽、增加、刪除、修改、審閱等。
5)權限permissions:對受保護的資源操作的訪問許可(Access Permission),是綁定在特定的資源實例上的,不同的資源類別可能采用不同的訪問模式(Access Mode)。如:頁面具有能打開、不能打開的訪問模式,按鈕具有可用、不可用的訪問模式,文本編輯框具有可編輯、不可編輯的訪問模式。同一資源的訪問策略可能存在排斥和包含關系,某個數據集的可修改訪問模式就包含了可查詢訪問模式。
在一個組織中,角色是為了完成各種工作而創造的,用戶則依據它的責任和資格來被指派相應的角色,用戶可以很容易地從一個角色被指派到另一個角色。角色可依據新的需求和系統的合并而賦予新的權限,而權限也可根據需要而從某角色中回收。在圖1中,權限的分配是通過2個步驟完成的。即為角色指派權限PA(Permission Assignment)和為用戶指派角色UA(Users Assignmen)[5]。
1)分配角色權限PA:為角色指派權限,實現角色和操作之間的關聯關系映射。
2)分配用戶角色UA:為用戶指派角色,實現用戶和角色之間的關聯關系映射。
該對象模型最終將訪問控制模型轉化為訪問矩陣形式。訪問矩陣中的行對應于用戶,列對應于操作,每個矩陣元素規定了相應的角色,對應于相應的目標被準予的訪問許可、實施行為。
按訪問矩陣中的行看,是訪問能力表CL(Access Capabilities)的內容;按訪問矩陣中的列看,是訪問控制表ACL(Access Control Lists)的內容。這種權限機制實質上仍然是一種靜態權限,當資源和用戶量激增時,訪問矩陣的容量就變得很大,維護工作量快速上升。
文中在研發一個大型國有煤礦的ERP系統時,因為資源和用戶數據量的急劇增大,用戶身份和業務邏輯靈活多變。在設計訪問控制模型時,需要強化分層次的RBAC權限模型,本文在傳統RBAC模型的基礎上,引入用戶組和權限組層級,并從這兩個側面來強化基于角色的三級權限機制。
在一個大型煤礦企業中,用戶權限全部讓管理員來一次分配是不現實的,即使要某部門領導人員為其下屬的員工逐一分配操作權限,也是非常耗時和繁瑣的事情。為了簡單快捷的批量指定用戶的角色UA,可以將某一類型的人、具有相同特征人組合一起的集合體。通過對組授予角色,快速使某一類人具有相同的權限,來簡化對用戶授權。用戶組的劃分,可以按職位、項目或任務來實現[6]。一個用戶可以屬于某一個組或多個組。
常見的資源權限有菜單功能、頁面功能和數據表功能。嘗試對資源進行分類,進一步進行權限分組。將一個菜單、頁面或一個數據表下的所有權限組合一起,形成一個“權限組”,也就是一個模塊管理權限,包括所有基本權限操作。如:一個權限組(用戶管理),包括用戶的瀏覽、添加、刪除、修改、審核等操作,它自身也是一個權限。因為新的RBAC引入了用戶組和權限組的層級,本文把該訪問模型暫且命名為RBAC-G(Group)模型,如圖2所示。用戶組的設置,優化了分配用戶角色UA的工作;權限組的設置,優化了分配角色權限PA的工作。

圖2 RBAC-G擴充模型Fig.2 Extended model of RBAC-G
該模型不存儲任何用戶權限表,每個用戶在每次登錄系統時需要進行權限計算。在擴充的RBAC-G模型中,權限的計算不僅依據用戶、用戶組、角色、權限組、權限等基本信息,而且涉及到這些基本信息的關聯信息,如用戶角色、用戶組角色、角色權限、角色權限組、權限組權限等。計算的結果存放在個人會話Session中,當系統發生變更或重新登錄后需要重新計算[7]。對于關鍵操作的權限,可以要求在每次進行前,再次計算刷新。
因為模型采用基于組的動態權限,當一個用戶所在的用戶組、擁有的角色、角色所擁有的權限、權限組任一發生變化,該用戶的權限都受到影響。如某用戶脫離了某個部門或項目,則自動丟棄對應用戶組的權利;同樣,如果一個權限組的權限減少,同樣,擁有該權限組的角色的所有用戶均減少該項權限。在RBAC基礎上,按照優化擴充的思想對煤礦企業ERP系統設計了新的權限訪問控制系統。
在ERP系統的關系模型設計時,除了要將RBAC的基本元素設計為表外,還需要增加用戶組和權限組的相關表。即用戶表、角色表、資源表、操作表、權限表,而權限表實際上是資源表和操作表的組合;另外增加權限組(菜單、頁面、數據表)、用戶組(部門、項目、任務)等表。根據分析,需要增加以下幾個關聯表:
1)用戶角色關聯表:一個用戶可以有0~n個角色,一個角色可以0~n個用戶。
2)角色權限關聯表:一個角色可以有0~n個權限,一個權限可以0~n個角色。
3)用戶、用戶組關聯表:一個用戶可以屬于0~n個用戶組,一個用戶組可以0~n個用戶。
4)權限、權限組關聯表:一個權限可以屬于0~n個權限組,一個權限組可以0~n個權限。
經過分析設計,煤礦ERP系統中權限管理的表設計如圖3所示。上圖中,新增加了4個關聯表:即用戶-用戶組,角色-用戶組關聯表;權限-權限組,角色-權限組關聯表。

圖3 基于RBAC-G模型的煤礦ERP權限管理的表設計Fig.3 Table design in a coal mine ERP rights management based on RBAC-G model
在該設計模型中,傳統的RBAC仍然是基礎,基本元素當然需要維護。如:用戶、角色、資源、操作、權限等表的增加、刪除、修改、查詢等功能[8],此外,需要組織以下數據:
用戶組信息維護:新增部門、項目、任務等基礎數據,設置命名的用戶組和用戶類型,將對應成員用戶,添加到不同的用戶組中(添加關聯記錄)。
權限組信息維護:新增菜單、頁面、數據表等基礎數據,設置命名的權限組和權限類型,將對應權限,添加到不同的權限組中(添加關聯記錄)。
1)授權
系統仍可采用用戶、角色、權限授權模式,系統兼容了RBAC授權的2個步驟:把一個權限或多個權限授予一個角色,把一個或多個角色授予一個用戶。授權用戶獲得授予角色的所有權利。
RBAC-G模型的授權還增加了2種情況:把一個或多個權限組授予一個角色,把一個或多個角色授予一個用戶組。授權用戶組中的所有用戶,均獲得授予角色的所有權限組的所有權限。
當用戶的數量非常大時,擴充的授權方式可以極大地提高授權效率。
2)權限計算
每個用戶權限的多少,重點體現在6個關聯表中:以角色為中心的關聯表有:用戶-角色表、角色-用戶組表、角色-權限表、角色-權限組表;此外還有用戶-用戶組關聯表和權限-權限組關聯表。這些表的元素實質上體現了整個ERP系統的權限管理的思想。換句話說,用戶的權限就是按照用戶標識從上述6個表中計算出來的所有權限數據。
文中在研究RBAC模式的基礎上,提出了擴充組功能的動態RBAC-G權限模型,并在國有煤礦的ERP系統中實現了對統一資源的訪問控制,優點是:
1)用戶組從用戶一側強化了基于角色的權限分配機制,便于對多個用戶同時授權;
2)權限組從權限一側強化了基于角色的權限分配機制,便于將多個權限同時指派;
3)權限關聯計算用動態權限代替了權限列表,適應了權限靈活多變的要求。
隨著系統的日益龐大,為了方便管理,可引入角色組對角色進行分類管理,與用戶組不同的是角色組不參與授權。這個思想只是本文的一個構想,并未進行實踐。
[1]王成良,姜黎.B/S應用系統中的細粒度權限管理模型[J].計算機系統應用,2010,19(07):79-82.WANG Cheng-liang,JIANG Li. Fine-grained privilege management model and its application in B/S application system[J].Computer Systerms&Applications,2010,19(7):79-82.
[2]董樂紅,耿國華,周明全.一種基于ASP技術的Web MIS權限控制系統的設計[J].計算機工程,2003,29(10):127-128.DONG Le-hong,GENG Guo-hua,ZHOU Ming-quan.Design of web MIS authority control system based on ASP[J].Computer Engineering,2003,29(10):127-129.
[3]Gail J A,Shin M E.Role-based authorization constraints specification using object constraint language[C]//Tenth IEEE International Workshops on Enabling Technologies:Infrastructure for Collaborative Enterprises,2001:157-157.
[4]Ravi S S,Edward J C,Hal L F,et al.Role-based access control models[J].IEEE Computer,1996,29(2):38-47.
[5]ZHANG Long-hua,Gail J A,Bei T C.A rule-based framework for role-based delegation[C]//Proceedings of the 6th ACM Symposium on Access Control Models and Technologies(SACMAT 2001),2001:153-162
[6]周俊.大型信息系統用戶權限管理的探討與實現[J].計算機應用研究,2004,21(12):143-146.ZHOUJun.Discussion and realization of user power management in large information system[J].Application Research of Computers,2004,21(12):143-146.
[7]劉佳,劉洪冰.RBAC訪問控制模型的會話優先級擴展[J].計算機應用與軟件,2008,25(10):30-37.LIU Jia,LIU Hong-bing.Session priority extension for rolebased access control model[J].Computer Applications and Software,2008,25(10):30-37.
[8]Wampler B E.Java與UML面向對象程序設計[M].王海鵬,譯.北京:人民郵電出版社,2002.