湯文亮,李 科
(華東交通大學 軟件學院,江西 南昌330013)
傳統的業務審批已無紙化,不再由人充當作材料送審者,業務審批都由審批系統完成,這就要求審批系統足夠可靠和安全,能實現信息安全中最基本的CIA-(保密性(confidentiality)、完整性(integrity)、可用性(availability))特性[1]。
業務審批流程的控制,由審批系統核心模塊——權限管理負責實現,這就必須用到訪問控制技術[2]。許多學者也做了很多關于訪問控制技術的研究,其中基于角色的訪問控制RBAC-(role-based access control)就是一種極具代表性的訪問控制技術。文獻-[3,4]提出了一種RBAC96模型-(也稱RBAC 參考模型),分為4 種小模型:基本模型、角色分級模型、角色限制模型、統一模型,用戶不直接與權限關聯,通過角色來連接二者;文獻-[5,6]中指出RBAC96模型的短處,它是一種強制訪問控制,同時也是一個靜態概念,用戶、角色和權限的關系要事先強制設定,而且權限級數通常是單一級別;文獻-[7]提出了一種RBAC97模型,包括URA97、PRA97、RRA97這3部分,對ARBAC97模型的研究還在繼續中;文獻-[8]提出了一種DRBAC模型,是在動態結盟環境下的分布式RBAC 模型,擁有3個特性,能夠保證權限訪問的機密性,不足的是權限指派方式比較保守,不夠靈活。
目前,業務審批系統通常要求權限可多級、能動態管理,傳統的RBAC卻無法滿足,所以在現有的RBAC 模型基礎上,提出了一種新型的RBAC 模型-(new role-based access control,NRBAC)。本文做了相關的研究和詳細的闡述,并以-“集裝箱碼頭設備維護及工務調度管理系統-(簡稱DMM 系統)”為開發實例,利用Java主流的SSH 框架和JS腳本語言等相關技術,對NRBAC 模型做了具體的設計和實現,結果驗證了NRBAC 模型的可行,最后指出了對NRBAC模型下一步的研究工作。
JavaScript是一種由解釋器執行的面向對象的程序設計語言[9],也一種具有相對安全性的客戶端腳本語言。因此,目前許多Web系統都積極地使用JavaScript客戶端腳本語言,以遵循Web 2.0的趨勢,它可以使網頁頻繁重組、友好地與用戶交互[9]。
DMM 系統權限動態地創造、分配、撤銷和欄目的生成等就是依靠JavaScript技術實現的。
對一個Web系統而言,良好的系統架構可以加快系統整體的開發速度和保障系統的安全性,并且方便未來的拓展和后期維護工作。在這種情況下,針對Web開發的各種框架便應運而生了,SSH 框架 (struts2+sping+hibernate)就是其中之一[10]。如圖1所示,一般分為5層架構:表現層、業務邏輯層、數據訪問層、持久層和數據庫層[11]。

圖1 5層架構模型
表現層,主要負責與用戶進行交互的jsp或html頁面,通過調用業務邏輯層代碼實現判斷、顯示等操作,主要體現在Action層中,由Struts2框架實現。業務邏輯層和數據庫訪問層基本類似,但數據庫訪問層是通過Hibernate來完成數據操作的,而業務邏輯層中是通過調用數據訪問層來實現,在具體項目中,業務邏輯層也叫Service層。數據訪問層又稱DAO 層,在該層中包含了所有的操作數據的方法,如保存數據、刪除數據、修改數據和查詢數據,它包含3個組成部分,分別是DAO 接口、DAO 實現類和DAO工廠類。持久層主要包含2個部分,一個是Hibernate映射文件 (實體名.hbm.xml),一個是實體類。數據訪問層和持久層,都由hibernate框架負責。數據庫層用來接收數據訪問層提交的數據,也為數據訪問層提供數據反饋。但數據庫層一般由數據庫管理系統負責,與SSH 框架沒有直接聯系,只需在applicationContext.xml配置文件中配置所連接的數據庫參數即可。
Spring框架是近幾年非常流行的開源的輕量級框架,它的核心是控制反轉或依賴注入 (IoC)[12]。Spring框架實際上是整合struts2 框架和hibernate框架的黏合劑,利用spring的IoC可以明確地定義組件接口,方便開發者獨立地開發各個組件,然后根據組件間的依賴關系組裝運行,很好地把struts2和hibernate結合起來,而且spring的事務管理把hibernate對數據庫的操作進行了事物配置,即SSH框架利用spring容器統一管理數據源,極其方便地為DAO組件提供支持。
NRBAC模型是以RBAC96 模型為原型,融入ARBAC97模型的角色管理思想,并引入DRBAC 的前2 種特性,是對RBAC的思想整合和創新,并且對RBAC96模型的權限/許可權集 (PRMS)做了具體的細分和改進,以此引出 “欄目”的概念。
NRBAC模型首先將權限管理進行了操作上的分離,分解為3個步驟:①權限的創造;②權限的分配\撤銷;③權限的使用。如圖2所示 (實線表示具體操作,虛線表示數據關聯關系),重點放在了3個步驟的前兩個,這也是實現權限可多級、動態的理論基礎。
然后將操作和 “欄目”進行動態綁定 (通過某些技術,如JS技術等)形成權限,來提高角色訪問時的可靠性和安全性,防止各個角色間的權限混亂,使得用戶進行權限使用時能夠防止非法訪問現象的出現。
2.1.1 NRBAC模型的基本元素
如圖2所示,對該模型的基本元素定義如下:
U,R (AR,OR),P,S,UI:用戶集 (USERS),角色集 (ROLES),管 理 員 角 色 集 (AR),其 它 角 色 集(OR),權限集 (PRMS),會話 (SESSIONS),用戶信息(USER INFORMATION)。
{OPS,OBS,RS}εPRMS:權限操作 (OPS),被操作的對象 (OBS),由對象管理的資源 (RS),三者共同組成了權限集 (PRMS),其中被操作的對象 (OBS)和由對象管理的資源 (RS),共同組成了 “欄目”這個概念;
ROLES={r|(rεar)∪(rεor)}:管理員角色集 (AR)和其它角色集(OR)統一歸屬于角色集合,方便角色管理;
COMP:create operate manage permissions,由AR 負責對PRMS 的控制、操作、管理;
PA:permission assign,由AR 負責對OR 的權限 分配,也包括對自己本身權限的分配;
UA:user assign,由AR 負責對用戶分配角色;
U-UI:每一個用戶 (USER)都對應唯一的用戶信息
(USER INFORMATION);
SESSIONS:會話集,是用于初始化和創建多個集合間的映射;
U-S:用戶會話集,S>U,每一個會話s對應由AR 指派而成的用戶user(s)映射;
R-S:角色會話集,會話s到角色集合R-S {roles|(rolesε{PA|(PAεPRMS)})},用于初始化和創建角色和角色所持有的權限集;

圖2 NRBAC模型數據關系
P-S:權限會話集,S>P,每一個會話s對應相應的權限映射。
2.1.2 NRBAC模型的實體分析
NRBAC模型由4個實體組成,分別是用戶信息 (UI),用戶(U)、角色(R)、權限(P),其中權限(P)也是一個操作集(就是擁有一種或者某幾種操作\動作屬性的集合)。
用戶擁有唯一的與之對應的用戶信息,將用戶信息獨立出來,也是基于對用戶安全性和保密性的考慮,這正是提出UI的原因。在角色集中派生出AR,意味著廢除了角色繼承[3],防止權限被任意傳遞而影響系統的安全性,方便對項目的管理,也是權限創造的體現。實際項目中,AR相當于一個受信任的第三方,AR 雖然可以管理其他角色,但是又脫離不了角色集的范疇,可以防止AR 不受控制,這也是約束[3]思想的折射。AR 實際上是權限管理的核心,負責模型中最重要的PA 和UA 操作,這兩個操作屬于權限的分配\撤銷范疇。AR 對USERS 進行UA 操作后,USERS也就被賦予了相應的ROLES,也可以賦予AR;AR 對PRMS進行COMP 操作后,PRMS也就賦予AR 相應的權限操作,這就是AR 作為管理者的權限由來,然后可以對OR 進行PA 操作,也就把PRMS賦給了R。
SESSIONS起激活、記憶的作用,主要體現在權限的使用方面,SESSIONS的產生是在COMP、PA、UA 操作過程中伴隨而成的,當執行模型中的U-S、R-S、P-S 時,相應的會話會被初始化,直到用戶注銷為止,相應的會話才會關閉。
2.1.3 NRBAC模型的數據關系
如圖3所示,NRBAC 模型是一個關系模型,U-R 和R-P的關系都是多對多 (many-to-many)關系,為了解決多對多的數據關系,通常的做法是增加中間表,將多對多轉換為一對多和多對一,其中UA 和PA 就相當于中間表。

圖3 NRBAC模型
U-UI是1:1 的關系,一個用戶只有一個用戶信息。OPS與各級OBS都有一個1:1 的關系,使得不同角色可以精確控制任意一級的OBS,也控制著操作對每一級OBS的訪問許可權。對于OBS可以拓展到n 級,特別要注意各級的關聯關系,一級OBS 與二級OBS、二級OBS 對三級OBS都是1:n 的關系,起直接控制的作用,一級OBS與三級OBS之間也是1:n的關系,但起的是間接控制作用。從數據庫的主外鍵角度看,以上的關系可以用建外鍵的方式達到相同的關系效果,即一級OBS無外鍵數,二級OBS有1個外鍵數,三級OBS有2個外鍵數。推廣到n 級,也應該滿足式 (1),可以幫助確定欄目間的關系,f(n)函數指的是當前第n級所含的外鍵數目

NRBAC模型的關注核心在于PRMS的形成,也就是對PRMS進行細分,提出了OPS,OBS,RS的概念,這里重新對“權限”進行定義:權限由操作 (Operation)、對象 (Object)和資源(Resource)組成,表示由操作去控制對象對資源的一個有權訪問,即“Operation+Object+Resource”。
操作不對資源直接訪問,而是交給了對象去控制,而欄目由 “OBS+RS”組成,也就相當于用操作去訪問欄目。將操作和欄目綁定后形成權限,是為了方便以 “級 (類)”為單位給角色賦權,同時也方便權限的分配和撤銷,也給OBS和RS增加了一層保護。這樣的好處在于,防止惡意的非法操作直接控制資源,當涉及機密信息或者金融業務審批時,防止遭受外部入侵,以保證數據的完整性。
在這里,審批內容相似的歸為一個類,也稱為一級,一級就相當于一個欄目,一個欄目也就包含一個OBS 和RS,可以被無限歸納,也就是多級的概念,這正是本文實現多級動態權限的核心。角色通過權限去操作著每一級欄目,再通過對欄目來間接地操作資源,資源指的是所有由URL關聯的報表、數據、圖片、文檔等。而把PRMS與角色進行關聯,要通過COMP 中的Operate Permissions,這樣權限就會被AR 所持有,AR 才真正具備PA 的資格。對于COMP中的Manage Permissions,有待進一步研究,初步設想是引入優先級來提高PRMS的靈活性和實用性,而引入優先級就必然涉及到數字屬性[8]。
權限管理是DMM 系統中業務審批流程的核心部分,涉及7類角色:總經理、設備管理專員、維護維修人員、倉庫管理專員、安檢專員、設備操作人員、管理員,要求權限是動態的,不能事先設定死,而且業務流程非常復雜,就要求欄目是多級。結合某種技術 (本文選擇JavaScript),NRBAC模型可以解決這些新需求。
依據NRBAC模型,結合DMM 權限管理部分的需求,設計了如圖4 所示的數據庫,其中字段is_show、is_opened、is_collapsible、is_collapsed 被JavaScript用于實現PA 功能。

圖4 權限管理數據庫設計
JS語言編寫前臺頁面COMP、PA、UA 操作的代碼,實現對權限動態地創造、分配、撤銷,JavaScript是起控制作用。
下面的js代碼是對圖5中一級欄目的圖片選擇,當遍歷圖片時,圖片只能選擇一張,并且要獲取圖片路徑,最后要保存選中的圖片id 值。


如圖5所示,該DMM 的系統管理實質上就是權限管理,與NRBAC 模型對應的一級欄目: “權限管理”,二級欄目:“欄目管理”、“角色管理”、“用戶管理”,三級欄目:“新增欄目”、“新增角色”、“新增用戶”等,這些欄目全部都是用JS語言編寫的。

圖5 權限創造界面
DMM 的系統管理模塊在后臺進行了分層,根據SSH框架分為Action層、Service層、Dao層,每層的類命名都采用駝峰命名法則[13]。如圖6 可以清晰地看出代碼層次,與NRBAC模型的基本元素也是相對應的。
重點 介 紹 下Service 層 中UserServiceImpl.java 這 個類,因為初始化用戶所持有的角色及角色對應的多級權限主要是在該類中進行,該類有個入口函數findInitData (),它觸發NRBAC模型中3個Session 去激活權限,保證權限管理正常使用。
初始化用戶所持有的角色及角色對應的多級權限算法描述如下:

圖6 權限管理后臺分層
(1)首先將用戶的ID 號進行查詢,把AR 分配給該用戶所屬的所有角色存儲在一個List中,并將該查詢結果存放在R-S中;
(2)把上一步中查詢到的角色進行遍歷,然后根據每次迭代的角色ID 進行OPS查詢,把結果存放在P-S 中;
(3)把欄目分級 (DMM 系統分了三級),每級都有直接關聯的權限,這就是在NRBAC 模型中每級的OBS 與OPS都進行了1∶1關聯的原因;
(4)每個權限對應著一個欄目信息,考慮到有的角色可能有重復的權限,所以有時候會存在重復的欄目,為此,每次迭代的時候都要除去重復的欄目,這里使用一個Set集合(一種不允許重復元素的集合)來保存用戶的所有欄目。
如圖7所示,初始化用戶所持有的角色及角色對應的多級權限的處理步驟,具體如下所示。

圖7 初始化流程
如圖8 所示,這是DMM 系統管理的界面跳轉流程,也是多級動態權限管理邏輯關系,更是對NRBAC 模型實現的全局概況。

圖8 權限管理界面跳轉流程
本文在RBAC 模型的基礎上,提出了一種改進后的RBAC模型--NRBAC模型,主要解決業務審批系統中對多級動態權限的新需求,利用角色集派生出的AR 角色來動態地創造、分配和撤銷權限,同時將PRMS進行了細化,實現操作與資源分離,從而用欄目去綁定權限,既保證了業務審批過程中數據的完整性和保密性,也解決了多級、動態權限的問題。然后結合JavaScript技術和SSH 框架,以DMM 系統為實例,按照NRBAC 模型實現了多級動態權限的要求,驗證了該模型的可行性。下一步的研究工作主要圍繞COMP操作中的Manage Permissions展開,通過引入優先級來提高權限管理的靈活性。
[1]HU Xiangdong,WEI Qinfang,HU Rong.Applied cryptography [M].2nd ed.Beijing:Publishing House of Electronics Industry,2013:16-19 (in Chinese). [胡向東,魏琴芳,胡蓉.應用密碼學 [M].2版.北京:電子工業出版社,2013:16-19.]
[2]Claudio A Ardagna,Sabrina De Capitani di Vimercati,Stefano Paraboschi,et al.Expressive and deployable access control in open Web service applications [J].IEEE Computer Society,2011,4 (2):96-109.
[3]Sandhu R,Conyne EJ,Lfeinstein H,et al.Role based access control model[J].IEEE Computer Society,1996,29 (2):38-47.
[4]Sandhu R,Ferraiolo D,Kuhn R.The NIST model for rolebased access control:Towards a unified standard [C]//Proc of the 5th ACM Workshop on Role-Based Access Control.New York:ACM Press,2000:47-63.
[5]Enokido T,Takizawa M.Role based access control in distributed object systems[C]//Proc of 28th International Conference on Distributed Computing Systems Workshops,2008:24-29.
[6]Xie Hui,Zhang Bin,Hu Dianyou.A role-based dynamic authorization model and its implementation in PMI[C]//Proc of International Conference on Computer Science and Software Engineering,2008:661-664.
[7]Sandhu R,Munawer Q.The RRA97 model for role-based administration of role hierarchies [C]//Proc of 14th Annual Computer Security Applications Conference,1998:39-49.
[8]Eric Freudenthal,Tracy Pesin,Lawrence Port,et al.dRBAC:Distributed role-based access control for dynamic coalition environments [C]//Proc of Distributed Computing Systems,2002:411-420.
[9]Seong-Won Lee,Soo-Mook Moon.Selective just-in-time compilation for client-side mobile JavaScript engine [C]//Proc of the Proceedings of the 14th International Conference on Compilers,Architectures and Synthesis for Embedded Systems,2011:5-13.
[10]JIA Bei,ZHEN Mingmin,DU Lei,et al.Java Web integrated development of actual combat[M].Beijing:Tsinghua University Press,2013:586-588(in Chinese).[賈蓓,鎮明敏,杜磊,等.Java Web整合開發實戰[M].北京:清華大學出版社,2013:586-588.]
[11]GU Yuesheng,BU Da,DU Lei,et al.Java Web program design and project practice [M].Beijing:Publishing House of Electronics Industry,2011:401-405 (in Chinese).[古樂聲,卜炟,杜磊,等.Java Web程序設計與項目實踐 [M].北京:電子工業出版社,2011:401-405.]
[12]Kepa M,Sakowicz B,Nowak P,et al.Application for videoconference based on JEE platform [C]//Proc of CAD Systems in Microelectronics,Lviv-Polyana,2009:431-434.
[13]Wikipedia.CamelCase [EB/OL]. [2014-04-24].http://en.wikipedia.org/wiki/CamelCase.