這是《后臺(tái)產(chǎn)品設(shè)計(jì)指南》系列文章的第4篇內(nèi)容,更多精彩可以點(diǎn)擊下方鏈接查看蒂窒。
隨著系統(tǒng)用戶的增多膀估,如何科學(xué)高效地管理用戶權(quán)限是平臺(tái)管理員必須考慮的問題。本文會(huì)和大家介紹一下權(quán)限系統(tǒng)的產(chǎn)品設(shè)計(jì)耻讽。
RBAC
RBAC(基于角色的權(quán)限控制)模型是為了解決系統(tǒng)中的權(quán)限管理問題察纯。在用戶和權(quán)限基礎(chǔ)上引入了角色這個(gè)概念,這樣通過對(duì)角色的管理極大程度地降低了用戶和權(quán)限之間的耦合针肥。
需要說明的是RBAC只是權(quán)限模型的一種饼记,相對(duì)比較成熟所以使用比較廣泛。其他的權(quán)限模型也是可以使用的慰枕,比如ACL訪問權(quán)限列表具则、ABAC基于屬性的權(quán)限控制、PBAC基于策略的權(quán)限控制具帮、Auth基于節(jié)點(diǎn)的權(quán)限管理系統(tǒng)博肋。
權(quán)限的分類
1.菜單
菜單是最頂級(jí)的分類,在復(fù)雜的系統(tǒng)中菜單經(jīng)常是多級(jí)的蜂厅,比如二級(jí)匪凡、三級(jí),在菜單層面進(jìn)行限制是最直接的掘猿。
一些簡單的系統(tǒng)中使用不到RBAC病游,經(jīng)常是在配置文件直接指定角色的菜單,而不需要開發(fā)完善的后臺(tái)管理界面稠通。
2.頁面
在成熟的系統(tǒng)中衬衬,菜單下面往往有多個(gè)頁面,比如運(yùn)營管理這個(gè)大模塊下面可能包含了banner管理改橘,插屏管理滋尉,開屏廣告管理等等。每個(gè)人需要使用的頁面不一定一樣唧龄,這樣就需要對(duì)頁面進(jìn)行設(shè)置兼砖。
3.頁面元素
頁面中的元素可以是添加按鈕,保存按鈕既棺,導(dǎo)出按鈕等等讽挟。有些人在頁面中沒有添加權(quán)限,這個(gè)時(shí)候可以屏蔽掉添加按鈕這個(gè)頁面元素丸冕。
4.數(shù)據(jù)
數(shù)據(jù)層面的理解相對(duì)復(fù)雜一點(diǎn)耽梅。這里列舉2個(gè)例子說明一下。第一胖烛,銷售總監(jiān)需要看到多個(gè)銷售主管的數(shù)據(jù)眼姐,銷售主管只能看到下面銷售的數(shù)據(jù)诅迷,銷售只能看到自己的數(shù)據(jù)。第二众旗,房產(chǎn)頻道小編只能看到該頻道的資訊文章罢杉,而財(cái)經(jīng)商業(yè)頻道的小編能看到財(cái)經(jīng)商業(yè)的資訊文章,總編則能看到全部頻道的下的內(nèi)容贡歧。數(shù)據(jù)權(quán)限一般需要根據(jù)城市滩租、部門等多因素來進(jìn)行設(shè)計(jì)。
數(shù)據(jù)范圍的限定包括前端和后端兩種模式利朵,僅從前端限制是不夠的律想,還需要在數(shù)接口上做限制,保證安全性绍弟。
RBAC分類
1.基本模型RBAC0
最基礎(chǔ)的類型技即,用戶與角色,角色與權(quán)限之間都是多對(duì)多關(guān)系樟遣。絕大多數(shù)后臺(tái)系統(tǒng)的權(quán)限系統(tǒng)是屬于這個(gè)類型而叼。
2.角色分層模型RBAC1
簡單來說,就是把角色再劃分等級(jí)年碘,每個(gè)等級(jí)劃分不同的權(quán)限澈歉。角色之間有了上下級(jí)的關(guān)系,可以繼承角色的權(quán)限屿衅。比如銷售總監(jiān)-銷售主管-銷售這個(gè)結(jié)構(gòu)就可以使用RBAC1模型埃难。
3.角色限制模型RBAC2
相當(dāng)于在RBAC基礎(chǔ)上增加了一些約束條件。主要有以下三個(gè)方面:
角色互斥約束:是指在系統(tǒng)運(yùn)行中涤久,只可以同時(shí)激活運(yùn)行時(shí)互斥角色集合中的一個(gè)角色涡尘。比如財(cái)務(wù)系統(tǒng)中一個(gè)人不能同時(shí)是會(huì)計(jì)和出納。
角色基數(shù)約束:是限制某一個(gè)用戶最多被分配或者激活的角色數(shù)目响迂,或者限制某一個(gè)角色最多被賦予的權(quán)限數(shù)目考抄。比如OA系統(tǒng)中的管理員數(shù)是有上限的。
先決條件角色約束:是指某些用戶只有在己經(jīng)擁有特定角色的前提下蔗彤,才能被分配到某種角色川梅,或者某種角色只有在已經(jīng)被分配到特定權(quán)限的前提下,才能被賦予某些權(quán)限然遏。比如前面提到的OA管理員必須是有總監(jiān)以上級(jí)別角色的前提下贫途,才能被設(shè)置為管理員。
4.統(tǒng)一模型RBAC3
RBAC3其實(shí)就是前面幾種情況的合集待侵,既有角色分層丢早,也包括可以增加各種限制,一般只有在非常復(fù)雜的系統(tǒng)中才會(huì)用到。
RBAC注意事項(xiàng)
無權(quán)限場景
不同用戶具備的權(quán)限是不一樣的怨酝,用戶A復(fù)制鏈接給用戶B傀缩,如果用戶B沒有權(quán)限,應(yīng)該進(jìn)入統(tǒng)一的缺少權(quán)限提示頁面农猬,這個(gè)頁面和404是不一樣的赡艰。前者表示用戶缺少對(duì)于權(quán)限,后者表示頁面出現(xiàn)錯(cuò)誤斤葱。
用戶組
隨著用戶角色的增加瞄摊,將用戶與角色匹配這個(gè)步驟很多時(shí)候是重復(fù)的,而大多數(shù)崗位的角色是固定的苦掘,特殊的人再特殊管理即可。這時(shí)候可以通過增加用戶組的概念楔壤,進(jìn)一步進(jìn)行解耦鹤啡,這樣即符合用戶的實(shí)際場景,也便于在數(shù)據(jù)層面做權(quán)限控制蹲嚣。?
權(quán)限系統(tǒng)對(duì)于后臺(tái)產(chǎn)品非常重要递瑰,在產(chǎn)品設(shè)計(jì)的初期就應(yīng)該考慮,選擇適合自己的方案隙畜,避免在后期更改造成巨大的成本損耗抖部。
在寫作過程中,如果有意見或者想法议惰,歡迎有興趣的讀者添加我的微信一起交流探索慎颗,共同進(jìn)步。