程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 基於RBAC原理的訪問控制系統研究

基於RBAC原理的訪問控制系統研究

編輯:.NET實例教程

     (西南交通大學信息科學與技術學院,成都 610031)
  
  關鍵詞:RBAC,訪問控制。
  
  摘 要:本文描述了一個基於RBAC的訪問控制系統的設計和實現。並根據項目的實際的需要對RBAC0模型進行了一定的修改。
  
  A RBAC-based Access control system Research
  
  Chen Xiao Yun, Li Ze Liang
  
  
  
  (School of Information ScIEnce &Technology of Southwest JiaoTong University, ChenDu 610031)
  
  Key Words: RBAC, Access Control.
  
  Abstract: This paper presents a design and implementation of a RBAC-based privilege control system. It modifIEd the RBAC0 according to the requirement of the project also.
  
  
  
  
  
  1 前言
  
  RBAC(Role-Based Access Control)是近年來在信息安全領域訪問控制方面的研究熱點和重點。
  
  基於角色的訪問控制RBAC作為一種靈活和直觀的訪問控制技術在20世紀90年代迅速發展起來,RBAC通過引入角色的新概念來實施訪問控制策略。不同的角色和它所應具有的權限許可互相聯系,用戶作為某些角色的成員,獲得角色所擁有的權限。角色可以根據實際的單位或組織的不同工作職能和權限來劃分,依據用戶所承擔的不同權利和義務來授權相應的角色,對於一個存在大量用戶和權限的權限分配系統來說,從用戶到角色的管理,簡化了權限分配的復雜性,提高了安全管理的效率和質量。
  
  本文結合RBAC的基本原理和一個具體項目的中門戶系統的要求結合起來,在實現靈活度和復雜度上進行了一定的權衡,給出了一個基於.Net技術的具體實現,完成的門戶系統有一定的靈活性和復用性。
  
  企業環境中的訪問控制策略一般有三種:自主型訪問控制方法、強制型訪問控制方法和基於角色的訪問控制方法(RBAC)。其中,自主式太弱,強制式太強,二者工作量大,不便於管理[1]。基於角色的訪問控制方法是目前
  
   收稿日期:2007.01.06
  
  作者簡介:陳小雲,1977.4,男,04級碩士研究生。
  
  聯系方式:81783951,Email:[email protected]
  
  
  
  
  
  
  
  
  
  
  
  公認的解決大型企業的統一資源訪問控制的有效方法。其顯著的兩大特征是:1.減小授權管理的復雜性,降低管理開銷;2.靈活地支持企業的安全策略,並對企業的變化有很大的伸縮性。
  
  NIST(The National Institute of Standards and Technology,美國國家標准與技術研究院)標准RBAC模型由4個部件模型組成,這4個部件模型分別是基本模型RBAC0(Core RBAC)、角色分級模型RBAC1(HIErarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和統一模型RBAC3(Combines RBAC)[1]。RBAC0模型如圖1所示。
   
   
   
  圖1 RBAC0模型
  
  
  
  RBAC0定義了能構成一個RBAC控制系統的最小的元素集合。在RBAC之中,包含用戶users(USERS)、角色roles(ROLES)、目標objects(OBS)、操作Operations(OPS)、許可權permissions(PRMS)五個基本數據元素,權限被賦予角色,而不是用戶,當一個角色被指定給一個用戶時,此用戶就擁有了該角色所包含的權限。會話sessions是用戶與激活的角色集合之間的映射。RBAC0與傳統訪問控制的差別在於增加一層間接性帶來了靈活性,RBAC1、RBAC2、RBAC3都是先後在RBAC0上的擴展。
  
  3 需求分析和設計思路
  
   該項目是一個運輸公司的業務管理系統,由於該公司的組織機構比較復雜,人員眾多,由於分工的不同要求用戶進入系統所能使用的功能是不同的,如果要對每個用戶都設定相應的權限,其工作量和配置的復雜度是很大的,所以考慮筆者考慮RBAC0模型使權限配置更方便,該公司按職位的分工較明確,因此把職位作為一個角色單位,但由於該公司目前的管理還不是很規范,有時候會出現同樣一個角色(職位)的員工,訪問系統的權限是不一樣的(大於或小於角色所擁有的權限),考慮到這樣的實際需求,筆者對RBAC0作了一定的修改,以便能更好的滿足這一需求,修改後模型如圖2:
  
  
  圖2 修改後的RBAC0
  
  該模型增加了附加權限許可和限制許可表示,相當於給一些特殊用戶添加了用戶到許可的直接配置通道,通過它可以靈活的配置該類用戶的許可(即權限),滿足項目需求。
  
  為更好的描述該設計,現在假設角色的對應權限集合為PR,附加許可表示對應的權限集合為PA,限制許可表示對應的權限集合為PL,用戶訪問系統的應有權限PF。
  
  則用戶訪問系統的權限,其角色對應的權限加附加許可表示對應的權限,再減去限制許
  
  可表示中對應的權限。用集合公式表示為:
  
  4 數據庫結構設計
  
  根據上面的設計思路,筆者通過基本表的形式表示各個實體即用戶表、職位表、部門表和權限表,通過關系表來儲存各個實體之間的關系即用戶-部門關系表、用戶-職位-部門關系表、權限-角色關系表、用戶-附加權限關系表和用戶-限制權限關系表。通過這些表加上一定的SQL查詢可以實現上面所論述的集合運算。同時在基本表和關系表之間,利用數據庫的接連刪除和修改功能,保證數據庫的正確性和一致性,比如刪除一個用戶,其在各關系表中接連的記錄也將被刪除。數據庫設計見圖3。
  
  
  圖3 數據庫表設計
  
  
  
  5 系統實現
  
  本系統基於ASP.Net技術實現,具體實現方式為,當用戶通過了身份驗證後,通過用戶的ID,從數據庫中查詢出用戶所應具有的所有權限ID,再把它寫入一個Session中,用戶登錄系統後,各模塊(這裡是ASP頁面)在初使化時,根據Session中的值判斷用戶是否有進入該模塊(ASP頁面),如沒有則跳轉到錯誤頁面。 在這裡有些復雜的是用戶登錄時的權限的查找,筆者通過寫了一個復雜的SQL語句實現了這一功能,該SQL主要是通過接連把多個數據表的查詢結果聯合在一起,從而得到登錄用戶應得的權限。現給出權限判定的代碼如下:
  
  ArrayList
  
  arrPrivilege= ((ArrayList)(Session["privilege"]));
  
  if (arrPrivilege != null)
  
  { if (!arrPgPrivilege.Contains("XXID")) //其中XXID為該頁面對應的權限 {
  
  Response.Write("<script>top.window.location='../pgTimeOut.ASPx';</script>");//無權限跳轉頁面
   
  }
  
  ………..
  
  6 結束語
  
   本文根據項目的實際需要,在RBAC基本原理的基礎上,對RBAC0其進行了一定的修改,在實際應用中取得了良好的效果,事實證明在利用各成熟模型時,可以根據實際需要進行必要的修改。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved