李韜

摘 要:在信息化建設的步伐越來越快的環境下,基于RBAC模型的權限優勢也非常明顯,本文將對基于RBAC的權限管理軟件的設計與開發進行分析研究。
關鍵詞:RBAC;權限管理軟件;設計與開發
當前最為廣泛接受和使用最廣泛的權限模型是基于角色的訪問控制RBAC(Role—Base Access Control)設計模型,是20世紀90年代初,由美國NIST(National Institute of Standards and Technology)提出的一種新的訪問控制技術,其核心點就是將訪問權限與角色相聯系。采用ASP.NET、ADO.NET等技術平臺為開發環境,開發設計了權限管理軟件,滿足企業信息系統減少授權管理復雜性,目的是對管理開銷達到降低,強化權限控制靈活性的需求。以實現只有經過授權的用戶才可以正常合法的使用已授權的功能,對應未經過授權的非法用戶禁止進入系統。
1 軟件的系統設計
RBAC有用戶(User),角色(Role)和權限(Popedom)三個實體。用戶是對數據對象進行操作的主體, 是發出訪問、存取操作的發動者的集合,可以是人、機器人和計算機等。他們是對功能模塊中的數據對象進行操作的主體,以U{u1,u2,u3,……,un}表示用戶集。角色的概念源于實際工作中的職務,是指同一類用戶所擁有的權限集合,由管理員根據用戶不同身份需要進行定義,以R(r1,r2,r3,……,rn)表示用戶集。權限是對特定功能模塊所擁有的某一數據對象可操作的權利,以P(p1,p2,p3,……,pn)表示權限集合。用戶和特定的某一個或者是多個角色相聯系,角色和一個或者是多個訪問許可權相聯系,并能夠依據實際的工作需要生成或者是取消,而用戶能按照自己的需要動態地激活自己擁有的角色,避免了用戶無意中危害系統安全。假如某個用戶擁有角色M的同時還擁有N的角色,也就是雙重角色,或者更多重角色,在默認的狀態下,系統會為該用戶分配角色M和角色N擁有的所有權限,它的權限為兩個角色的權限的合集。所以在為用戶分配權限之前應該首先創建角色,通過角色為用戶授權。
首先,在為角色授權過程中,角色的根本就是一組對資源進行操作的權限的集合。在一個系統或企業里用戶的人數很多,但企業中人員的角色數總是為數不多的有限個,所以首先采取角色的定義與授權,企業里的人員在按照自己的身份選擇相應的角色,這是采取權限分配的一種廣泛使用的做好方法。對此,在本系統的權限管理模塊采用的是基于角色的權限管理,先采取角色的定義與權限分配,再進行用戶的授權。由于本系統對傳統的基于角色的權限模型進行了擴充,使其既能對角色進行授權,也能單獨對用戶進行個別授權,同時不同角色的權限有可能發生沖突,因此還要設置角色的優先級,在角色權限沖突時不至于產生二義性。關于角色的優先級與有關約定說明:假設一個用戶只屬于一個角色,那么他的權限就是他所擁有的角色的權限。假設用戶屬于多個角色,在角色權限不沖突的情況下,他的權限就是這些角色權限的并集;假設不同角色所擁有的權限發生沖突,則需要根據角色的優先級確定用戶的最終權限。權限的確定原則是發生沖突的權限以優先級高的角色所擁有的權限為準,與之沖突的低優先級的角色的權限作廢。其次為用戶授權過程中,假設需要一個臨時用戶對系統給予操作,但是他的身份與目前的角色不相匹配,對此,解決的辦法:第一是可以增加新的角色,為角色分配該臨時用戶所需要的權限,等價于創建一個虛擬的角色。第二用戶不接受虛擬角色的概念,可以為用戶單獨設置權限。最后是對權限的認證。在對權限的認證的認證過程中,實際上就是對權限的確認。當某一個用戶對系統資源進行操作時,要首先進行認證,也就是判斷用戶是否擁有對資源進行操作的權限,然后根據判斷的結果確定是否允許用戶進行操作。首先要做的就是對系統資源和相應操作進行定義,對某種系統資源的某種操作實際上就對應了一條權限,系統的權限就是由這樣一條一條的權限所組成的,并保存在數據庫中。所以基于RBAC的模型結構如圖1,
假設一個用戶的崗位或職位變了,用戶只需要把當前的角色去掉,加入代表新崗位或新職位的角色就可以實現新角色的加入。角色和權限的關系變化相對變化少,所以基于RBAC的權限管理軟件在系統的管理上就會對管理員的工作量減小。
2 軟件體系架構的設計
在軟件體系架構設計中,開始讓系統的域驗證,目的是確保用戶的合法性。然后在域驗證通過后從數據庫中讀取該用戶具備哪種角色,最后是依據用戶的角色來確保該用戶可以訪問的頁面,并將這些頁面生成菜單,以此實現權限管理的目的。具體軟件體系架構是由表示層,業務邏輯層,數據訪問層,實體層共同組成。表示層是系統的展示部分,主要作用就是負責用戶和整個系統的交互。表示層與系統的業務邏輯是不相關的,只是包含頁面上控件的邏輯代碼,和界面上的元素相關聯而已。業務邏輯層在系統架構中是整個系統的核心部位。在權限管理軟件下業務邏輯層的相關設計,包含了頁面、角色與菜單處理的業務邏輯,可以說與這個系統的業務邏輯相關。假設涉及到數據庫的訪問,那么就需要調用數據訪問層。對于數據訪問層,該層主要實現的功能就是負責數據庫操作。數據訪問層中基本上采用了“面向接口編程”,該層包含了DAL接口、Oracle Dal、DAL工廠、SqlServer Dal和Model層。而且抽象出來的IDAL模塊已經擺脫了與具體數據庫的依賴,最大的優點就是使整個數據訪問層更加有利于數據庫遷移。只需添加一個相應數據庫版本的DAL并且實現IDAL接口即可連接到各種數據庫。業務邏輯層和表現層不需要任何的改動,從而提高了代碼的復用率。實體層主要把數據庫中定義的表映射成程序能夠訪問的業務實體,同時只定義實體的屬性,并無實體的行為。該層由數據訪問層產生,并且貫串了業務管理層與表示層。權限管理系統包括的實體有:用戶類、頁面類與角色類等方面。
3 系統功能設計
權限管理軟件有四個主要模塊,包括:用戶管理、頁面管理、角色管理與菜單管理。根據后臺的功能模塊,共劃分除了十二個對象,對這些對象分別設置了增、刪、改和查(CRUD)四種權限,對角色的共劃分也比較詳細,包括系統管理員、普通員工、信息發布員、安全信息員與一般使用員等多類型的角色,它們分別對這些不同的模塊有不同的權限。在新添加一個用戶時只需要對他分配不同的角色即可。而且在角色定義后,就可以對角色采取授權工作,可以根據企業實際為每一個角色分配不同的權限,在本系統的實現過程下對系統資源的權限劃分為增刪改查,使用這些功能,就可以實現對角色管理,可以添加、刪除角色,添加角色。
4 軟件的開發實現
用戶登錄時調用權限管理系統的用戶鑒別服務,在權限管理系統下利用了C#中DLLImport直接調用Windows已經存在的域驗證功能。DllImport所在的名字空間是 using System.Runtime.InteropServices。開始是利用域驗證來保證登錄用戶的合法性。假設驗證成功,調用權限計算服務,并返回權限關系表,以HashTable的方式存放到登錄用戶的全局Session中。假設沒有全局的Session或者過期,那么被導向到登錄頁面,重新獲取權限。這樣的好處就是方便用戶,可以避免用戶記住多個用戶名與密碼,從而保證了系統的安全性。
5 結束語
在信息化建設的步伐越來越快的環境下,基于RBAC模型的權限優勢也非常明顯,具有權限分配直觀、理解容易,使用方便,操作簡單,響應速度快,同時支持崗位、權限多變化的需求,滿足了用戶的需求。在B/S架構的系統的投用更廣泛的條件下,基于RBAC的權限管理軟件的應用范圍將變得更加的廣闊。
參考文獻
[1] 陳小磊,周軍,杜欽波,張娟,段先斐. 測井數據庫統一認證及權限管理系統設計與開發[J]. 微型電腦應用. 2014(06)
[2] 姚從海. 基于領域驅動的熱機計算數據管理系統的分析與實現[D]. 武漢理工大學 2014
[3] 信科,楊峰,楊光旭,馬媛媛. 基于RBAC權限管理系統的優化設計與實現[J]. 計算機技術與發展. 2011(07)