RBAC權限管理模型:基本模型及角色模型解析及舉例


我們在做任何一款產品的時候,或多或少都會涉及到用戶和權限的問題。譬如,做企業類軟件,不同部門、不同職位的人的權限是不同的;做論壇類產品的時候,版主和訪客權限也是不一樣的;再例如一款產品的收費用戶和免費用戶權限也是迥然不同的。

但在設計產品的用戶和權限的關系的時候,很多產品經理可能按照感覺來,在並不清楚用戶和權限是否存在優秀的理論模型的時候,就按照自我推理搭建了產品的用戶和權限模型。而這種基於感覺和推理的模型肯定是有諸多問題的,譬如寫死了關系導致權限不夠靈活、考慮不周導致權限覆蓋能力弱等等。

正如牛頓所言,站在巨人的肩膀上才能看的更遠。我們不妨去參照已有的比較成熟的權限模型,如:RBAC(Role-Based Access Control)——基於角色的訪問控制。我搜集了網上很多關於RBAC的資料,大多與如何用數據表實現RBCA相關,並不容易理解。所以,我會以產品經理的角度去解析RBAC模型,並分別舉例如何運用這套已得到驗證的成熟模型。

一、RBAC模型是什么?

RBAC是一套成熟的權限模型。在傳統權限模型中,我們直接把權限賦予用戶。而在RBAC中,增加了“角色”的概念,我們首先把權限賦予角色,再把角色賦予用戶。這樣,由於增加了角色,授權會更加靈活方便。在RBAC中,根據權限的復雜程度,又可分為RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基礎,RBAC1、RBAC2、RBAC3都是以RBAC0為基礎的升級。我們可以根據自家產品權限的復雜程度,選取適合的權限模型。

1

二、基本模型RBAC0

解析:

RBAC0是基礎,很多產品只需基於RBAC0就可以搭建權限模型了。在這個模型中,我們把權限賦予角色,再把角色賦予用戶。用戶和角色,角色和權限都是多對多的關系。用戶擁有的權限等於他所有的角色持有權限之和。

2

舉例:

譬如我們做一款企業管理產品,如果按傳統權限模型,給每一個用戶賦予權限則會非常麻煩,並且做不到批量修改用戶權限。這時候,可以抽象出幾個角色,譬如銷售經理、財務經理、市場經理等,然后把權限分配給這些角色,再把角色賦予用戶。這樣無論是分配權限還是以后的修改權限,只需要修改用戶和角色的關系,或角色和權限的關系即可,更加靈活方便。此外,如果一個用戶有多個角色,譬如王先生既負責銷售部也負責市場部,那么可以給王先生賦予兩個角色,即銷售經理+市場經理,這樣他就擁有這兩個角色的所有權限。

三、角色分層模型RBAC1

解析:

RBAC1建立在RBAC0基礎之上,在角色中引入了繼承的概念。簡單理解就是,給角色可以分成幾個等級,每個等級權限不同,從而實現更細粒度的權限管理。

3

舉例:

基於之前RBAC0的例子,我們又發現一個公司的銷售經理可能是分幾個等級的,譬如除了銷售經理,還有銷售副經理,而銷售副經理只有銷售經理的部分權限。這時候,我們就可以采用RBAC1的分級模型,把銷售經理這個角色分成多個等級,給銷售副經理賦予較低的等級即可。

四、角色限制模型RBAC2

解析:

RBAC2同樣建立在RBAC0基礎之上,僅是對用戶、角色和權限三者之間增加了一些限制。這些限制可以分成兩類,即靜態職責分離SSD(Static Separation of Duty)和動態職責分離DSD(Dynamic Separation of Duty)。具體限制如下圖:

4

舉例:

還是基於之前RBAC0的例子,我們又發現有些角色之間是需要互斥的,譬如給一個用戶分配了銷售經理的角色,就不能給他再賦予財務經理的角色了,否則他即可以錄入合同又能自己審核合同;再譬如,有些公司對角色的升級十分看重,一個銷售員要想升級到銷售經理,必須先升級到銷售主管,這時候就要采用先決條件限制了。

五、統一模型RBAC3

解析:

RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分層,也包括可以增加各種限制。

5

舉例:

這個就不舉例了,統一模型RBAC3可以解決上面三個例子的所有問題。當然,只有在系統對權限要求非常復雜時,才考慮使用此權限模型。

六、基於RBAC的延展——用戶組

解析:

基於RBAC模型,還可以適當延展,使其更適合我們的產品。譬如增加用戶組概念,直接給用戶組分配角色,再把用戶加入用戶組。這樣用戶除了擁有自身的權限外,還擁有了所屬用戶組的所有權限。

6

舉例:

譬如,我們可以把一個部門看成一個用戶組,如銷售部,財務部,再給這個部門直接賦予角色,使部門擁有部門權限,這樣這個部門的所有用戶都有了部門權限。用戶組概念可以更方便的給群體用戶授權,且不影響用戶本來就擁有的角色權限。

轉載於:http://www.woshipm.com/pd/440765.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM