http://blog.chinaunix.net/u/11262/showart_213703.html
http://wiki.springside.org.cn/display/springside/Acegi+Reference
RBAC初學(xué)筆記
什么是RBAC?
RBAC就是Role-Based Access Control,基于角色的訪問控制。角色訪問控制(RBAC)引入了Role的概念,目的是為了隔離User(即動作主體,Subject)與Privilege(權(quán)限,表示對Resource的一個操作,即Operation+Resource),更符合企業(yè)的用戶、組織、數(shù)據(jù)和應(yīng)用特征。
RBAC的關(guān)注點在于Role與user,Role與privilege的關(guān)系,也就是User Assignment與Permission Assignment的關(guān)系。
RBAC有以下優(yōu)點:
1、減少授權(quán)管理的復(fù)雜性,降低管理開銷
2、靈活的支持企業(yè)的安全策略,對企業(yè)的變化有很大的伸縮性
?
解決復(fù)雜的權(quán)限管理問題的過程可以抽象概括為:判斷【Who是否可以對What進行How的訪問操作(Operator)】這個邏輯表達式的值是否為True的求解過程。
RBAC中的幾個重要概念:
l???????? Who:權(quán)限的擁有者或主體。典型的有Principal、User、Group、Role、Actor等等。跟授權(quán)有關(guān)系的實體就只有角色(Role)和用戶(User)。譬如:業(yè)務(wù)經(jīng)理(Role),張三(User)
Role:作為一個用戶(User)與權(quán)限(Privilege)的代理層,解耦了權(quán)限和用戶的關(guān)系,所有的授權(quán)應(yīng)該給予Role而不是直接給User或Group。基于角色的訪問控制方法的思想就是把對用戶的授權(quán)分成兩部份,用角色來充當(dāng)用戶行駛權(quán)限的中介。角色是一組訪問權(quán)限的集合,一個用戶可以是很多角色的成員,一個角色也可以有很多個權(quán)限,而一個權(quán)限也可以重復(fù)配置于多個角色。
User:用戶就是一個可以獨立訪問計算機系統(tǒng)中的數(shù)據(jù)或者用數(shù)據(jù)表示的其它資源的主體,我們用USERS表示一個用戶集合。用戶在一般情況下是指人。
Group:是一組相關(guān)user的集合。User從group繼承出來,也就具有了該group的角色權(quán)限。
個人覺得可以這么認為,role是抽象化了的user或group。
l???????? What:權(quán)限針對的資源(Resource)(包括資源類別(the type of Resource)和資源實例(the instance of Resource))。譬如:報表。
粗粒度:表示類別級,即僅考慮對象的類別(the type of object),不考慮對象的某個特定實例。比如,用戶管理中,創(chuàng)建、刪除,對所有的用戶都一視同仁,并不區(qū)分操作的具體對象實例。
細粒度:表示實例級,即需要考慮具體對象的實例(the instance of object),當(dāng)然,細粒度是在考慮粗粒度的對象類別之后才再考慮特定實例。比如,合同管理中,列表、刪除,需要區(qū)分該合同實例是否為當(dāng)前用戶所創(chuàng)建。
l???????? How:亦作action,表示某種訪問方法(亦請參考Operator條目解釋)。譬如:刪除。
l? Operator:操作。表示施加于What的How動作。是一種Resource Related的概念,單獨的How動作是沒有實際意義的,譬如:刪除;只有與具體資源結(jié)合在一起才有意義,譬如:刪除報表。
下面的圖展示了user,group,role,how的關(guān)系
?
權(quán)限系統(tǒng)的核心由以下三部分構(gòu)成:
1.????? 創(chuàng)造權(quán)限
2.?????? 分配權(quán)限
3.?????? 使用權(quán)限
?
系統(tǒng)各部分的主要參與者對照如下:
1.創(chuàng)造權(quán)限 - Programer創(chuàng)造,
2.分配權(quán)限 - Administrator 分配,
3.使用權(quán)限– User
?
?
- Programer 向權(quán)限系統(tǒng)提供 Operator = Privilege + Resource
- Administrator 利用 Operator 這個基本元素,來創(chuàng)造他理想中的權(quán)限模型。
如,創(chuàng)建角色,創(chuàng)建用戶組,給用戶組分配用戶,將用戶組與角色關(guān)聯(lián)等等...
這些操作都是由 Administrator 來完成的. - User 使用 Administrator 分配給的權(quán)限去使用各個系統(tǒng)。
程序員只要回答一個問題,就是, 什么權(quán)限可以訪問什么資源,也就是前面說的 Operator。程序員提供 Operator 就意味著給系統(tǒng)穿上了盔甲。Administrator 就可以按照他的意愿來建立他所希望的權(quán)限框架。Operator是這個系統(tǒng)中最關(guān)鍵的部分,它是一個紐帶,一個系在Programmer,Administrator,User之間的紐帶。