基於RBAC的權限設計模型

基於RBAC的權限設計模型 

權限分析文檔 

基於RBAC的權限設計模型: 

1        RBAC 
介紹 

RBAC 
模型做爲目前最爲普遍接受的權限模型。 

NIST 
The National Institute of Standards and Technology,美國國家標準與技術研究院)標準RBAC模型由4個部件模型組成,這4個部件模型分別是基本模型RBAC0Core RBAC)、角色分級模型RBAC1Hierarchal RBAC)、角色限制模型RBAC2Constraint RBAC)和統一模型RBAC3Combines RBAC[1]RBAC0模型如圖1所示。 



圖表 1 RBAC 0 模型 

         RBAC0 
定義了能構成一個RBAC控制系統的最小的元素集合 

RBAC之中,包含用戶users(USERS)、角色roles(ROLES)、目標objects(OBS)、操做operations(OPS)、許可權permissions(PRMS)五個基本數據元素,權限被賦予角色,而不是用戶,當一個角色被指定給一個用戶時,此用戶就擁有了該角色所包含的權限。會話sessions是用戶與激活的角色集合之間的映射。RBAC0與傳統訪問控制的差異在於增長一層間接性帶來了靈活性,RBAC1RBAC2RBAC3都是前後在RBAC0上的擴展。 

          RBAC1 
引入角色間的繼承關係 

角色間的繼承關係可分爲通常繼承關係和受限繼承關係。通常繼承關係僅要求角色繼承關係是一個絕對偏序關係,容許角色間的多繼承。而受限繼承關係則進一步要求角色繼承關係是一個樹結構。 

          RBAC2 
模型中添加了責任分離關係 

RBAC2 
的約束規定了權限被賦予角色時,或角色被賦予用戶時,以及當用戶在某一時刻激活一個角色時所應遵循的強制性規則。責任分離包括靜態責任分離和動態責任分離。約束與用戶-角色-權限關係一塊兒決定了RBAC2模型中用戶的訪問許可。 

          RBAC3 
包含了RBAC1RBAC2 

既提供了角色間的繼承關係,又提供了責任分離關係。 

創建角色定義表。定出當前系統中角色。 

由於有繼承的問題,因此角色體現出的是一個樹形結構。 



2        
權限設計: 
 
配置資源以及資源的操做  這裏資源能夠定義爲一個通用的資源模型。提供通用的資源統一接口。 
 
數據庫 ER 圖: 



關係圖: 


 


3        
分析: 

根據以上的類關係圖和ER圖能夠看出。整個權限能夠抽象爲五個對象組成。 

OrgBean : 
用於描述org模型。 

Role 
 用於描述角色。 

Permission 
 用於描述權限。 

Resource 
 用於描述資源。 

Operation 
 用於描述操做。 

其中Permission中有Resource , Operation 的聚合,資源和操做組成權限。 

Role 
 Permission 都有自包含。由於設計到權限的繼承。 

資源Resource 也可能出現一顆樹形結構,那資源也要有自包含。 

思想 : 

權限系統的核心由如下三部分構成: 1. 創造權限, 2. 分配權限, 3. 使用權限,而後,系統各部分的主要參與者對照以下: 1. 創造權限 - Creator 創造, 2. 分配權限 - Administrator 分配, 3. 使用權限 - User  

1. Creator 
創造 Privilege  Creator 在設計和實現系統時會劃分,一個子系統或稱爲模塊,應該有哪些權限。這裏完成的是 Privilege  Resource 的對象聲明,並無真正將 Privilege 與具體 Resource 實例聯繫在一塊兒,造成 Operator  

2. Administrator 
指定 Privilege  Resource Instance 的關聯 。在這一步, 權限真正與資源實例聯繫到了一塊兒, 產生了 Operator  Privilege Instance )。 Administrator 利用 Operator 這個基本元素,來創造他理想中的權限模型。如,建立角色,建立用戶組,給用戶組分配用戶,將用戶組與角色關聯等等 ... 這些操做都是由 Administrator 來完成的。 

3. User 
使用 Administrator 分配給的權限去使用各個子系統。 Administrator 是用戶,在他的心目中有一個比較適合他管理和維護的權限模型。因而,程序員只要回答一個問題,就是什麼權限能夠訪問什麼資源,也就是前面說的 Operator 。程序員提供 Operator 就意味着給系統穿上了盔甲。 Administrator 就能夠按照他的意願來創建他所但願的權限框架 能夠自行增長,刪除,管理 Resource  Privilege 之間關係。能夠自行設定用戶 User 和角色 Role 的對應關係。 ( 若是將 Creator 看做是 Basic 的發明者, Administrator 就是 Basic 的使用者,他能夠作一些腳本式的編程 ) Operator 是這個系統中最關鍵的部分,它是一個紐帶,一個系在 Programmer  Administrator  User 之間的紐帶。 

4        
權限API 

   getPermissionByOrgGuid(String orgGuid ) 

      
經過傳入一個orgGuid  拿到當前這個org對象都具備那些訪問權限。 

 getSourcePermissionByOrgGuid(String orgGuid , String resouceGuid) 

    
經過傳入一個orgGuid  一個資源的Guid  返回改Org對當前這個資源的訪問權限。 

getPermissionByResourceGuid(String resource) 

    
經過傳入一個資源的Guid  獲得當前資源下都有那些權限定義。 

havingHeritPermission(String orgGuid , String resouceGuid) : Boolean 

    
傳入一個orgGuid 資源GUID ,查看改OrgGuid下對資源是否有向下繼承的權限。這裏繼承是資源的繼承。即對父欄目有權限,能夠繼承下去對父欄目下的子欄目一樣有權限。 

havingPermission(String orgGuid , String resourceGuid) : Boolean 

    
判斷某Org對某一資源是否用權限。 

以上是粗粒度的權限API  如下爲細粒度的權限: 

getOperationByPermission(String permissionGuid) 

    
經過permission Guid 獲得該permission 的全部有效操做。 

getOperationByGuid(String permissionGuid , String resourceGuid) 

    
經過permisionGuid  資源的Guid 獲得該資源下全部的有效操做。 

screeningOpreationByGuid (String permissionGuid , String resourceGuid , String orgGuid) 

    
經過permission  resource  orgGuid 獲得改Org對這一資源的有效操做。 

hasOperation(String operationGuid) : boolean 

    
經過傳入的operationGuid 返回是否具備操做權限。 

5        
權限的實現: 

.表單式認證,這是經常使用的,但用戶到達一個不被受權訪問的資源時, Web 容器就發 

出一個 html 頁面,要求輸入用戶名和密碼。 

.用 Filter 防止用戶訪問一些未被受權的資源, Filter 會截取全部 Request/Response  

而後放置一個驗證經過的標識在用戶的 Session 中,而後 Filter 每次依靠這個標識來決定是否放行 Response  

這個模式分爲: 

Gatekeeper 
:採起 Filter 或統一 Servlet 的方式。 

Authenticator 
  Web 中使用 JAAS 本身來實現。 

Filter 
攔截只是攔截該用戶是否有訪問這個頁面,或這一資源的權限。真正作到顯示後攔截是在應用程序內部去作。 

作顯示攔截提供API  標籤這兩種方式。
html

相關文章
相關標籤/搜索