程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 關於Java角色訪問控制(RBAC)

關於Java角色訪問控制(RBAC)

編輯:關於JAVA

角色訪問控制(RBAC)引入了Role的概念,目的是為了隔離User(即動作主體,Subject)與Privilege(權限,表示對Resource的一個操作,即Operation+Resource)。

Role作為一個用戶(User)與權限(Privilege)的代理層,解耦了權限和用戶的關系,所有的授權應該給予Role而不是直接給User或Group.Privilege是權限顆粒,由Operation和Resource組成,表示對Resource的一個Operation.例如,對於新聞的刪除操作。Role-Privilege是many-to-many的關系,這就是權限的核心。

基於角色的訪問控制方法(RBAC)的顯著的兩大特征是:1.由於角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多,減小了授權管理的復雜性,降低管理開銷。2.靈活地支持企業的安全策略,並對企業的變化有很大的伸縮性。

RBAC基本概念:

RBAC認為權限授權實際上是Who、What、How的問題。在RBAC模型中,who、what、how構成了訪問權限三元組,也就是“Who對What(Which)進行How的操作”。

Who:權限的擁用者或主體(如Principal、User、Group、Role、Actor等等)

What:權限針對的對象或資源(Resource、Class)。

How:具體的權限(Privilege,正向授權與負向授權)。

Operator:操作。表明對What的How操作。也就是Privilege+Resource

Role:角色,一定數量的權限的集合。權限分配的單位與載體,目的是隔離User與Privilege的邏輯關系。

Group:用戶組,權限分配的單位與載體。權限不考慮分配給特定的用戶而給組。組可以包括組(以實現權限的繼承),也可以包含用戶,組內用戶繼承組的權限。User與Group是多對多的關系。Group可以層次化,以滿足不同層級權限控制的要求。

RBAC的關注點在於Role和User, Permission的關系。稱為User assignment(UA)和Permission assignment(PA)。關系的左右兩邊都是Many-to-Many關系。就是user可以有多個role,role可以包括多個user.

凡是用過RDBMS都知道,n:m 的關系需要一個中間表來保存兩個表的關系。這UA和PA就相當於中間表。事實上,整個RBAC都是基於關系模型。

Session在RBAC中是比較隱晦的一個元素。標准上說:每個Session是一個映射,一個用戶到多個role的映射。當一個用戶激活他所有角色的一個子集的時候,建立一個session.每個Session和單個的user關聯,並且每個User可以關聯到一或多個Session.

在RBAC系統中,User實際上是在扮演角色(Role),可以用Actor來取代User,這個想法來自於Business Modeling With UML一書Actor-Role模式。考慮到多人可以有相同權限,RBAC引入了Group的概念。Group同樣也看作是Actor.而User的概念就具象到一個人。

這裡的Group和GBAC(Group-Based Access Control)中的Group(組)不同。GBAC多用於操作系統中。其中的Group直接和權限相關聯,實際上RBAC也借鑒了一些GBAC的概念。

Group和User都和組織機構有關,但不是組織機構。二者在概念上是不同的。組織機構是物理存在的公司結構的抽象模型,包括部門,人,職位等等,而權限模型是對抽象概念描述。組織結構一般用Martin fowler的Party或責任模式來建模。

Party模式中的Person和User的關系,是每個Person可以對應到一個User,但可能不是所有的User都有對應的Person.Party中的部門Department或組織Organization,都可以對應到Group.反之Group未必對應一個實際的機構。例如,可以有副經理這個Group,這是多人有相同職責。

引入Group這個概念,除了用來解決多人相同角色問題外,還用以解決組織機構的另一種授權問題:例如,A部門的新聞我希望所有的A部門的人都能看。有了這樣一個A部門對應的Group,就可直接授權給這個Group.

Role作為一個用戶(User)與權限(Privilege)的代理層,解耦了權限和用戶的關系,所有的授權應該給予Role而不是直接給User或Group.Privilege是權限顆粒,由Operation和Resource組成,表示對Resource的一個Operation.例如,對於新聞的刪除操作。Role-Privilege是many-to-many的關系,這就是權限的核心。

基於角色的訪問控制方法(RBAC)的顯著的兩大特征是:1.由於角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多,減小了授權管理的復雜性,降低管理開銷。2.靈活地支持企業的安全策略,並對企業的變化有很大的伸縮性。

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