RBAC權(quán)限管理模型:基本模型及角色模型解析及舉例

66 評(píng)論 137776 瀏覽 714 收藏 9 分鐘

站在巨人的肩膀上我們可以看得更遠(yuǎn),而不是再造一個(gè)輪子。

我們?cè)谧鋈魏我豢町a(chǎn)品的時(shí)候,或多或少都會(huì)涉及到用戶和權(quán)限的問題。譬如,做企業(yè)類軟件,不同部門、不同職位的人的權(quán)限是不同的;做論壇類產(chǎn)品的時(shí)候,版主和訪客權(quán)限也是不一樣的;再例如一款產(chǎn)品的收費(fèi)用戶和免費(fèi)用戶權(quán)限也是迥然不同的。

但在設(shè)計(jì)產(chǎn)品的用戶和權(quán)限的關(guān)系的時(shí)候,很多產(chǎn)品經(jīng)理可能按照感覺來,在并不清楚用戶和權(quán)限是否存在優(yōu)秀的理論模型的時(shí)候,就按照自我推理搭建了產(chǎn)品的用戶和權(quán)限模型。而這種基于感覺和推理的模型肯定是有諸多問題的,譬如寫死了關(guān)系導(dǎo)致權(quán)限不夠靈活、考慮不周導(dǎo)致權(quán)限覆蓋能力弱等等。

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

一、RBAC模型是什么?

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

1

二、基本模型RBAC0

解析:

RBAC0是基礎(chǔ),很多產(chǎn)品只需基于RBAC0就可以搭建權(quán)限模型了。在這個(gè)模型中,我們把權(quán)限賦予角色,再把角色賦予用戶。用戶和角色,角色和權(quán)限都是多對(duì)多的關(guān)系。用戶擁有的權(quán)限等于他所有的角色持有權(quán)限之和。

2

舉例:

譬如我們做一款企業(yè)管理產(chǎn)品,如果按傳統(tǒng)權(quán)限模型,給每一個(gè)用戶賦予權(quán)限則會(huì)非常麻煩,并且做不到批量修改用戶權(quán)限。這時(shí)候,可以抽象出幾個(gè)角色,譬如銷售經(jīng)理、財(cái)務(wù)經(jīng)理、市場(chǎng)經(jīng)理等,然后把權(quán)限分配給這些角色,再把角色賦予用戶。這樣無論是分配權(quán)限還是以后的修改權(quán)限,只需要修改用戶和角色的關(guān)系,或角色和權(quán)限的關(guān)系即可,更加靈活方便。此外,如果一個(gè)用戶有多個(gè)角色,譬如王先生既負(fù)責(zé)銷售部也負(fù)責(zé)市場(chǎng)部,那么可以給王先生賦予兩個(gè)角色,即銷售經(jīng)理+市場(chǎng)經(jīng)理,這樣他就擁有這兩個(gè)角色的所有權(quán)限。

三、角色分層模型RBAC1

解析:

RBAC1建立在RBAC0基礎(chǔ)之上,在角色中引入了繼承的概念。簡(jiǎn)單理解就是,給角色可以分成幾個(gè)等級(jí),每個(gè)等級(jí)權(quán)限不同,從而實(shí)現(xiàn)更細(xì)粒度的權(quán)限管理。

3

舉例:

基于之前RBAC0的例子,我們又發(fā)現(xiàn)一個(gè)公司的銷售經(jīng)理可能是分幾個(gè)等級(jí)的,譬如除了銷售經(jīng)理,還有銷售副經(jīng)理,而銷售副經(jīng)理只有銷售經(jīng)理的部分權(quán)限。這時(shí)候,我們就可以采用RBAC1的分級(jí)模型,把銷售經(jīng)理這個(gè)角色分成多個(gè)等級(jí),給銷售副經(jīng)理賦予較低的等級(jí)即可。

四、角色限制模型RBAC2

解析:

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

4

舉例:

還是基于之前RBAC0的例子,我們又發(fā)現(xiàn)有些角色之間是需要互斥的,譬如給一個(gè)用戶分配了銷售經(jīng)理的角色,就不能給他再賦予財(cái)務(wù)經(jīng)理的角色了,否則他即可以錄入合同又能自己審核合同;再譬如,有些公司對(duì)角色的升級(jí)十分看重,一個(gè)銷售員要想升級(jí)到銷售經(jīng)理,必須先升級(jí)到銷售主管,這時(shí)候就要采用先決條件限制了。

五、統(tǒng)一模型RBAC3

解析:

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

5

舉例:

這個(gè)就不舉例了,統(tǒng)一模型RBAC3可以解決上面三個(gè)例子的所有問題。當(dāng)然,只有在系統(tǒng)對(duì)權(quán)限要求非常復(fù)雜時(shí),才考慮使用此權(quán)限模型。

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

解析:

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

6

舉例:

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

七、最后的話

無論是本次的權(quán)限模型,還是其他產(chǎn)品相關(guān)實(shí)現(xiàn)方案,很多都已經(jīng)被前人所總結(jié)提煉,我們應(yīng)深度掌握這些成熟的知識(shí)和經(jīng)驗(yàn),而不是絞盡腦汁自我推理。還是文章開頭那句話,站在巨人的肩膀上我們可以看得更遠(yuǎn),而不是再造一個(gè)輪子。

 

作者:Monster,小滿科技產(chǎn)品經(jīng)理,公眾號(hào):PM怪物Monster

本文由 @Monster 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 公眾號(hào)搜不到了

    來自北京 回復(fù)
  2. 看過好幾個(gè)RBAC模型,這個(gè)講的最好,沒有之一

    來自廣東 回復(fù)