#產(chǎn)品小記 ?RBAC權(quán)限管理模型
對(duì)于B端產(chǎn)品,多數(shù)會(huì)遇見權(quán)限管理問題。比如,不同部門、不同職位的人權(quán)限是不同的。今天學(xué)習(xí)了一個(gè)RBAC權(quán)限管理模型,在設(shè)計(jì)產(chǎn)品的權(quán)限時(shí)可以方便套用。
RBAC(Role-Based Access Control)——是基于角色的訪問控制。這是一套成熟的權(quán)限模型。在RBAC中,增加了“角色”的概念,根據(jù)權(quán)限的復(fù)雜程度又分為RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基礎(chǔ),RBAC1、RBAC2、RBAC3都是以RBAC0為基礎(chǔ)的升級(jí)。
1.RBAC0.?
這屬于基礎(chǔ)模型,在這個(gè)模型中,我們把權(quán)限賦予角色,再把角色賦予用戶。用戶和角色,角色和權(quán)限都是多對(duì)多的關(guān)系。用戶擁有的權(quán)限等于他所有的角色持有權(quán)限之和。

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

3.角色限制模型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.統(tǒng)一模型RBAC3。
RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分層,也包括可以增加各種限制。
5.基于RBAC的延展——用戶組。
基于RBAC模型,還可以適當(dāng)延展,使其更適合我們的產(chǎn)品。譬如增加用戶組概念,直接給用戶組分配角色,再把用戶加入用戶組。這樣用戶除了擁有自身的權(quán)限外,還擁有了所屬用戶組的所有權(quán)限。

我們可以把一個(gè)部門看成一個(gè)用戶組,如銷售部,財(cái)務(wù)部,再給這個(gè)部門直接賦予角色,使部門擁有部門權(quán)限,這樣這個(gè)部門的所有用戶都有了部門權(quán)限。用戶組概念可以更方便的給群體用戶授權(quán),且不影響用戶本來(lái)就擁有的角色權(quán)限。
做產(chǎn)品不需要重復(fù)造輪子,更多時(shí)候是成熟經(jīng)驗(yàn)的繼承。這就需要在平時(shí)多體驗(yàn)、多學(xué)習(xí),只有積累夠了,才能做到信手拈來(lái)。