RBAC 模型初探

訪問控制背景

    訪問控制技術是由美國國防部(Department of Defense, DoD)資助的研究和開發成果演變而來的。這一研究導致兩種基本類型訪問控制的產生:自主訪問控制(Discretionary Access Control, DAC)和強制訪問控制(Mandatory Access Control, MAC)。最初的研究和應用主要是爲了防止機密信息被未經授權者訪問,近期的應用主要是把這些策略應用到爲商業領域。

    自主訪問控制,允許把訪問控制權的授予和取消留給個體用戶來判斷。爲沒有訪問控制權的個體用戶授予和廢除許可。自主訪問控制機制允許用戶被授權和
取消訪問其控制之下的任何客體(object),換句話說,用戶就是他們控制下的客體的擁有者。然而,對於多數組織來說,最終用戶對所訪問的信息沒有擁有權。對於這些組織,公司或代理機構是事實上的系統客體和處理他們的程序的擁有者。訪問優先權受組織控制,而且也常常基於僱員功能而不是數據所有權。

   強制訪問控制,在美國國防部 Trusted Computer Security Evaluation Criteria (TCSEC) 中定義如下:“一種限制訪問客體的手段,它以包含在這些客體中的信息敏感性和訪問這些敏感性信息的主體的正式授權信息(如清除)爲基礎”。
  
   以上訪問控制策略對於處理一些無需保密但又敏感的信息的政府和行業組織的需求並不是特別的適合。在這樣的環境下,安全目標支持產生於現有法律、道德規範、規章、或一般慣例的高端組織策略。這些環境通常需要控制個體行爲的能力,而不僅僅是如何根據信息的敏感性爲其設置標籤從而訪問這一信息的個人能力。
    


什麼是基於角色訪問控制(Role-Based Access Control, RBAC)?NIST 有如下定義。
  
   訪問是一種利用計算機資源去做某件事情的的能力,訪問控制是一種手段,通過它這種能力在某些情況下被允許或者受限制(通常是通過物理上和基於系統的控制)。基於計算機的訪問控制不僅可規定是“誰”或某個操作有權使用特定系統資源,而且也能規定被允許的訪問類型。這些控制方式可在計算機系統或者外部設備中實現。
  
    就基於角色訪問控制而言,訪問決策是基於角色的,個體用戶是某個組織的一部分。用戶具有指派的角色(比如醫生、護士、出納、經理)。定義角色的過程應該基於對組織運轉的徹底分析,應該包括來自一個組織中更廣範圍用戶的輸入。
   
    訪問權按角色名分組,資源的使用受限於授權給假定關聯角色的個體。例如,在一個醫院系統中,醫生角色可能包括進行診斷、開據處方、指示實驗室化驗等;而研究員的角色則被限制在收集用於研究的匿名臨牀信息工作上。
   
    控制訪問角色的運用可能是一種開發和加強企業特殊安全策略,進行安全管理過程流程化的有效手段。
     


用戶(User)和角色(Role)

    用戶指訪問系統中的資源的主體,一般爲人,也可爲 Agent 等智能程序。角色指應用領域內一種權力和責任的語義綜合體,可以是一個抽象概念,也可以是對應於實際系統中的特定語義體,比如組織內部的職務等。針對角色屬性的不同,某些模型中將角色進一步細分爲普通角色和管理員角色(可理解爲全局角色)。

 

許可(Permissions)和權限(Permission)

    許可描述了角色對計算機資源的訪問和操作所具有的權限,其反映的是授權的結果。比如授予某個角色對計算機資源有讀的權限,則代表了一個許可的存在,這個許可表示:角色獲取了對計算機資源的讀許可。針對操作來說,其描述的是許可和操作之間的一種關聯關係,而這層關係則表示了某一角色對某一操作所具有的權限及權限狀態。


     
角色和指派(Assignment)

    指派包含兩個方面,用戶指派和許可指派。用戶指派表示的是,將用戶指派給特定的角色。許可指派表示的是爲角色指派計算機資源的訪問和操作許可。

 

會話(session)

    會話表示的是用戶和角色之間的關係。用戶每次必須通過建立會話來激活角色,得到相應的訪問權限。

 

角色和角色等級(Role Hierarchies)

    角色本身僅僅只是一個名詞,其本身並不能代表權限的大小。比如,我們可以定一個“Director”的角色,也可以定一個“Project Leader”的角色。對於現實中我們來說,看到這樣兩個角色,就清楚 DIR 的權限要比一個 PL 的權限級別高。但是對計算機來說,這兩個角色僅僅是兩個“詞語”,是等同的。可以採用分等級角色,在角色上實現層次化來解決這些問題。也可以採用複合角色(其表示的就是一個角色組的概念),對角色實現一定的分組和複合,以便於權限指派。在一些 OA 產品中經常出現分等級角色。
   


限制(Constraints)
   
    模型中的職責分離關係(Separation of Duty),用於控制衝突(Conflict)。靜態職責分離(Static SD)指定角色的互斥關係,用於用戶指派階段。避免同一用戶擁有互斥的角色。實現簡單,角色互斥語義關係清楚,便於管理不夠靈活,不能處理某些實際情況。動態職責分離(Dynamic SD)指定角色的互斥關係,用於角色激活階段。允許同一用戶擁有某些互斥的角色,但是不允許該用戶同時激活互斥的角色。更靈活,直接與會話掛鉤,適應實際管理需要,實現複雜,不易管理。

              

 

 

參考文獻

《AN INTRODUCTION TO ROLE-BASED ACCESS CONTROL》 NIST

《工作流授權控制模型》        胡長城

《基於角色的權限管理綜述》 俞詩鵬

 

 

最後,感謝宏雲博士對本文翻譯提供的指導。   


請注意!引用、轉貼本文應註明原作者:Rosen Jiang 以及出處:http://www.blogjava.net/rosen

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章