2017-03-14 14:18:23

  陳宮浩1,卿粼波1,滕奇誌1,張餘強2

  (1.四川大學 電子信息學院 圖像信息研究所,四川 成都 610065; 2.成都西圖科技有限公司,四川 成都 610065)

         摘要:油田實驗數據作為勘探、開發、油藏評價等各個科研領域必不可少的研究資料,其重要性可見一斑,保護油田實驗數據的安全性具有重要的戰略價值和現實意義。為有效管理科研人員對油田實驗數據的查看和使用,通過分析權限控製在油田信息管理係統中的發展現狀,結合ASP.NET MVC、jQuery easyUI以及RBAC訪問控製模型,介紹了一套完整的油田權限管理係統的實現方法,主要包括係統架構和技術實現,旨在促進權限控製在數字化油田中的發展。

  關鍵詞:ASP.NET MVC;基於角色的權限控製模型;油田實驗數據

  中圖分類號:TP399文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.02.026

  引用格式:陳宮浩,卿粼波,滕奇誌,等.RBAC權限管理模型在油田管理係統中的應用[J].微型機與應用,2017,36(2):87-89,95.

0引言

  *基金項目:國家自然科學基金(00000000);國家高技術研究發展計劃(863計劃)(2008AA000000)隨著HTML5技術的發展與推廣,基於B/S架構的數據管理係統得到了充分的應用。在油田信息管理係統的建設中,由於油田信息數據量大、種類繁多,加之網絡環境的開放性,在提高工作效率的同時,如何有效地保護數據、分配權限、保證國家油田實驗數據的安全成為了關注的焦點,相關的探討和應用正在不斷發展。如李琛、李宇峰等人提出的USB加密狗技術,不僅給出了身份認證和權限設定的實現辦法,而且對軟硬件結合的加密模式做了探討[1]。又如張琴等人提出的安全插件技術,探討了對油田數據庫的訪問控製,在保障訪問安全的同時,又記錄了用戶對數據庫的操作[2]。本文結合微軟推出的ASP.NET MVC框架,采用基於角色的權限控製(Role?Based Access Control,RBAC)模型,以及麵向切麵編程(Aspect Oriented Programming,AOP)等技術,設計和實現了一個基於B/S架構的油田權限管理係統。

1係統總體框架

  1.1MVC架構

  以往基於B/S架構的管理係統常采用ASP.NET Webform框架進行開發,該框架封裝了許多常用的控件,雖然方便了開發,但是不利於服務器端結構分層,在後期維護上成本過高,故本係統采用ASP.NET MVC 分層體係結構。

  ASP.NET MVC從邏輯上可以劃分為視圖層、業務邏輯層和數據訪問層。視圖層采用jQuery easyUI框架,該框架可以提供簡潔而強大的數據展示功能,視圖層通過Ajax異步通信技術提交用戶的請求到後台,後台控製器接收視圖層傳來的數據後立刻交給業務邏輯層的相應方法,然後對數據進行相應處理,比如驗證數據的合法性、對原始數據進行封裝以及構造JSON數組等,最後,由業務邏輯層調用數據訪問層的方法對數據庫進行增、刪、改、查的操作。對數據庫的操作采用的是ADO.NET技術。如果操作成功則經控製器以JSON數組的形式返回數據到視圖層,或者直接在視圖層提示用戶操作結果。係統的總體框架圖如圖1所示。

  

001.jpg

  1.2RBAC模型

  RBAC的核心思想是在用戶和權限之間增加一層角色映射。角色的引入來自於實際生產環境中的職務,具體職務代表著處理某些事物的權利[3]。在權限係統中角色可以理解為一定數量的權限的集合。權限映射到角色,角色再映射到用戶,角色是連接權限和用戶的橋梁。這種分層次的設計把權限分配的重點由用戶轉移到角色,大大簡化了權限分配的複雜程度。RBAC訪問控製模型如圖2所示。

  

002.jpg

2關鍵技術實現

  為實現係統管理員在瀏覽器上查看、編輯、修改、刪除權限信息,本係統涉及的關鍵技術包括數據庫設計、數據庫存儲過程的編寫、麵向切麵編程、權限信息的展示和用戶交互功能的編寫。

  2.1數據庫設計

  石油部門大多使用Windows操作係統,本係統為了與部署環境保持一致,采用與Windows操作係統兼容的SQL Server 2008數據庫。RBAC模型最基本由4個數據表組成:用戶信息表、部門信息表、角色表、權限表,在此基礎之上,還需要創建兩張中間表關聯4個基本表。數據庫的設計如圖3所示。

003.jpg

  AuthDepartment表是部門信息表,DID字段是AuthDepartment表的主鍵,唯一標識部門。ParentDID字段是父部門的ID,部門和父部門通過DID和ParentDID形成遞歸。

  AuthUser表是用戶信息表,UID字段是AuthUser表的主鍵,唯一標識用戶,DID字段是AuthUser表的外鍵,該字段參照的完整性約束是AuthDepartment表的DID字段,標識了用戶所屬的部門ID。

  AuthRole表是角色信息表,RID字段是AuthRole表的主鍵。

  AuthPrivilege表是最底層的權限表,PrivilegeRoute字段存放的是管理係統各個頁麵的路由信息。

  除此之外還創建了兩張中間表AuthUserRole和AuthRolePrivilege。AuthUserRole連接著AuthUser表和AuthRole表,添加用戶時向AuthUser表插入用戶信息,同時向AuthUserRole表插入用戶擁有的權限,刪除用戶時不僅要刪除AuthUser表的記錄,同時要刪除AuthUerRole表中該用戶所擁有的權限。通過AuthUserRole可以實現用戶和角色之間多對多的關係。同理,AuthRolePrivilege表也是連接AuthRole表和AuthPrivilege表的橋梁,同樣實現了角色和權限之間多對多的關係。

  2.2存儲過程的編寫

  AuthUserRole表存儲了一個用戶擁有的所有角色,在油田管理係統的使用過程中,一個工作人員往往有多個角色,故在創建AuthUserRole表時,設置AuthUserRole表的UID字段為外鍵,參照完整性約束為AuthUser表的UID字段,並設置為級聯刪除。當從AuthUser表中刪除用戶的同時,數據庫根據用戶的UID把AuthUserRole表中有相同UID的數據條目刪除,也即刪除了該用戶的所有角色信息。

  SQL Server數據庫無法實現用戶信息的級聯添加和級聯修改,故需要編寫存儲過程來保證用戶信息的一致性[4]。添加用戶角色時,需要使用遊標,循環向AuthUserRole表插入角色數據。添加用戶的存儲過程的執行流程如圖4所示。

004.jpg

  與用戶的添加、修改和刪除類似,角色的添加、修改和刪除不僅需要修改AuthRole表,同時還要修改AuthRolePrivilege表,對AuthRolePrivilege表的操作同樣需要存儲過程的控製。

  2.3切麵編程

  用戶在請求一個控製器(Controller)的方法(Action)前係統要先對用戶的身份進行檢查,如果用戶具有執行操作的權限則放行,如果用戶不具有執行操作的權限,則攔截用戶的請求[5]。

  ASP.NET MVC為係統開發人員提供了Action過濾器,Action過濾器是可以自定義的屬性,用來標記添加Action方法之前或者Action方法之後的行為到控製器的Action方法中。Action過濾器是通過繼承ActionFilterAttribute類來實現的一個Attribute類。ActionFilterAttribute 是一個抽象類,提供了OnActionExecuting和OnActionExecuted方法供開發人員重寫。ActionExecutingContext類為OnActionExecuting方法提供了上下文信息,通過該類的RouteData屬性可以獲得用戶請求的方法的路由信息。

  在用戶成功登錄管理係統的同時,通過用戶的ID查詢出用戶擁有的角色,再根據角色從AuthPrivilege表中取出權限,這裏的權限指的是角色擁有的路由信息的集合。在執行用戶請求控製器的方法前會先執行OnActionExecuting方法,在OnActionExecuting方法中判斷用戶的會話是否過期,如果會話過期就提示用戶重新登錄管理係統並重定向到登錄頁麵。如果會話沒有過期則利用ActionExecutingContext類取出請求的方法的路由信息,檢查該路由信息是否包含在用戶的路由集合裏,如果包含,表明用戶擁有對該方法的執行權限,對用戶的請求放行;如果不包含,表明用戶沒有對該方法的執行權限,不允許用戶執行該方法。該功能的程序流程如圖5所示。

005.jpg

3功能測試

  選擇用戶部門批量處理可以批量地修改用戶的部門信息,該功能如圖6所示。同理選擇用戶角色批量處理可以批量地修改用戶的角色信息,該功能如圖7所示。 

006.jpg

4結論

  本文針對數字化油田信息管理係統的數據安全和訪問控製需求,製作了一套基於B/S架構的權限管理係統。本係統采用RBAC權限模型來實現對權限的高效管理;使用ADO.NET組件訪問SQL Server數據庫。為了保證數據的安全性,服務器端的程序必須對用戶提交的內容做檢查;為了保證數據的一致性,數據庫采用存儲過程的方式修改數據表。

  本係統有效地解決了不同身份的工作人員對油田管理係統的訪問控製,保證了油田數據的安全性。

參考文獻

  [1] 李琛,李宇峰,陳祥光. 油田過程信息管理係統身份認證與權限設定方法[J].微計算機,2007,23(9):37-38.

  [2] 張琴,徐品品,楊國棟.長慶油田勘探開發數據庫安全係統分析與應用[J].信息技術與標準化,2012(1):61-62.


第1頁  

http://www.autooo.net/autooo/elec/news/2017-03-14/170844.html