【超詳細】B端角色權限設計:RBAC模型解析&應用舉例

做B端產(chǎn)品售躁,權限是無法躲過的一類問題坞淮。比如,企業(yè)類軟件陪捷,不同部門碾盐、不同職位的人的權限是不同的;再例如揩局,一款軟件毫玖,不同付費層級的用戶,所使用的權限也是迥然不同的凌盯。

一付枫、權限

1.什么是權限

權限是基于實際業(yè)務的需要,設計的一套系統(tǒng)使用關系驰怎。沒有固定的方法阐滩,每個公司可能都是不一樣的。權限分為:頁面權限县忌、操作權限掂榔、數(shù)據(jù)權限。

頁面權限:誰可以訪問頁面症杏。例如装获,財務可以訪問財務報表,而銷售不可訪問財務報表頁面厉颤;

操作權限:誰可以操作數(shù)據(jù)穴豫。例如:老板和財務都可以訪問財務報表,但是財務可以增刪查改逼友,但是老板只能看精肃,不可以改;

數(shù)據(jù)權限:誰可以看哪個范圍的數(shù)據(jù)帜乞。例如:銷售一分部的老板只能看銷售一分部的數(shù)據(jù)司抱,公司的老板可以看整個公司的數(shù)據(jù);


2.遇到的問題

網(wǎng)上很多關于RBAC的資料黎烈,大多與如何用數(shù)據(jù)表實現(xiàn)RBCA相關习柠,并不容易理解。很多人看了很多文章來描述權限怨喘、RBAC等等津畸,看了很多,還是搞不清楚權限和RBAC的關系必怜;或者看了RBAC也不知道如何去使用;在實際設計中后频,往往根據(jù)自我感覺就搭建了用戶和權限模型梳庆。自己想的模型可能會導致很多問題暖途,例如權限管理不夠靈活,權限覆蓋能力弱膏执,甚至操作混亂等驻售。

3.解決方法

實際上,已經(jīng)有成熟的RBAC模型可直接應用于權限設計更米,我們無需自己拍腦袋設置用戶權限模型欺栗,正如牛頓所言,站在巨人的肩膀上才能看的更遠征峦。我們不妨去參照已有的比較成熟的權限模型RBAC(Role-Based Access Control)——基于角色的訪問控制迟几。我會以產(chǎn)品經(jīng)理的角度去解析RBAC模型,并分別舉例如何運用這套已得到驗證的成熟模型栏笆。

二类腮、RBAC模型

1.傳統(tǒng)權限模型

在沒有RBAC前,傳統(tǒng)權限模型通過賬號直接配置權限蛉加。每一個賬號都需要勾選賬號對應的每一個權限蚜枢,如下圖≌爰ⅲ可見非常繁瑣厂抽,維護起來非常麻煩。

2.RBAC概念

RBAC增加了“角色”的概念丁眼,我們首先把權限賦予角色修肠,再把角色賦予用戶。這樣户盯,由于增加了角色嵌施,授權會更加靈活方便。在RBAC中莽鸭,根據(jù)權限的復雜程度吗伤,又可分為RBAC0、RBAC1硫眨、RBAC2足淆、RBAC3,RBAC4礁阁。其中巧号,RBAC0是基礎,RBAC1姥闭、RBAC2丹鸿、RBAC3、RBAC4都是以RBAC0為基礎的升級棚品。我們可以根據(jù)自家產(chǎn)品權限的復雜程度靠欢,選取適合的權限模型廊敌。

3.RBAC0:基本模型

解析:RBAC0是RBAC模型中最基本的模型,很多產(chǎn)品只需基于RBAC0就可以搭建權限模型了门怪。用戶與角色可為多對一或多對多的關系骡澈,當一個用戶的角色為多對多時,當前用戶的權限是多個角色的并集掷空。


舉例:譬如我們做一款企業(yè)管理產(chǎn)品肋殴,如果按傳統(tǒng)權限模型,給每一個用戶賦予權限則會非常麻煩坦弟,并且做不到批量修改用戶權限护锤。這時候,可以抽象出幾個角色减拭,譬如銷售經(jīng)理蔽豺、財務經(jīng)理、市場經(jīng)理等拧粪,然后把權限分配給這些角色修陡,再把角色賦予用戶。這樣無論是分配權限還是以后的修改權限可霎,只需要修改用戶和角色的關系魄鸦,或角色和權限的關系即可,更加靈活方便癣朗。此外拾因,如果一個用戶有多個角色,譬如王先生既負責銷售部也負責市場部旷余,那么可以給王先生賦予兩個角色绢记,即銷售經(jīng)理+市場經(jīng)理,這樣他就擁有這兩個角色的所有權限正卧。

4.RABC1:用戶組/權限組模型

解析:在RABC0的基礎上蠢熄,加入了用戶組的概念。賬號既可以通過角色來配置權限炉旷,也可以通過用戶組來配置權限签孔。這樣做的好處是,若存在多個角色具有統(tǒng)一的權限窘行,無需對每一個角色的共同權限進行配置饥追。僅需將共同權限配置在用戶組,使賬號歸屬于用戶組即可罐盔;(此級別但绕,也可同時存在權限組,類似于用戶組翘骂,這里就不細講了)

一個賬號可以既存在用戶組也存在角色壁熄,權限范圍為其的并集帚豪;

舉例:會計碳竟、出納草丧、公司老板均可以查看公司的財務報表,但是操作不同莹桅,會計審核昌执,出納付款,老板僅查看诈泼;此時只需要抽象出一個報表查看用戶組懂拾,用戶組配置所需查看的報表,再將會計铐达、出納岖赋、公司老板都加入用戶組;這樣瓮孙,加入用戶組的用戶都可以查看報表唐断;再將會計和出納角色配置單獨的操作權限,一并賦予杭抠,這樣會計和出納就既擁有了用戶組的權限(可查看報表)脸甘,以及獨特的操作權限(審核/付款)

5.RBAC2:角色繼承模型

解析:角色繼承,講一個角色分為多個級別偏灿,高級別的角色可繼承低級別角色的權限丹诀,上層角色繼承下層角色的全部權限,且可額外賦予權限翁垂。


舉例:

基于之前RBAC0的例子铆遭,我們又發(fā)現(xiàn)一個公司的財務經(jīng)理可能是分三個等級的,財務經(jīng)理沿猜、財務組長枚荣、財務員工。財務組長只有財務經(jīng)理的部分權限邢疙。這時候棍弄,我們就可以采用RBAC1的分級模型,把財務這個角色分成多個等級疟游,給財務組長賦予較低的等級即可呼畸。

6.RBAC3:角色限制模型

解析:角色限制的RBAC模型,指的是當用戶可以存在多個角色時颁虐,多個角色質(zhì)檢存在限制條件蛮原。例如,一個人不能既是裁判另绩,又是運動員儒陨;這些限制可以分成兩類花嘶,即靜態(tài)職責分離SSD(Static Separation of Duty)和動態(tài)職責分離DSD(Dynamic Separation of Duty)。

舉例:

基于之前RBAC0的例子蹦漠,我們又發(fā)現(xiàn)有些角色之間是需要互斥的椭员,譬如給一個用戶分配了財務經(jīng)理的角色,就不能給他再賦予審計經(jīng)理的角色了笛园,否則他即可以錄入賬單又能自己審核賬單隘击;再譬如,有些公司對角色的升級十分看重研铆,一個財務員工要想升級到財務經(jīng)理埋同,必須先升級到財務主管,這時候就要采用先決條件限制了棵红。

7.RBAC4:統(tǒng)一模型

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

舉例:

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

8.擴展案例

①公司架構如圖错敢,共有三種職能:前沿銷售翰灾、前臺、銷售稚茅、老板纸淮,各職能角色分別如上圖。前沿銷售需要查看和操作客戶列表亚享、訂單列表咽块,銷售需要查看和操作客戶列表、訂單列表欺税,前臺需要查看和操作客戶列表侈沪,老板需查看所有的頁面,但不可操作晚凿。

②權限說明:

1.頁面權限:前沿銷售——客戶列表亭罪、訂單列表;銷售員工——客戶列表歼秽、訂單列表应役;銷售主管——客戶列表、訂單列表、銷售報表箩祥;前臺——客戶列表院崇;老板——所有頁面;

2.操作權限:前沿銷售——客戶列表(新增袍祖、刪除)底瓣、訂單列表(新增);銷售員工——客戶列表(新增盲泛、刪除)濒持、訂單列表(新增)键耕;銷售主管——客戶列表(新增寺滚、刪除)、訂單列表(新增)屈雄、銷售報表(導出)村视;前臺——客戶列表(新增);老板——所有頁面(無)酒奶;

3.數(shù)據(jù)權限:前沿銷售——客戶列表(本人)蚁孔、訂單列表(本人);銷售員工——客戶列表(本人)惋嚎、訂單列表(本人)杠氢;銷售主管——客戶列表(本人及本人下屬)、訂單列表(本人及本人下屬)另伍、銷售報表(本人及本人下屬)鼻百;前臺——客戶列表(本人);老板——所有頁面(全部)摆尝;

③運用RBAC0

1.頁面&操作權限:新建角色温艇,勾選對應的頁面以及操作

2.數(shù)據(jù)權限:新建數(shù)據(jù)權限,勾選對應查看數(shù)據(jù)的范圍


但此時不要忘記木人,系統(tǒng)當前對賬號之間的關系并不清楚窥岩,也就是系統(tǒng)并不知道賬號的上下級關系迫吐;所以數(shù)據(jù)權限還需要搭配部門上下級的功能。


這樣系統(tǒng)就知道琐鲁,賬號所處的部門,也就可以配置銷售主管查看下屬的數(shù)據(jù)了人灼,如下围段;

此時,該賬號已具備挡毅,1.查看本人及下屬的數(shù)據(jù)權限? 2.查看客戶列表蒜撮、操作客戶列表的功能

9.最后的話

無論是本次的權限模型,還是其他產(chǎn)品相關實現(xiàn)方案,很多都已經(jīng)被前人所總結提煉段磨,我們應深度掌握這些成熟的知識和經(jīng)驗取逾,而不是絞盡腦汁自我推理。我們只需要使用輪子苹支,不需要自己創(chuàng)造輪子砾隅。(本文部分借鑒其他文章,如有雷同债蜜,是我抄你【偷懶了晴埂,還請諒解】)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市寻定,隨后出現(xiàn)的幾起案子儒洛,更是在濱河造成了極大的恐慌,老刑警劉巖狼速,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琅锻,死亡現(xiàn)場離奇詭異,居然都是意外死亡向胡,警方通過查閱死者的電腦和手機恼蓬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來僵芹,“玉大人处硬,你說我怎么就攤上這事∧磁桑” “怎么了荷辕?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長攀痊。 經(jīng)常有香客問我桐腌,道長,這世上最難降的妖魔是什么苟径? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任案站,我火速辦了婚禮,結果婚禮上棘街,老公的妹妹穿的比我還像新娘蟆盐。我一直安慰自己,他們只是感情好遭殉,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布石挂。 她就那樣靜靜地躺著,像睡著了一般险污。 火紅的嫁衣襯著肌膚如雪痹愚。 梳的紋絲不亂的頭發(fā)上富岳,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音拯腮,去河邊找鬼窖式。 笑死,一個胖子當著我的面吹牛动壤,可吹牛的內(nèi)容都是我干的萝喘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼琼懊,長吁一口氣:“原來是場噩夢啊……” “哼阁簸!你這毒婦竟也來了?” 一聲冷哼從身側響起哼丈,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤启妹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后削祈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翅溺,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年髓抑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片优幸。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡吨拍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出网杆,到底是詐尸還是另有隱情羹饰,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布碳却,位于F島的核電站队秩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昼浦。R本人自食惡果不足惜馍资,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望关噪。 院中可真熱鬧鸟蟹,春花似錦、人聲如沸使兔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虐沥。三九已至熊经,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镐依。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工悉盆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馋吗。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓焕盟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宏粤。 傳聞我的和親對象是個殘疾皇子脚翘,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359