陳宮浩1,卿粼波1,滕奇志1,張余強2
(1.四川大學 電子信息學院 圖像信息研究所,四川 成都 610065; 2.成都西圖科技有限公司,四川 成都 610065)
摘要:油田實驗數(shù)據(jù)作為勘探、開發(fā)、油藏評價等各個科研領域必不可少的研究資料,其重要性可見一斑,保護油田實驗數(shù)據(jù)的安全性具有重要的戰(zhàn)略價值和現(xiàn)實意義。為有效管理科研人員對油田實驗數(shù)據(jù)的查看和使用,通過分析權限控制在油田信息管理系統(tǒng)中的發(fā)展現(xiàn)狀,結合ASP.NET MVC、jQuery easyUI以及RBAC訪問控制模型,介紹了一套完整的油田權限管理系統(tǒng)的實現(xiàn)方法,主要包括系統(tǒng)架構和技術實現(xiàn),旨在促進權限控制在數(shù)字化油田中的發(fā)展。
關鍵詞:ASP.NET MVC;基于角色的權限控制模型;油田實驗數(shù)據(jù)
中圖分類號:TP399文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.02.026
引用格式:陳宮浩,卿粼波,滕奇志,等.RBAC權限管理模型在油田管理系統(tǒng)中的應用[J].微型機與應用,2017,36(2):87-89,95.
0引言
*基金項目:國家自然科學基金(00000000);國家高技術研究發(fā)展計劃(863計劃)(2008AA000000)隨著HTML5技術的發(fā)展與推廣,基于B/S架構的數(shù)據(jù)管理系統(tǒng)得到了充分的應用。在油田信息管理系統(tǒng)的建設中,由于油田信息數(shù)據(jù)量大、種類繁多,加之網絡環(huán)境的開放性,在提高工作效率的同時,如何有效地保護數(shù)據(jù)、分配權限、保證國家油田實驗數(shù)據(jù)的安全成為了關注的焦點,相關的探討和應用正在不斷發(fā)展。如李琛、李宇峰等人提出的USB加密狗技術,不僅給出了身份認證和權限設定的實現(xiàn)辦法,而且對軟硬件結合的加密模式做了探討[1]。又如張琴等人提出的安全插件技術,探討了對油田數(shù)據(jù)庫的訪問控制,在保障訪問安全的同時,又記錄了用戶對數(shù)據(jù)庫的操作[2]。本文結合微軟推出的ASP.NET MVC框架,采用基于角色的權限控制(RoleBased Access Control,RBAC)模型,以及面向切面編程(Aspect Oriented Programming,AOP)等技術,設計和實現(xiàn)了一個基于B/S架構的油田權限管理系統(tǒng)。
1系統(tǒng)總體框架
1.1MVC架構
以往基于B/S架構的管理系統(tǒng)常采用ASP.NET Webform框架進行開發(fā),該框架封裝了許多常用的控件,雖然方便了開發(fā),但是不利于服務器端結構分層,在后期維護上成本過高,故本系統(tǒng)采用ASP.NET MVC 分層體系結構。
ASP.NET MVC從邏輯上可以劃分為視圖層、業(yè)務邏輯層和數(shù)據(jù)訪問層。視圖層采用jQuery easyUI框架,該框架可以提供簡潔而強大的數(shù)據(jù)展示功能,視圖層通過Ajax異步通信技術提交用戶的請求到后臺,后臺控制器接收視圖層傳來的數(shù)據(jù)后立刻交給業(yè)務邏輯層的相應方法,然后對數(shù)據(jù)進行相應處理,比如驗證數(shù)據(jù)的合法性、對原始數(shù)據(jù)進行封裝以及構造JSON數(shù)組等,最后,由業(yè)務邏輯層調用數(shù)據(jù)訪問層的方法對數(shù)據(jù)庫進行增、刪、改、查的操作。對數(shù)據(jù)庫的操作采用的是ADO.NET技術。如果操作成功則經控制器以JSON數(shù)組的形式返回數(shù)據(jù)到視圖層,或者直接在視圖層提示用戶操作結果。系統(tǒng)的總體框架圖如圖1所示。
1.2RBAC模型
RBAC的核心思想是在用戶和權限之間增加一層角色映射。角色的引入來自于實際生產環(huán)境中的職務,具體職務代表著處理某些事物的權利[3]。在權限系統(tǒng)中角色可以理解為一定數(shù)量的權限的集合。權限映射到角色,角色再映射到用戶,角色是連接權限和用戶的橋梁。這種分層次的設計把權限分配的重點由用戶轉移到角色,大大簡化了權限分配的復雜程度。RBAC訪問控制模型如圖2所示。
2關鍵技術實現(xiàn)
為實現(xiàn)系統(tǒng)管理員在瀏覽器上查看、編輯、修改、刪除權限信息,本系統(tǒng)涉及的關鍵技術包括數(shù)據(jù)庫設計、數(shù)據(jù)庫存儲過程的編寫、面向切面編程、權限信息的展示和用戶交互功能的編寫。
2.1數(shù)據(jù)庫設計
石油部門大多使用Windows操作系統(tǒng),本系統(tǒng)為了與部署環(huán)境保持一致,采用與Windows操作系統(tǒng)兼容的SQL Server 2008數(shù)據(jù)庫。RBAC模型最基本由4個數(shù)據(jù)表組成:用戶信息表、部門信息表、角色表、權限表,在此基礎之上,還需要創(chuàng)建兩張中間表關聯(lián)4個基本表。數(shù)據(jù)庫的設計如圖3所示。
AuthDepartment表是部門信息表,DID字段是AuthDepartment表的主鍵,唯一標識部門。ParentDID字段是父部門的ID,部門和父部門通過DID和ParentDID形成遞歸。
AuthUser表是用戶信息表,UID字段是AuthUser表的主鍵,唯一標識用戶,DID字段是AuthUser表的外鍵,該字段參照的完整性約束是AuthDepartment表的DID字段,標識了用戶所屬的部門ID。
AuthRole表是角色信息表,RID字段是AuthRole表的主鍵。
AuthPrivilege表是最底層的權限表,PrivilegeRoute字段存放的是管理系統(tǒng)各個頁面的路由信息。
除此之外還創(chuàng)建了兩張中間表AuthUserRole和AuthRolePrivilege。AuthUserRole連接著AuthUser表和AuthRole表,添加用戶時向AuthUser表插入用戶信息,同時向AuthUserRole表插入用戶擁有的權限,刪除用戶時不僅要刪除AuthUser表的記錄,同時要刪除AuthUerRole表中該用戶所擁有的權限。通過AuthUserRole可以實現(xiàn)用戶和角色之間多對多的關系。同理,AuthRolePrivilege表也是連接AuthRole表和AuthPrivilege表的橋梁,同樣實現(xiàn)了角色和權限之間多對多的關系。
2.2存儲過程的編寫
AuthUserRole表存儲了一個用戶擁有的所有角色,在油田管理系統(tǒng)的使用過程中,一個工作人員往往有多個角色,故在創(chuàng)建AuthUserRole表時,設置AuthUserRole表的UID字段為外鍵,參照完整性約束為AuthUser表的UID字段,并設置為級聯(lián)刪除。當從AuthUser表中刪除用戶的同時,數(shù)據(jù)庫根據(jù)用戶的UID把AuthUserRole表中有相同UID的數(shù)據(jù)條目刪除,也即刪除了該用戶的所有角色信息。
SQL Server數(shù)據(jù)庫無法實現(xiàn)用戶信息的級聯(lián)添加和級聯(lián)修改,故需要編寫存儲過程來保證用戶信息的一致性[4]。添加用戶角色時,需要使用游標,循環(huán)向AuthUserRole表插入角色數(shù)據(jù)。添加用戶的存儲過程的執(zhí)行流程如圖4所示。
與用戶的添加、修改和刪除類似,角色的添加、修改和刪除不僅需要修改AuthRole表,同時還要修改AuthRolePrivilege表,對AuthRolePrivilege表的操作同樣需要存儲過程的控制。
2.3切面編程
用戶在請求一個控制器(Controller)的方法(Action)前系統(tǒng)要先對用戶的身份進行檢查,如果用戶具有執(zhí)行操作的權限則放行,如果用戶不具有執(zhí)行操作的權限,則攔截用戶的請求[5]。
ASP.NET MVC為系統(tǒng)開發(fā)人員提供了Action過濾器,Action過濾器是可以自定義的屬性,用來標記添加Action方法之前或者Action方法之后的行為到控制器的Action方法中。Action過濾器是通過繼承ActionFilterAttribute類來實現(xiàn)的一個Attribute類。ActionFilterAttribute 是一個抽象類,提供了OnActionExecuting和OnActionExecuted方法供開發(fā)人員重寫。ActionExecutingContext類為OnActionExecuting方法提供了上下文信息,通過該類的RouteData屬性可以獲得用戶請求的方法的路由信息。
在用戶成功登錄管理系統(tǒng)的同時,通過用戶的ID查詢出用戶擁有的角色,再根據(jù)角色從AuthPrivilege表中取出權限,這里的權限指的是角色擁有的路由信息的集合。在執(zhí)行用戶請求控制器的方法前會先執(zhí)行OnActionExecuting方法,在OnActionExecuting方法中判斷用戶的會話是否過期,如果會話過期就提示用戶重新登錄管理系統(tǒng)并重定向到登錄頁面。如果會話沒有過期則利用ActionExecutingContext類取出請求的方法的路由信息,檢查該路由信息是否包含在用戶的路由集合里,如果包含,表明用戶擁有對該方法的執(zhí)行權限,對用戶的請求放行;如果不包含,表明用戶沒有對該方法的執(zhí)行權限,不允許用戶執(zhí)行該方法。該功能的程序流程如圖5所示。
3功能測試
選擇用戶部門批量處理可以批量地修改用戶的部門信息,該功能如圖6所示。同理選擇用戶角色批量處理可以批量地修改用戶的角色信息,該功能如圖7所示?!?/p>
4結論
本文針對數(shù)字化油田信息管理系統(tǒng)的數(shù)據(jù)安全和訪問控制需求,制作了一套基于B/S架構的權限管理系統(tǒng)。本系統(tǒng)采用RBAC權限模型來實現(xiàn)對權限的高效管理;使用ADO.NET組件訪問SQL Server數(shù)據(jù)庫。為了保證數(shù)據(jù)的安全性,服務器端的程序必須對用戶提交的內容做檢查;為了保證數(shù)據(jù)的一致性,數(shù)據(jù)庫采用存儲過程的方式修改數(shù)據(jù)表。
本系統(tǒng)有效地解決了不同身份的工作人員對油田管理系統(tǒng)的訪問控制,保證了油田數(shù)據(jù)的安全性。
參考文獻
?。?] 李琛,李宇峰,陳祥光. 油田過程信息管理系統(tǒng)身份認證與權限設定方法[J].微計算機,2007,23(9):37-38.
?。?] 張琴,徐品品,楊國棟.長慶油田勘探開發(fā)數(shù)據(jù)庫安全系統(tǒng)分析與應用[J].信息技術與標準化,2012(1):61-62.