任偉++秦進
摘要:闡述了基于角色的權(quán)限管理模型(RBAC[1])在高等教育信息化平臺中的運用,提出了RBAC的權(quán)限管理的解決方案。將RBAC模型應用到系統(tǒng)中增強了系統(tǒng)的安全性。系統(tǒng)采用三層架構(gòu)[2],基于Java平臺實現(xiàn),項目中使用了S2SH[3]框架,RBAC模型的實現(xiàn)是基于Struts2的原有代碼的重寫,保證了技術(shù)上的可靠性,有效地解決了信息化平臺中的遇到的權(quán)限和安全問題。
關(guān)鍵詞:Java;S2SH;RBAC;訪問控制
中圖分類號:TP315 文獻標識碼:A 文章編號:1009-3044(2015)33-0008-03
Research and Implementation of Access Control Management Based on RBAC of Informational Platform
REN Wei1, QIN Jin2
(College of Computer Science and Technology, GuiZhou University, Guiyang 550025, China)
Abstract:The authors present some kinds of technology regarding as access control of management based on RBAC[1](role-based access control).In the advanced educational management system,we use RBAC to solve privilege problem,and the model-RBAC can enforce the security of the system.RBAC has realized the logic separation of the users and the access permission and reduced the complexity of the authorization management as well as the cost of the management.The model implemented by Java using S2SH framework[2].The entire system based on 3-tier architecture[2].
Key words:Java; S2SH; Access Control; RBAC
信息化建設已經(jīng)深入到社會的各個領域,在高校的信息化建設浪潮中,信息化平臺具有舉足輕重的地位。特別隨著技術(shù)的發(fā)展,教育信息化問題迫在眉睫。隨著各個高校信息化水平的提高,各個學校紛紛依托自身的資源,將學校的優(yōu)勢學科的教學資源放到自己的信息化平臺上,供學生和教師觀看 。這一種模式雖然能實現(xiàn)一定的資源共享的目的,但是也僅僅是自己校園內(nèi)的資源共享,并沒有實現(xiàn)一個省的高校教育資源的共享。因此,我們希望能夠構(gòu)建一個全省高校都可以實現(xiàn)資源共享的信息化平臺。高等教育信息化平臺能夠整合各個高校的優(yōu)勢教學資源,實現(xiàn)優(yōu)勢教學資源的共享,使得廣大學生和老師能夠快速得到各個學校的優(yōu)勢教學資源。不論是學生還是老師都能夠得到雙贏。在學生層面來看,能夠獲取其他高校的優(yōu)勢學科教學資源能夠提前預習,同時也能夠更好的理解自己的學科,提升自己的視野和對所學知識的理解。在教師層面,教師能夠看到其他學校的教學資源通過觀摩同行如何傳授知識,能夠做到提升自己的教學水平。在學校層面來說,實現(xiàn)各個高校的優(yōu)勢教學資源共享有助于提升學生的水平,也有助于提升學校的整體教學水平,提升學校的科研能力。有助于打破原有的各個學校資源的鼓勵情況,形成整個高校的優(yōu)勢教學資源在各高校之間的流通的良好局面。
1 項目概述
高等教育信息化平臺建設的目標是為了建立一個集應用、培訓、體驗和教學服務為目的的公共服務平臺,提供從校務管理、教學管理、科研管理和學習管理等各類服務。我們的用戶不僅面向廣大學生,教師,各個學校的管理人員,系統(tǒng)本身的維護人員。因此,一個合理而且完善的權(quán)限管理已經(jīng)成為系統(tǒng)不可或缺的一部分。
1.1 平臺構(gòu)建模式
通過對平臺的需求研究,高校信息化平臺以共享數(shù)據(jù)為中學和業(yè)數(shù)據(jù)交換相結(jié)合的系統(tǒng)建設模式。因為高校信息化平臺建設的最根本原則就是各個高校實現(xiàn)優(yōu)勢教學資源的共享,方便省內(nèi)的各大高校的學生、老師和管理人員。在教學過程中會產(chǎn)生大量的視頻、文本、音頻資料,平臺如何集成這些數(shù)據(jù)的交換是一個值得研究的問題,考慮到集成現(xiàn)有的平臺和平臺后期的可擴張性?;谝陨系脑蛭覀冞x擇共享數(shù)據(jù)和數(shù)據(jù)交換相結(jié)合的方式來構(gòu)建我們的平臺。
1.2 資源建設及應用
平臺的資源來源于各個高校的日常教學資源,主要依賴各大高校的有價值的教學資源的填充,包括圖書電子資源、教學視頻,文本,科研資源以及相關(guān)的基礎數(shù)據(jù)等。我們將這些電子化的資源數(shù)據(jù)分門別類的上傳到高校信息化平臺,供廣大的師生學習和觀看。
2 訪問控制技術(shù)
訪問控制技術(shù)[4]:防止對任何資源進行未授權(quán)的訪問,從而使計算機系統(tǒng)在合法的范圍內(nèi)使用。簡單來說,訪問控制技術(shù)是為了防止用戶訪問到未授權(quán)限的資源,其目的是為了用戶僅能夠訪問用戶已有權(quán)限的資源。訪問控制權(quán)限策略常用的有如下三種,即:強制訪問控制(MAC) 、 自主訪問控制(DAC) 、 基于角色的訪問控制(RBAC)。強制訪問控制是系統(tǒng)強制用戶按照規(guī)定的規(guī)則控制用戶權(quán)限及操作對象的訪問,對于專用型系統(tǒng)比較有效。自主訪問控制將用戶和角色僅僅綁在一起,當用戶的調(diào)離原來的崗位是,又需要重新分配資源,太過復雜?;诮巧臋?quán)限管理可以有效地克服上述問題,在設計時將權(quán)限與角色直接關(guān)聯(lián),在權(quán)限中關(guān)聯(lián)用戶可以訪問的資源,再將用戶和角色關(guān)聯(lián)。用戶需要增加新的權(quán)限只需要關(guān)聯(lián)不同的角色,就可以輕松實現(xiàn)解決用戶新增權(quán)限的問題,同樣角色也可以重新關(guān)聯(lián)不同的訪問資源。
3 基于角色的權(quán)限管理模型和實現(xiàn)
3.1 平臺技術(shù)架構(gòu)
高等教育信息化平臺選擇Java平臺實現(xiàn),整體架構(gòu)三層架構(gòu)來實現(xiàn)平臺的整體功能。三層架構(gòu)分為:數(shù)據(jù)展示層,業(yè)務邏輯層和數(shù)據(jù)庫訪問層。每一層都控制這系統(tǒng)的不同功能,能夠分層開發(fā),提高開發(fā)效率。三層架構(gòu)體現(xiàn)了不同層之間的高內(nèi)聚低耦合[5]。三層架構(gòu)圖如圖1所示。
三層架構(gòu)的本身是獨立于任何編程語言和編程平臺而抽象出來的一個企業(yè)級應用開發(fā)模式,三層架構(gòu)在不同的平臺之中,有著不同的框架的選擇來組合完成三層架構(gòu)。由于Java秉持這開源的特性,因此不同的廠商、企業(yè)和開源組織會根據(jù)自己的經(jīng)驗的需求開發(fā)出不同的框架來提高Java在企業(yè)級應用開發(fā)的效率。目前從產(chǎn)業(yè)界來看選擇S2SH(Spring、Hibernate和Struts2)的組合方式來開發(fā)Java企業(yè)應用是一種非常高效的開發(fā)選擇。使用S2SH框架來實現(xiàn)三層架構(gòu)和抽象的三層架構(gòu)會有一點不同,S2SH框架如圖2所示。
3.2 RBAC在平臺中的模型
在基于角色的訪問控制被提出之后,工程人員在這個模型的基礎上來實現(xiàn)自己的權(quán)限控制,將理論真正的應用到產(chǎn)業(yè)界,來解決實際項目中遇到的問題。在高等教育信息化平臺中使用的RBAC權(quán)限管理簡易模型結(jié)構(gòu)如圖3所示:
在基于角色的權(quán)限管理模型中,包含了用戶(User),角色(Role)和權(quán)限(Privilege)。角色是指用戶在系統(tǒng)中所具有的職責和職權(quán),在系統(tǒng)中每一個用戶都有著自己的職責和能夠訪問系統(tǒng)中不同資源、功能的能力,需要注意的是應該與現(xiàn)實中的某一個部門的領導者所具有的職責分開理解,在系統(tǒng)中就算你不是一個部門的實際領導者,管理員也可以為你分配相應的角色,即為和你的實際工作中的職位具有無關(guān)性。權(quán)限表示整個系統(tǒng)中用戶可以具有的功能,系統(tǒng)內(nèi)部對于操作是否允許。例如你具有添加資源的權(quán)限,那么你就可以為系統(tǒng)添加資源,同時對于沒有添加資源權(quán)限的用戶,應絕對禁止該用戶添加,在該用戶的操作界面上都不應該出現(xiàn)添加資源的菜單。用戶就是系統(tǒng)的管理者和系統(tǒng)的使用者,是自然世界真實存在的人。會話(Session)是一個系統(tǒng)用戶同多個角色的映射,當用戶激活了相應的角色時會建立會話。用戶的權(quán)限就是用戶的所有角色的權(quán)限的合集。一個功能是否能被某用戶使用,是判斷用戶權(quán)限中是否有這個功能的使用許可。
3.3 權(quán)限管理功能
整個高校信息平臺的權(quán)限控制模塊分為用戶模塊管理,角色模塊管理,權(quán)限資源模塊的管理。用戶模塊管理主要包括用戶登錄,新增用戶,更改用戶信息,關(guān)聯(lián)角色。角色模塊主要包括新增角色,角色列表,刪除角色和更改角色權(quán)限資源。權(quán)限資源管理模塊主要包括資源列表,新增資源,修改資源,刪除資源。權(quán)限管理模塊功能圖如圖4所示。
高等教育信息化平臺是面向各個高校師生,用戶的角色按照不同用戶的分工不同,主要劃分為五個角色:超級管理員,管理員,教師,學生,普通游客。管理員主要是各個高校的負責人,主要負責資源的統(tǒng)籌和信息的溝通,教師是指各個高校的老師,學生是指在在讀的各個高校的學生,普通游客是指給在讀的高校學生。超級管理員保證系統(tǒng)的正常運行,數(shù)據(jù)安全和系統(tǒng)的日常維護。系統(tǒng)角色的權(quán)限分為兩類:一類是操作權(quán)限,一類是功能模塊權(quán)限 。 操作權(quán)限如管理表單的權(quán)限,文件操作的權(quán)限等;功能模塊權(quán)限,是指按模塊劃分的操作節(jié)點 。兩類權(quán)限同樣都可以進行擴充及維護,更加方便地進行新的控制和功能的增加。劃分權(quán)限分為三類:第一類,登錄功能未登錄時可以使用;第二類,不需要控制的功能只要登錄就可以使用,不需要進行控制例如:注銷、使用主頁等;第三類,要控制的功能需要登錄用戶,并且有相應的權(quán)限才可以使用。例如:刪除用戶、添加用戶、管理角色等。系統(tǒng)權(quán)限管理模塊的類圖如圖5所示:
權(quán)限就是控制功能的使用,功能對應著訪問路徑URL。因此對功能的控制就是對URL的訪問控制。在我們的程序中,一個功能對應一個URL。因此我們需要得到當前用戶請求的URL,接下來需要判斷當前用戶訪問的URL是否在他相應的權(quán)限表中,如果不在說明當前用戶不具有這個訪問這個功能的權(quán)限。
系統(tǒng)采用S2SH的開源框架實現(xiàn),MVC控制器使用Struts2框架,頁面采用JSP實現(xiàn)。在頁面現(xiàn)實中會根據(jù)當前登錄的用戶所具有的權(quán)限來顯示他的菜單功能。因此每次用戶登錄需要獲取他相應的權(quán)限來動態(tài)地顯示菜單。在Struts2的具體實現(xiàn)中,用戶的頂級菜單的現(xiàn)實和相應的下級菜單的現(xiàn)實,我們需要hasPrivilegeByName方法判斷用戶是否有指定名稱的權(quán)限。對于用戶在JSP頁面中使用的鏈接標簽使用Struts2中的標簽,為了嚴格的權(quán)限控制需要對標簽的功能重寫,使其加入權(quán)限判斷的功能,使用函數(shù)AnchorTag繼承于AbstractClosingTag可以實現(xiàn)對Struts2中的標簽功能的改寫,功能改寫確保用戶使用Struts2中超鏈接標簽也判斷了用戶權(quán)限的是否具有,確保不是產(chǎn)生,用戶可以訪問非授權(quán)的功能,確保系統(tǒng)權(quán)限的有效性和完整性。為了防止出現(xiàn)用戶登錄過后,在瀏覽器中強制請求URL的bug出現(xiàn)我們需要自定義我們自己的攔截器棧,同時也結(jié)局用戶未登錄系統(tǒng)無法訪問的bug,使用類CheckPrivilegeInterceptor實現(xiàn)自己的攔截器,該類中主要實現(xiàn)判斷用戶的每一次請求都被攔截到,得意判斷用戶是否具有當前資源的訪問權(quán)限,確保權(quán)限控制的有效性。
3.4 相關(guān)類和接口說明
User類表示用戶的相關(guān)信息,里面包括兩個重要的方法hasPrivilegeByName(String)和hasPrivilegeByUrl(String)。分別表示判斷用戶是否有制定的標簽名稱和判斷用戶是訪問當期URL的權(quán)限。 CheckPrivilegeInterceptor類實現(xiàn)對用戶所有的路徑請求,判斷用戶是否具有訪問資源的授權(quán)。類InitServletContextListener保證用戶每一次登錄等能夠那到他被分配到的權(quán)限資源,確保不顯示于授權(quán)的功能好菜單顯示出來。
4 結(jié)束語
本文通過對RBAC權(quán)限管理模型的基本原理的分析和基于S2SH框架在系統(tǒng)中實現(xiàn)了細粒度的權(quán)限管理。利用角色這個概念實現(xiàn)了用戶個權(quán)限之間的松耦合。
參考文獻:
[1] 喬穎, 須德. 一種基于角色訪問控制 (RBAC) 的新模型及其實現(xiàn)機制[J]. 計算機研究與發(fā)展, 2000, 37(1): 37-44.
[2] 王進. B/S 模式下的三層架構(gòu)模式[J]. 軟件導刊, 2011 (3): 30-31.
[3] LI S, PENG Z. S2SH: a Web Application Framework and Its Implemented Method[J]. Computer Technology and Development, 2009, 8: 033.
[4] Sandhu R S, Samarati P. Access control: principle and practice[J]. Communications Magazine, IEEE, 1994, 32(9): 40-48.
[5] 喬穎, 須德. 一種基于角色訪問控制 (RBAC) 的新模型及其實現(xiàn)機制[J]. 計算機研究與發(fā)展, 2000, 37(1): 37-44
[6] 王進. B/S 模式下的三層架構(gòu)模式[J]. 軟件導刊, 2011(3): 30-31.
[7] LI S, PENG Z. S2SH: a Web Application Framework and Its Implemented Method[J]. Computer Technology and Development, 2009, 8: 033.
[8] Sandhu R S, Samarati P. Access control: principle and practice[J]. Communications Magazine, IEEE, 1994, 32(9): 40-48.