?

基于改進的RBAC模型的系統用戶權限控制研究

2014-10-14 09:28宋萬里吳煒峰
計算機與現代化 2014年9期
關鍵詞:菜單約束對象

宋萬里,吳煒峰

(1.南京交通職業技術學院電子信息工程學院,江蘇 南京 211188;2.河海大學計算機與信息學院,江蘇 南京 210098)

0 引言

訪問控制是實現信息系統安全訪問和操作的重要手段,基于角色的訪問控制(Role Based Access Control,RBAC)[1-3]在信息系統中比較成熟且應用廣泛。隨著社會對知識產權和創新意識的增強,信息系統的安全保障得到更多關注,對系統數據訪問和業務操作的安全性也有了更高的要求。因此研究人員不斷對RBAC模型進行改進,以期能夠實現更好的效果。改進方式主要分為3種:

1)針對模型中的操作對象改進。文獻[4]提出了一種基于數據對象的權限控制訪問方式,通過角色分離來劃分用戶對多個數據對象所具有的不同的功能權限。文獻[5]提出了一種數據限定的RBAC權限管理模型,采取一種類似SQL數據限定方法,使得數據對象和權限對象相分離。文獻[6]提出一種基于部門和角色的訪問控制模型,將角色和部門進行關聯,對訪問對象的數據范圍進行精確控制。

2)針對模型中角色配置改進。文獻[7]通過將層次化RBAC模型中角色之間的繼承關系轉移到權限中,對角色更改操作進行簡化。文獻[8]擴展了RBAC中角色的概念,提供角色屬性定義和基于屬性策略的驗證方式。文獻[9]通過引入組織結構和用戶組的概念,擴展了資源類型和資源授權形式,改進了RBAC模型,在一定程度上簡化了權限管理,提高了系統安全性。

3)針對模型中用戶操作改進。文獻[10]提出了用戶界面與操作權限的關聯模型,根據用戶權限自動完成操作界面的配置。

雖然這些研究不斷改進RBAC的不足,但由于應用的復雜性及管理要求的不斷變更,對權限管理的要求也是復雜且多變的,以上方法并不能很好地解決復雜多變的權限分配管理需求。主要表現在:

1)對操作對象的約束,往往造成權限管理與系統數據庫結構和數據關聯度太高,大大增加了其耦合性,同時也可能引入像SQL注入等額外風險。

2)對角色配置的改進,僅僅把權限進行簡單組合以及進行資源的范圍劃分,并沒有實質性的改變權限的設置內容,權限的粒度也沒能充分的細化,也沒能動態地配置操作界面,缺少靈活性。

3)對用戶操作的約束,僅僅依靠訪問頁面進行控制,如果人為構建URL而對數據進行操作,就會造成越權使用,實現方式不夠嚴謹。

本文在RBAC模型的基礎上,針對以上改進的不足,把RBAC模型中的操作對象、用戶角色以及用戶操作看作一個有機的整體,而不是把他們割裂開來看待,提出一種改進策略,實現對象權限的細粒度控制,根據不同的角色自動配置不同功能的菜單界面,同時對操作權限進行驗證控制。本文給出了擴展模型MR-RBAC模型(Menu and Restriction-RBAC模型)的形式化定義,并在此基礎上給出一種通用系統權限管理模型的實現方案。

1 MR-RBAC模型

1.1 模型描述

本模型是在RBAC模型基礎上對RBAC中角色進行了擴展,在其中增加了菜單配置項,實現系統操作權限的動態分配;使用Java語言的反射機制,對操作和數據動態約束,實現權限管理與系統數據解耦合。通過以上擴展改進,用戶被授予功能權限后,操作的管理需求和數據發生變化時,管理人員可以在權限分配操作中直接調整約束策略,而不需要對程序代碼重新調整,以提高系統運行時設置權限的靈活性。模型具體描述如圖1所示。

圖1 MR-RBAC模型

1.2 模型的相關集合概念定義

Users:用戶集,訪問系統進行操作的主體集合。

Roles:角色集,訪問系統進行操作的權力集合。

Sessions:會話集,訪問系統進行操作時當前用戶與角色的映射集合。

Menus:菜單集,用戶訪問系統操作的個性化入口集合。

Objects:對象集,系統的數據和資源的集合。

Operations:操作集,用戶可使用的功能集合。

Op Restrictions:操作約束集,對操作的限制條件集合,比如地址限制或時間限制等。

Ob Restrictions:對象約束集,操作對象的限制級別等操作條件集合,比如密級區分等。

UR:表示Users和Roles多對多的分配關系。

US:表示Users和Sessions的一對多映射關系。

RO:表示Roles和Operations多對多的分配關系。

SR:表示Sessions和Roles一對多映射的關系。

MR:表示Menus和Roles多對對的分配關系。

OO:表示Operations和Objects多對多的分配關系。

OPOR:表示Op Restrictions和Operations多對多的分配關系。

OBOR:表示Ob Restrictions和Objects多對多的分配關系。

1.3 模型實現原理

菜單配置是對用戶在系統中能夠使用的操作的配置,首先通過配置角色與菜單的映射關系,實現權限與菜單的動態綁定,再通過配置用戶與角色的映射關系,實現用戶與權限的動態綁定,進而實現用戶與菜單的綁定,用戶只能訪問其被指定的菜單,既可使用被分配的操作,也實現了用戶與其被分配的操作的綁定。為了避免人為構建URL而對數據進行越權操作,需用約束策略來進一步限制。這里的約束策略包括對用戶操作的限制以及對操作數據的審查。對用戶操作的限制,比如刪除操作發出的IP地址進行限制,通過在數據庫中設置約束的操作名稱(比如delete),對應的IP驗證函數以及IP的取值范圍,即可實現對刪除操作的IP約束。本模型實現中包含了常用約束的函數實現,比如操作發出的IP地址、操作發出時間等,當然開發者也可對接口進行擴展添加個性化的約束驗證函數。對數據的約束限制,原理同對操作的限制,這里不再贅述。通過配置角色與約束的映射關系,實現用戶與約束的動態綁定。當執行某項操作時驗證有沒有操作授權,當操作到數據對象時進一步通過數據約束,驗證用戶是否擁有對數據的操作權限。這樣就通過菜單配置和約束策略實現了菜單、操作以及數據的三層權限驗證機制,確保對用戶操作的全方位限制,對數據能夠精確到一條記錄的細粒度約束設置,保障了系統的安全性。

2 模型設計與實現

2.1 數據庫模型設計

基于MR-RBAC模型的思想,在分析各模塊的功能需求的基礎上,給出通用權限訪問控制系統的數據庫模型設計,如圖2所示。圖2中僅給出了模型有關的各表的主要屬性字段。

數據庫模型中主要表格說明如下:

1)limit表:權限表,主要記錄權限所對應的操作權限,與操作配置表有關聯關系。

2)operationConfig表:操作配置表,主要記錄各種操作事項,用于操作的配置,與operation表和object表有關聯關系。

3)restriction表:約束表,主要記錄約束信息,包括約束對象、約束參數、約束類型和約束值等,與restrictionType表有關聯關系。

4)menuConfig表:菜單配置表,主要記錄菜單集合,包括菜單的級別、內容信息等,與menu表有關聯關系。

5)role表:角色表,記錄整個角色的配置信息,包括權限、菜單、約束等,與user表、limit表、menuConfig表以及restriction表有關聯關系,是整個系統的核心表。

系統通過以上數據庫模型中各表間的關聯關系,根據登錄用戶的權限,包括角色和約束以及可操作的菜單,執行被授權的操作,達到訪問控制的目的。

圖2 通用權限訪問控制系統的數據庫模型

2.2 主要功能的設計

本系統實現的主要功能包括菜單配置、約束設置、角色創建、權限驗證,并將這些功能進行有機組織,來實現對用戶的訪問控制。

圖3 菜單配置流程圖

2.2.1 菜單配置

菜單配置流程如圖3所示。首先從數據庫中獲取系統的所有菜單(管理員可以自己添加,這里默認為已創建),對菜單按照菜單級別排序,根據菜單表的parentId字段所設置的主從關系對菜單進行配置,使用時構建樹狀結構。在系統配置時,將菜單配置信息與角色對應,將菜單配置數據與角色ID持久化寫入權限配置信息表中,即完成個性化操作界面的配置工作。

2.2.2 約束設置

約束分為操作和對象約束以及對操作和對象的約束。設置操作和對象約束,首先獲取系統中用戶操作和操作對象,按照模型中的要求分別存放到operation表和object表中,相應信息在系統運行時實時從數據庫中提取出來構成權限配置頁面,提交時自動組合成為“operation”+“object”的字符串,作為整體提交給配置信息管理Action,保存到數據庫,驗證時加載到內存中作為字符串匹配使用。設置對操作和對象的約束,這里以設置對操作的約束為例。首先選擇一個角色,將其中所有的操作都列出來,選取一個操作(操作將最終設定到restriction表中的restrictionDomain字段),對其設置約束,比如操作的IP地址約束(將在restriction表中的domainVars中寫入“IP”),可以設定等值約束或在一定范圍(所填數值將寫入restriction表中的restrictionRange字段,所選的等值或范圍會以“equal”或“min”、“max”寫入到 rangeVars中)。最后由于是對操作的約束設置,會在提交時將對應restrictionType表中restrictTypeId字段對應的值寫入到restriction表中。對操作設置約束的流程如圖4所示。

圖4 對操作約束設置流程圖

2.2.3 角色創建

作為驗證系統運行的基礎和必備的功能,角色創建和設置在本模型中是一個實時的處理過程。首先根據用戶在角色配置頁面中所選取的對應各操作對象的操作權限,以及角色對應的菜單項,在此基礎上在對角色中的操作和對象進一步進行細粒度的約束設置,分別生成相應的約束信息,使用相應的參數字符串填充角色對象,最后實現數據的持久化,把角色信息數據寫入角色表,以備需要創建相應用戶時進行關聯操作,在登錄時加載驗證使用。

2.2.4 權限驗證

權限驗證是驗證系統的核心模塊,是用戶訪問權限的控制中樞。為了避免操作的混亂,模型設定有多個角色的用戶只能使用一個角色進入系統,同時為了保持用戶操作的方便性,提供了方便的用戶角色切換功能。首先獲取用戶信息,若為空,進入登錄頁面,登錄時從角色表中獲取與用戶匹配的操作菜單項,動態生成用戶的使用界面。登錄后進行操作時獲取用戶的操作信息并進行加載、截取等預處理,判斷是否在白名單中,若在白名單中則直接執行相關操作,否則驗證用戶是否擁有操作以及操作對象的權限,同時有沒有對操作和操作對象的條件約束信息,如果擁有權限并且沒有相關的約束條件,則執行相應操作,否則提示無權限并返回。權限驗證流程如圖5所示。

圖5 權限驗證流程圖

2.3 模塊實現

基于以上設計思想,系統以Java EE平臺為基礎,采用MVC系統架構,以Oracle11g作為數據庫,實現了MR-RBAC模型的權限訪問控制和系統功能。系統采用Struts2框架作為控制層,模型層利用Hibernate框架的ORM技術實現對Oracle數據庫的對象化訪問操作,結合Java Bean實現業務邏輯;運用JSP結合Jquery中的Ajax技術進行菜單顯示等用戶訪問界面,作為系統的視圖層;最后為了降低代碼的耦合性,使用Spring框架整合集成各功能模塊。菜單設置功能首先從menu表中獲取的所有頂層菜單,循環遞歸調用構造子樹的方法,設置層次編號,按照主從層次構造菜單數,傳遞給菜單配置頁面,主要代碼如下。

依照2.2.2節的設計實現約束設置,這里不在累述,下面主要介紹約束函數的實現。獲取角色中的約束,以IP范圍約束為例,獲得IP的上限和下限,就是用IP范圍約束函數進行比對。由于IP地址是字符串,不好直接比較大小,需先獲取IP所對應的32位值,之后就可以比較發出操作的IP地址(登錄的IP地址)是否在所約束的區間中。獲取IP地址32位值的主要代碼如下:

權限驗證使用過濾器實現,首先獲取操作信息,如果是管理員或在白名單中,則繼續;否則,將操作和用戶的權限進行比對,如果在用戶的操作范圍內還要比對操作約束和對象約束,成功則繼續,失敗則跳轉到錯誤頁面。權限和約束比對的主要代碼如下:

3 模型應用

將上述通用權限訪問控制系統應用于學院共青團工作管理信息系統以及Java EE框架技術網絡課程系統的開發中,通過在角色中添加菜單項,獲得了系統中用戶能夠使用的操作入口,實現系統操作權限的動態分配;添加對操作和對象的約束策略進一步保障系統安全,使用反射機制,在細化操作訪問粒度的同時,實現權限管理與系統數據解耦和,最終實現了無侵入的系統整合。在系統中引入本控制模型后,當操作的管理需求和數據發生變化時,管理人員可以在權限分配中調整約束策略,而不需要對程序代碼重新開發,提高了系統運行時設置權限的靈活性,提高了信息系統的開發效率。圖6~圖8分別為菜單表、角色配置表以及約束信息表的部分數據截圖,圖9、圖10分別為動態生成的管理員和團員登錄后的不同菜單操作界面和動態生成的系統權限配置頁面。

圖6 菜單表信息截圖

圖7 角色表配置信息截圖

圖8 約束表信息截圖

圖9 動態生成的不同用戶登錄后的菜單界面

圖10 動態生成的系統權限配置頁面

4 結束語

本文在對RBAC進行分析的基礎上提出了一個擴展模型——MR-RBAC模型,給出了設計實現,并將其應用于具體信息系統項目開發中。本模型的改進策略,把操作對象、用戶角色以及用戶操作看作一個有機的整體,而不是把它們割裂開來,實現對象權限的細粒度控制,根據不同的角色自動配置不同功能的菜單界面,同時對操作權限進行驗證控制。與傳統模型相比,擴展后的模型通過添加約束策略細化了操作訪問粒度,通過添加菜單項對模型角色配置進行了擴展,實現了用戶權限與操作界面的映射,兼顧了訪問控制的靈活性和安全性。本模型在具體實踐中被證明有效,并提高了信息系統的開發效率。

[1]Ferraiolo D F,Kuhn R.Role-based access controls[C]//Proceedings of the 15th National Computer Security Conference.1992:554-563.

[2]Sandhu R,Coyne E J.Role based access control models[J].IEEE Computer,1996,29(2):38-47.

[3]Ferraiolo D F,Sandhu R,Gavrila S,et al.Proposed NIST standard for role-based access control[J].ACM Transactions on Information and System Security,2001,4(3):224-274.

[4]趙靜,楊蕊,姜灤生.基于數據對象的RBAC權限訪問控制模型[J].計算機工程與設計,2010,31(15):3353-3355.

[5]范收平,高艷.基于三員分離及數據限定的RBAC權限管理模型[J].計算機應用,2011,31(S2):112-115.

[6]嚴駿,蘇正煉,凌海風,等.MIS中基于部門和角色的細粒度訪問控制模型[J].計算機應用,2011,31(2):523-526.

[7]宋利康,莊海軍,周儒榮.權限管理中間件的研究與實現[J].南京航空航天大學學報,2007,39(4):481-485.

[8]李唯冠,趙逢禹.帶屬性策略的RBAC權限訪問控制模型[J].小型微型計算機系統,2013,34(2):328-331.

[9]董永峰,陸軍,劉建波,等.改進的RBAC模型在信息服務平臺上的應用[J].計算機應用與軟件,2012,29(5):99-103.

[10]王永,王敏,李敏.管理信息系統中用戶個性化界面配置研究[J].科技管理研究,2012(17):220-224.

[11]朱昌平,沈媛,周浩.高校教學科研一體化團隊管理系統的開發[J].實驗室研究與探索,2012,31(7):193-197.

[12]薛朝改,曹海旺.企業信息系統自組織的系統模型研究[J].中國管理科學,2012(20):772-775.

[13]陳武,錢青,趙熊,等.清華大學智能座位管理系統的設計與實現[J].現代圖書情報技術,2013(10):90-95.

[14]徐娟,李鋒,寧延平,等.一種B/S結構的柔性編碼系統的設計與實現[J].山東農業大學學報(自然科學版),2013,44(3):438-442.

[15]胡俊,張熠,黃傳河.基于云平臺的政務信息系統的訪問控制設計[J].華中科技大學學報(自然科學版),2013,41(S2):147-151.

[16]魏穎.基于Maven的J2EE后臺管理系統代碼生成器[J].計算機與現代化,2014(2):46-50.

猜你喜歡
菜單約束對象
涉稅刑事訴訟中的舉證責任——以納稅人舉證責任為考察對象
“碳中和”約束下的路徑選擇
約束離散KP方程族的完全Virasoro對稱
中國新年菜單
攻略對象的心思好難猜
本月菜單
基于熵的快速掃描法的FNEA初始對象的生成方法
區間對象族的可鎮定性分析
適當放手能讓孩子更好地自我約束
一個“公海龜”的求偶菜單
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合