彭 耘,張立平
(武漢鐵路職業技術學院,湖北 武漢 430205)
對于任何一個信息管理系統,權限管理模塊是必不可少的一部分,對于信息系統,其權限管理在功能上是相似的,并有幾個理論模型。每一個系統都重復開發權限管理模塊,勢必浪費大量的時間、人力和物力。因此實現一個方便、靈活、可擴展的通用權限管理系統將在很大程度上節約開發時間,降低人力、物力成本,對信息管理系統的設計和實現具有重要意義和應用價值。相對于傳統的訪問控制,RBAC模型引入了角色層。在RBAC中,權限授予角色,角色授予用戶,這種機制使得它有授權方式簡便高效、維護簡便等優點。特別地一點是,RBAC實現了人員與權限的分隔,簡化了各種環境下的權限管理,更重要的是可以用RBAC的思想設計一個通用的權限管理系統。RBAC模型的缺點是:其一,進行權限校驗時需要不斷的遍歷和遞歸,造成了性能的影響;其二,角色和角色、用戶和角色之間的關系比較復雜。本文通過對RBAC模型進行改進,設計了一種通用的權限管理模型,可以較好地解決這兩個問題。

圖1 通用權限管理模型
權限管理模型是權限管理的基礎。本文以RBAC96模型中的RBAC0模型為基本模型,對權限、角色、用戶和角色的關系做了改進,設計出一個通用的權限管理模型。如圖1所示:
權限模型為三個實體和兩個關系:用戶U、角色R、權限P;PR為權限P和角色R之間為多對多關系,UR為角色R和用戶U之間為一對多關系,會話sessions是用戶與激活的角色集合之間的映射,隱含在用戶集U中。權限和權限之間存在包容關系,如對某項資源的編輯權限包含查看權限,為了實現通用性,模型中設定權限p的元素之間是平行關系,權限之間包容關系由權限名來表示,由授權人員處理包容關系。權限依據功能模型劃分為組,以方便權限管理。角色R被定義為近似職位關系。這樣定義的好處在于因為職位的權限變動很少,在系統移交給用戶之前即可以完成定義,減少最終用戶使用的復雜度。權限管理包括PA、UA和RA。PA為角色權限分配,由開發人員配合最終用戶完成,UA為用戶角色分配,由最終用戶獨立完成,RA為角色用戶分配,配合用戶完成用戶角色分配。
1.系統功能設計。根據權限模型和需求分析,通用權限管理系統由一系列組件和模塊構成。組件提供給業務系統使用,包括認證組件、用戶組件、權限檢查組件和用戶菜單組件,模塊實現權限管理系統自身管理。其體系結構如圖2所示:①認證組件,包括用戶登錄和單點登錄。用戶登錄時輸入用戶名、密碼和驗證碼,驗證成功后,建立session,將用戶信息保存在session中,并記錄用戶登錄日志。用戶登錄三次失敗后鎖定系統5分鐘。單點登錄為URL單點登錄方式。首先雙方協商key,利用key進行校驗,校驗成功同樣建立session,將用戶信息保存在session中,并記錄用戶登錄日志。②用戶組件,提供用戶自助更改信息和密碼的功能。③權限檢查組件,將業務系統的頁面分為三種類型:非認證頁面、認證頁面、含特權頁面。將權限檢查組件插入后兩種頁面中,則無須編寫任何代碼完成權限檢查。④用戶菜單組件,根據用戶權限按最小特權原則生成菜單,不同角色的用戶菜單內容不同,包括橫向菜單和縱向菜單兩種類型。⑤授權管理模塊,包括PA、UA和RA。實現權限和角色多對多關系管理以及角色和用戶一對多關系管理。⑥菜單管理,維護業務功能權限和頁面之間的關系,以及菜單外觀是用戶菜單生成的依據。⑦權限分類管理、權限管理、用戶管理、角色管理、日志管理,實現權限分類、權限、用戶、角色、日志的查看、新增、修改和刪除等功能。
2.數據庫設計。依據系統的功能需求以及功能設計,設計數據庫模式如下:權限分類表(CategoryID,Description);權限表(PermissionID,Description,CategoryID);角色權限表(RoleID,PermissionID);角色表(RoleID,Description);用戶角色表(UserID,RoleID);用戶表(UserID,UserName,Password,DepartmentID); 日 志 表(OPTime,Url,OPInfo,User-Name,UserType,UserIP); 菜 單 表(NodeID,Text,ParentID,ParentPath,Location,OrderID,Url,PermissionID,ImageUrl)。

圖2 通用權限管理系統體系結構
權限管理系統采用B/S模式,使用ADO.NET技術實現與多種數據連接,架構上采用三層模式,即表示層、業務邏輯層和數據訪問層的實現。
1.數據層及緩存。數據層實現與數據庫交互、數據緩存和持久化,與業務邏輯層進行交互,實現與多種數據庫連接,ADO.NET對此提供了良好的支持,并且易于實現。數據庫操作對系統資源消耗很大,業務系統在運行時權限檢查操作十分頻繁,但是角色的權限變動不大,因此將角色權限表緩存應用服務器的內存中,而不是每次都去訪問數據庫。
2.表示層。表示層包含一系列組件和系統自身的管理界面。為了避免對業務系統產生較大的改動,系統提供了權限檢查用戶控件,使用時只需將控件拖入需要權限檢查的頁面中,并修改權限ID的值即可,不需要改動業務系統代碼。用戶只屬于一個角色,認證通過后,認證組件將用戶角色也保存在會話中,用戶權限檢查實際上是角色的權限檢查,在用戶需要時,角色類提供程序調用接口實現。
1.使用簡單。系統利用RBAC中用戶和訪問權限邏輯分離的特點,簡化了系統權限管理,同時簡化了RBAC中RR的關系和RU的關系,降低了權限管理和系統維護的復雜性,使最終用戶的學習時間和使用時間大大縮短,增加了系統授權的準確性,提高了系統的安全性。
2.通用性強。系統提供了多種數據庫環境下的實現,并實現管理員對業務系統的用戶、角色、權限信息的自定義功能,可以方便加入業務系統中實現重用,節省了大量的人力和物力。
3.集成簡單。通常情況下,業務系統只需調用權限檢查組件即可實現權限管理,甚至無需編寫代碼,復雜情況下,也可以調用用戶接口提供的方法,實現權限檢查,程序員無需關心權限模塊中的代碼就可以完成權限管理。
[1]沈海波,洪帆.訪問控制模型研究綜述[J].計算機應用研究,2005,(6):9-11.
[2]Ravi S.Sandhu,Edward J.Coyne,Hall.Feinstein,and Charles E.Role-Based Access Control Models[J].IEEE Computer,1996,29(2):38-47.
[3]丁仲,左春.用于RBAC權限管理的面向對象框架[J].計算機工程與應用,2005,(17):43-45.