陳宮浩,卿粼波,滕奇志,張余強(qiáng)
(1.四川大學(xué) 電子信息學(xué)院 圖像信息研究所,四川 成都 610065; 2.成都西圖科技有限公司,四川 成都 610065)
RBAC權(quán)限管理模型在油田管理系統(tǒng)中的應(yīng)用*
陳宮浩1,卿粼波1,滕奇志1,張余強(qiáng)2
(1.四川大學(xué) 電子信息學(xué)院 圖像信息研究所,四川 成都 610065; 2.成都西圖科技有限公司,四川 成都 610065)
油田實驗數(shù)據(jù)作為勘探、開發(fā)、油藏評價等各個科研領(lǐng)域必不可少的研究資料,其重要性可見一斑,保護(hù)油田實驗數(shù)據(jù)的安全性具有重要的戰(zhàn)略價值和現(xiàn)實意義。為有效管理科研人員對油田實驗數(shù)據(jù)的查看和使用,通過分析權(quán)限控制在油田信息管理系統(tǒng)中的發(fā)展現(xiàn)狀,結(jié)合ASP.NET MVC、jQuery easyUI以及RBAC訪問控制模型,介紹了一套完整的油田權(quán)限管理系統(tǒng)的實現(xiàn)方法,主要包括系統(tǒng)架構(gòu)和技術(shù)實現(xiàn),旨在促進(jìn)權(quán)限控制在數(shù)字化油田中的發(fā)展。
ASP.NET MVC;基于角色的權(quán)限控制模型;油田實驗數(shù)據(jù)
隨著HTML5技術(shù)的發(fā)展與推廣,基于B/S架構(gòu)的數(shù)據(jù)管理系統(tǒng)得到了充分的應(yīng)用。在油田信息管理系統(tǒng)的建設(shè)中,由于油田信息數(shù)據(jù)量大、種類繁多,加之網(wǎng)絡(luò)環(huán)境的開放性,在提高工作效率的同時,如何有效地保護(hù)數(shù)據(jù)、分配權(quán)限、保證國家油田實驗數(shù)據(jù)的安全成為了關(guān)注的焦點,相關(guān)的探討和應(yīng)用正在不斷發(fā)展。如李琛、李宇峰等人提出的USB加密狗技術(shù),不僅給出了身份認(rèn)證和權(quán)限設(shè)定的實現(xiàn)辦法,而且對軟硬件結(jié)合的加密模式做了探討[1]。又如張琴等人提出的安全插件技術(shù),探討了對油田數(shù)據(jù)庫的訪問控制,在保障訪問安全的同時,又記錄了用戶對數(shù)據(jù)庫的操作[2]。本文結(jié)合微軟推出的ASP.NET MVC框架,采用基于角色的權(quán)限控制(Role-Based Access Control,RBAC)模型,以及面向切面編程(Aspect Oriented Programming,AOP)等技術(shù),設(shè)計和實現(xiàn)了一個基于B/S架構(gòu)的油田權(quán)限管理系統(tǒng)。
1.1 MVC架構(gòu)
以往基于B/S架構(gòu)的管理系統(tǒng)常采用ASP.NET Webform框架進(jìn)行開發(fā),該框架封裝了許多常用的控件,雖然方便了開發(fā),但是不利于服務(wù)器端結(jié)構(gòu)分層,在后期維護(hù)上成本過高,故本系統(tǒng)采用ASP.NET MVC 分層體系結(jié)構(gòu)。
ASP.NET MVC從邏輯上可以劃分為視圖層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。視圖層采用jQuery easyUI框架,該框架可以提供簡潔而強(qiáng)大的數(shù)據(jù)展示功能,視圖層通過Ajax異步通信技術(shù)提交用戶的請求到后臺,后臺控制器接收視圖層傳來的數(shù)據(jù)后立刻交給業(yè)務(wù)邏輯層的相應(yīng)方法,然后對數(shù)據(jù)進(jìn)行相應(yīng)處理,比如驗證數(shù)據(jù)的合法性、對原始數(shù)據(jù)進(jìn)行封裝以及構(gòu)造JSON數(shù)組等,最后,由業(yè)務(wù)邏輯層調(diào)用數(shù)據(jù)訪問層的方法對數(shù)據(jù)庫進(jìn)行增、刪、改、查的操作。對數(shù)據(jù)庫的操作采用的是ADO.NET技術(shù)。如果操作成功則經(jīng)控制器以JSON數(shù)組的形式返回數(shù)據(jù)到視圖層,或者直接在視圖層提示用戶操作結(jié)果。系統(tǒng)的總體框架圖如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
1.2 RBAC模型
RBAC的核心思想是在用戶和權(quán)限之間增加一層角色映射。角色的引入來自于實際生產(chǎn)環(huán)境中的職務(wù),具體職務(wù)代表著處理某些事物的權(quán)利[3]。在權(quán)限系統(tǒng)中角色可以理解為一定數(shù)量的權(quán)限的集合。權(quán)限映射到角色,角色再映射到用戶,角色是連接權(quán)限和用戶的橋梁。這種分層次的設(shè)計把權(quán)限分配的重點由用戶轉(zhuǎn)移到角色,大大簡化了權(quán)限分配的復(fù)雜程度。RBAC訪問控制模型如圖2所示。
圖2 RBAC訪問控制模型
為實現(xiàn)系統(tǒng)管理員在瀏覽器上查看、編輯、修改、刪除權(quán)限信息,本系統(tǒng)涉及的關(guān)鍵技術(shù)包括數(shù)據(jù)庫設(shè)計、數(shù)據(jù)庫存儲過程的編寫、面向切面編程、權(quán)限信息的展示和用戶交互功能的編寫。
2.1 數(shù)據(jù)庫設(shè)計
石油部門大多使用Windows操作系統(tǒng),本系統(tǒng)為了與部署環(huán)境保持一致,采用與Windows操作系統(tǒng)兼容的SQL Server 2008數(shù)據(jù)庫。RBAC模型最基本由4個數(shù)據(jù)表組成:用戶信息表、部門信息表、角色表、權(quán)限表,在此基礎(chǔ)之上,還需要創(chuàng)建兩張中間表關(guān)聯(lián)4個基本表。數(shù)據(jù)庫的設(shè)計如圖3所示。
圖3 數(shù)據(jù)庫設(shè)計
AuthDepartment表是部門信息表,DID字段是AuthDepartment表的主鍵,唯一標(biāo)識部門。ParentDID字段是父部門的ID,部門和父部門通過DID和ParentDID形成遞歸。
AuthUser表是用戶信息表,UID字段是AuthUser表的主鍵,唯一標(biāo)識用戶,DID字段是AuthUser表的外鍵,該字段參照的完整性約束是AuthDepartment表的DID字段,標(biāo)識了用戶所屬的部門ID。
AuthRole表是角色信息表,RID字段是AuthRole表的主鍵。
AuthPrivilege表是最底層的權(quán)限表,PrivilegeRoute字段存放的是管理系統(tǒng)各個頁面的路由信息。
除此之外還創(chuàng)建了兩張中間表AuthUserRole和AuthRolePrivilege。AuthUserRole連接著AuthUser表和AuthRole表,添加用戶時向AuthUser表插入用戶信息,同時向AuthUserRole表插入用戶擁有的權(quán)限,刪除用戶時不僅要刪除AuthUser表的記錄,同時要刪除AuthUerRole表中該用戶所擁有的權(quán)限。通過AuthUserRole可以實現(xiàn)用戶和角色之間多對多的關(guān)系。同理,AuthRolePrivilege表也是連接AuthRole表和AuthPrivilege表的橋梁,同樣實現(xiàn)了角色和權(quán)限之間多對多的關(guān)系。
2.2 存儲過程的編寫
AuthUserRole表存儲了一個用戶擁有的所有角色,在油田管理系統(tǒng)的使用過程中,一個工作人員往往有多個角色,故在創(chuàng)建AuthUserRole表時,設(shè)置AuthUserRole表的UID字段為外鍵,參照完整性約束為AuthUser表的UID字段,并設(shè)置為級聯(lián)刪除。當(dāng)從AuthUser表中刪除用戶的同時,數(shù)據(jù)庫根據(jù)用戶的UID把AuthUserRole表中有相同UID的數(shù)據(jù)條目刪除,也即刪除了該用戶的所有角色信息。
SQL Server數(shù)據(jù)庫無法實現(xiàn)用戶信息的級聯(lián)添加和級聯(lián)修改,故需要編寫存儲過程來保證用戶信息的一致性[4]。添加用戶角色時,需要使用游標(biāo),循環(huán)向AuthUserRole表插入角色數(shù)據(jù)。添加用戶的存儲過程的執(zhí)行流程如圖4所示。
圖4 添加用戶
與用戶的添加、修改和刪除類似,角色的添加、修改和刪除不僅需要修改AuthRole表,同時還要修改AuthRolePrivilege表,對AuthRolePrivilege表的操作同樣需要存儲過程的控制。
2.3 切面編程
用戶在請求一個控制器(Controller)的方法(Action)前系統(tǒng)要先對用戶的身份進(jìn)行檢查,如果用戶具有執(zhí)行操作的權(quán)限則放行,如果用戶不具有執(zhí)行操作的權(quán)限,則攔截用戶的請求[5]。
ASP.NET MVC為系統(tǒng)開發(fā)人員提供了Action過濾器,Action過濾器是可以自定義的屬性,用來標(biāo)記添加Action方法之前或者Action方法之后的行為到控制器的Action方法中。Action過濾器是通過繼承ActionFilterAttribute類來實現(xiàn)的一個Attribute類。ActionFilterAttribute 是一個抽象類,提供了OnActionExecuting和OnActionExecuted方法供開發(fā)人員重寫。ActionExecutingContext類為OnActionExecuting方法提供了上下文信息,通過該類的RouteData屬性可以獲得用戶請求的方法的路由信息。
在用戶成功登錄管理系統(tǒng)的同時,通過用戶的ID查詢出用戶擁有的角色,再根據(jù)角色從AuthPrivilege表中取出權(quán)限,這里的權(quán)限指的是角色擁有的路由信息的集合。在執(zhí)行用戶請求控制器的方法前會先執(zhí)行OnActionExecuting方法,在OnActionExecuting方法中判斷用戶的會話是否過期,如果會話過期就提示用戶重新登錄管理系統(tǒng)并重定向到登錄頁面。如果會話沒有過期則利用ActionExecutingContext類取出請求的方法的路由信息,檢查該路由信息是否包含在用戶的路由集合里,如果包含,表明用戶擁有對該方法的執(zhí)行權(quán)限,對用戶的請求放行;如果不包含,表明用戶沒有對該方法的執(zhí)行權(quán)限,不允許用戶執(zhí)行該方法。該功能的程序流程如圖5所示。
圖5 訪問控制
選擇用戶部門批量處理可以批量地修改用戶的部門信息,該功能如圖6所示。同理選擇用戶角色批量處理可以批量地修改用戶的角色信息,該功能如圖7所示。
圖6 批量設(shè)置用戶所屬部門
圖7 批量設(shè)置用戶所屬權(quán)限
本文針對數(shù)字化油田信息管理系統(tǒng)的數(shù)據(jù)安全和訪問控制需求,制作了一套基于B/S架構(gòu)的權(quán)限管理系統(tǒng)。本系統(tǒng)采用RBAC權(quán)限模型來實現(xiàn)對權(quán)限的高效管理;使用ADO.NET組件訪問SQL Server數(shù)據(jù)庫。為了保證數(shù)據(jù)的安全性,服務(wù)器端的程序必須對用戶提交的內(nèi)容做檢查;為了保證數(shù)據(jù)的一致性,數(shù)據(jù)庫采用存儲過程的方式修改數(shù)據(jù)表。
本系統(tǒng)有效地解決了不同身份的工作人員對油田管理系統(tǒng)的訪問控制,保證了油田數(shù)據(jù)的安全性。
[1] 李琛,李宇峰,陳祥光. 油田過程信息管理系統(tǒng)身份認(rèn)證與權(quán)限設(shè)定方法[J].微計算機(jī),2007,23(9):37-38.
[2] 張琴,徐品品,楊國棟.長慶油田勘探開發(fā)數(shù)據(jù)庫安全系統(tǒng)分析與應(yīng)用[J].信息技術(shù)與標(biāo)準(zhǔn)化,2012(1):61-62.
[3] 楊柳,危韌勇,陳傳波.一種擴(kuò)展型基于角色權(quán)限管理模型E-RBAC研究[J].計算機(jī)工程與科學(xué),2006,28(9):126-128.
[4] 李宗英.SQL存儲過程在.NET 數(shù)據(jù)庫中的運(yùn)用[J].中國高新技術(shù)企業(yè),2008(15):109-109.
[5] 李麗萍.面向切面編程之研究與探討[J].科技信息,2009(6):149.
Application of RBAC authority management model in oilfield management system
Chen Gonghao1,Qing Linbo1,Teng Qizhi1,Zhang Yuqiang2
(1. Image Information Institution, School of Electronics and Information, Sichuan University, Chengdu 610065, China;2. Chengdu Xitu Technology Co., Ltd.,Chengdu 610065, China)
Oilfield experiment data plays a major role in exploration, development, reservoir evaluation, and other scientific oilfield researches. Protect oilfield experimental data security has important strategic value and practical significance. For the effective management of scientific research personnel's inspection of the oil field experimental data, through the analysis of access control in the oilfield information management system development, combining with the ASP.NET MVC, jQuery easyUI and RBAC access control model, this paper introduced a complete set of oilfield method to realize the authority management system. it mainly includes system architecture and technical implementation, and aims to promote the development of access controlls in digital oilfield.
ASP.NET MVC; role based access control; oilfield experiment data
TP399
A
10.19358/j.issn.1674- 7720.2017.02.026
陳宮浩,卿粼波,滕奇志,等.RBAC權(quán)限管理模型在油田管理系統(tǒng)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(2):87-89,95.
國家自然科學(xué)基金(00000000);國家高技術(shù)研究發(fā)展計劃(863計劃)(2008AA000000)
2016-08-21)
陳宮浩(1992-),通信作者,男,碩士研究生,主要研究方向:計算機(jī)應(yīng)用與圖像識別。E-mail:chengonghao@yeah.net。
卿麟波(1980-),男,博士,副教授,主要研究方向:信號與系統(tǒng)、信號處理、圖像通信。
滕奇志(1962-),女,博士,教授,主要研究方向:數(shù)字圖像處理與模式識別、計算機(jī)應(yīng)用與圖像識別、生物醫(yī)學(xué)圖像等。