系統(tǒng)權(quán)限功能的設(shè)計

????幾乎所有的管理后臺都會涉及到權(quán)限的設(shè)計存淫,權(quán)限控制是管理后臺的重要功能,可以有效的提高系統(tǒng)的安全性顺少,減少誤操作、數(shù)據(jù)泄漏等風險的發(fā)生王浴。但是脆炎,很多產(chǎn)品經(jīng)理會對權(quán)限功能有一點害怕的心理,一方面是由于能參考的實例較少氓辣,權(quán)限管理算是一個“系統(tǒng)級”的基礎(chǔ)功能秒裕,一般系統(tǒng)中只有管理員可以操作,不像其他功能可以通過去其他系統(tǒng)中試用體驗钞啸,另一方面几蜻,對于權(quán)限功能普通用戶無法操作使用喇潘,所以存在感較低,做好了也不會出彩梭稚,可沒做好就會導致整個流程不通颖低、產(chǎn)品崩潰。

RBAC模型

????目前哨毁,接受度較高的功能權(quán)限模型是RBAC(Role-Based Access Control)模型枫甲。在RBAC中,權(quán)限與角色相關(guān)聯(lián)扼褪,用戶通過成為適當角色的成員而得到這些角色的權(quán)限想幻。這就極大地簡化了權(quán)限的管理。在一個組織中话浇,角色是為了完成各種工作而創(chuàng)造脏毯,用戶則依據(jù)它的責任和資格來被指派相應(yīng)的角色,用戶可以很容易地從一個角色被指派到另一個角色幔崖。角色可依新的需求和系統(tǒng)的合并而賦予新的權(quán)限食店,而權(quán)限也可根據(jù)需要而從某角色中回收。

1.角色的作用

如果沒有角色的概念赏寇,直接用戶對應(yīng)權(quán)限吉嫩,雖然會更加靈活,但是后臺的數(shù)據(jù)表設(shè)計會變得復雜嗅定,操作成本也會很高自娩,同時容錯能力也會變得很差。


而引入“角色”概念后渠退,用戶與角色可為多對一或多對多的關(guān)系忙迁,當一個用戶的角色為多對多時,當前用戶的權(quán)限是多個角色的并集碎乃。此時只需要為角色賦予權(quán)限姊扔,能夠大大減輕管理負擔,同時將用戶與權(quán)限解耦梅誓,提供更大的靈活性恰梢,同時整個設(shè)計的容錯能力也提高了很多。


2.引入用戶組

? ?一些大型的平臺上梗掰,如果用戶數(shù)量較大嵌言,新增角色時,需要為大量用戶分配新的角色愧怜,工作量巨大,此時可以引入用戶組的概念妈拌,將這些用戶拉到同一個用戶組中拥坛,然后對整個用戶組進行角色的指定蓬蝶,這就大大減少了角色分配的工作量。

同理如果權(quán)限較多時也會存在一樣的問題猜惋,對角色進行權(quán)限設(shè)置時也需要大量的操作丸氛,此時可以考慮引入權(quán)限組的概念,將關(guān)聯(lián)性較強的權(quán)限大包成組賦予角色著摔,從而減少賦值時的工作量缓窜,現(xiàn)實中權(quán)限組的使用相對較少,因為系統(tǒng)中的權(quán)限一般來講是有限的谍咆。需要注意的是即使有用戶組或權(quán)限組的存在禾锤,也可以允許用戶或權(quán)限與角色直接關(guān)聯(lián),這個可以視具體業(yè)務(wù)情況而定摹察。

下圖所示為mac系統(tǒng)中運行添加用戶組恩掷,并以用戶組為單位配置權(quán)限。

3. 角色繼承的RBAC模型

在一個業(yè)務(wù)場景中供嚎,如果角色需區(qū)分:設(shè)計主管黄娘、設(shè)計組長、設(shè)計成員克滴,并且管理方式為向下兼容時逼争,則需使用角色繼承的RBAC模型。上層角色繼承下層角色的全部權(quán)限劝赔,且可額外賦予權(quán)限誓焦。

此時除了對角色進行定義,還需要管理角色間的關(guān)系望忆,通過關(guān)系來體現(xiàn)角色的層級關(guān)系罩阵,從而達到繼承權(quán)限的效果。角色的繼承關(guān)系主要有兩種:樹形圖和有向無環(huán)圖启摄。

繼承關(guān)系常常來源于公司團隊的組織結(jié)構(gòu)稿壁,此時常將角色與組織結(jié)構(gòu)進行關(guān)聯(lián)達到繼承角色模型的效果。如下圖所示的趙同學歉备,其角色是“三級團隊負責人”傅是,與其并列的小組中有多個“三級團隊負責人”的角色,但依附于左側(cè)的組織結(jié)構(gòu)樹蕾羊,各級負責人僅有查看和操作自己下屬子節(jié)點的權(quán)限喧笔。

4. 限制的RBAC模型

在一個產(chǎn)品或系統(tǒng)中,部分角色可能是需要隔離的龟再、不允許被同時賦予一個人的书闸。跟大家熟知的“不能既是‘運動員’又是‘裁判員’ ”一個道理。

因此利凑,對于眾多角色中的一組浆劲,只能是單選的關(guān)系嫌术,但多組角色之間可以共同存在。如下圖中牌借,一個用戶可以既為設(shè)計師又為管理員度气,但在設(shè)計師角色組中僅能被賦予一個角色,在管理員角色組中也僅能被賦予一個角色膨报。

此外磷籍,限制還有可能是數(shù)量上的,比如一個產(chǎn)品組中必須有且只有一個管理員现柠,不允許刪除或再分配管理員角色院领,僅允許將負責人角色變更。

限制的模型不僅僅對分配過程產(chǎn)生影響晒旅,有時即使擁有了多種角色栅盲,因為不同的角色對同一個功能的使用方式或數(shù)據(jù)會產(chǎn)生沖突,所以使用時也需要進行限制废恋。如下圖所示為同一時間僅允許以一個身份登錄谈秫。

根據(jù)不同的業(yè)務(wù)需求,限制的形式很多鱼鼓。需要注意的是不能僅依賴后端限制拟烫,而是要在前端展示清晰的規(guī)則和恰當?shù)南拗疲苊庥脩舫鲥e和沮喪迄本。

三硕淑、權(quán)限的拆分與設(shè)計

通過RBAC模型已經(jīng)能夠很好的搭建起用戶、角色與權(quán)限之間的關(guān)系了嘉赎。但具體是什么樣的關(guān)系置媳,以及“權(quán)限”這個抽象的概念具體如何規(guī)劃?

這些都需要分析清楚才能進一步設(shè)計出完善的權(quán)限系統(tǒng)公条。

首先需要知道拇囊,一般產(chǎn)品的權(quán)限由頁面、操作和數(shù)據(jù)構(gòu)成靶橱。頁面與操作相互關(guān)聯(lián)寥袭,必須擁有頁面權(quán)限,才能分配該頁面下對應(yīng)的操作權(quán)限关霸。數(shù)據(jù)可被增刪改查传黄。

整體關(guān)系如下圖所示:

因此,在設(shè)計之初我們就需要考慮到未來可能區(qū)分角色的地方队寇,盡量解耦膘掰、模塊化。對于技術(shù)來說佳遣,每一個頁面模塊识埋、每一個操作都最好使用獨立的接口鉴扫。對于設(shè)計來說空繁,需要保障所有角色因為權(quán)限而屏蔽掉部分操作和數(shù)據(jù)后脖卖,頁面和流程仍能體驗流暢袱吆。

保證初期設(shè)計支持后相恃,配置權(quán)限時辜纲,還需要注意以下幾點:

(1)確定是否支持前端配置

如果角色和權(quán)限相對固定,則一般將角色與權(quán)限的關(guān)系可以寫在后臺拦耐,改動時需要后端變更且重新上線耕腾。這種情況適用于公司內(nèi)部系統(tǒng)等只有一個使用主體的系統(tǒng)。

如果需要自定義角色或者每個角色在不同使用者的場景下有不同的權(quán)限杀糯,則需要將角色的定義扫俺、角色與權(quán)限之間的配置體現(xiàn)在“前端用戶配置頁面”。這種情況適用于有頻繁變動的自定義角色權(quán)限固翰,和有租戶體系的系統(tǒng)狼纬。

(2)以基本單元拆分,以業(yè)務(wù)邏輯配置

一般可將每個對象的“增骂际、刪疗琉、改、查”各自作為一個基本的權(quán)限單元歉铝。打個比方盈简,在“人員管理”中,查看人員列表太示、添加人員柠贤、刪除人員、編輯人員信息最好拆分為4個權(quán)限單元类缤。在技術(shù)和設(shè)計上臼勉,我們希望能盡量做到解耦和模塊化。

但是在業(yè)務(wù)層面有些操作卻是一體的呀非。這些不能拆開的權(quán)限在“前端用戶配置頁面”中建議打包成一個整體提供配置坚俗。例如:如果我們確定在系統(tǒng)的現(xiàn)有和未來業(yè)務(wù)中,僅分為普通成員有“人員管理”的查看權(quán)限岸裙,管理員有操作權(quán)限猖败,則可將“增、刪降允、改”三個基本權(quán)限單位合并為“操作”權(quán)限進行配置恩闻。

(3)頁面權(quán)限優(yōu)先于操作和數(shù)據(jù)權(quán)限

必須配置了頁面模塊權(quán)限后,才能配置當前頁面模塊下具體的操作權(quán)限剧董,以及頁面模塊的數(shù)據(jù)展示權(quán)限幢尚。

(4)查看權(quán)限優(yōu)先于增刪改權(quán)限

正常情況下破停,一定要先能查看某個模塊或操作,其它的增刪改操作才有意義尉剩。因此在設(shè)計時真慢,應(yīng)在獲取查看權(quán)限前限制其它權(quán)限的配置,或者配置其它權(quán)限時默認賦予查看權(quán)限理茎。

(5)角色與權(quán)限的多種關(guān)系

角色與權(quán)限的關(guān)系不僅是單純“是/否關(guān)系”黑界,還包括以某種限制進行操作,和以某種程度訪問數(shù)據(jù)皂林。

例如在“人員管理”中:

數(shù)據(jù)范圍:用戶擁有查看人員列表的權(quán)限朗鸠,但僅能查看自己所在的團隊;數(shù)據(jù)邊界限制(上限等):添加人員時不能超過20個等础倍。數(shù)據(jù)字段:HR能查看人員列表中包括職級烛占、薪資等字段,其它角色僅能查看姓名郵箱等字段沟启;

(6)角色與權(quán)限的設(shè)計表達

在傳達一個系統(tǒng)的權(quán)限設(shè)計規(guī)則時忆家,設(shè)計師常常習慣用主觀最直接的方式表達想法,如用“當……時德迹,就……”的句式來表達弦赖。但一個平臺中涉及的權(quán)限規(guī)則是非常多的,當通篇以這樣的形式描述時浦辨,表達對象將很難理解蹬竖。

正確的描述方式:更清晰的是基于開發(fā)的語言,和技術(shù)模型的結(jié)果進行表達流酬。將各角色與權(quán)限單元繪制成網(wǎng)格币厕,每個交叉點網(wǎng)格中描述該角色與權(quán)限的數(shù)據(jù)關(guān)系和限制。

如下圖所示:

四芽腾、需要注意的Tips

1. 隱形的admin

在可自定義角色和權(quán)限的系統(tǒng)中旦装,一般需要預留一個admin角色來進行系統(tǒng)的初始配置,用于添加首批的業(yè)務(wù)人員和配置基本的角色摊滔。

有的系統(tǒng)中允許存在上帝視角的admin角色阴绢,則其可以作為“超級管理員”顯示在角色配置的列表中。有的系統(tǒng)中不允許這種角色存在艰躺,則可將這種角色設(shè)置為隱形的狀態(tài)呻袭,僅賦予維護系統(tǒng)的工作人員。

2. 初始權(quán)限的賦予

對于允許用戶自行加入的系統(tǒng)腺兴,需要設(shè)定一至多個默認的角色左电,有時可以是僅有最基礎(chǔ)權(quán)限的“游客”角色。

初始權(quán)限還可以與用戶既有的某些數(shù)據(jù)字段進行關(guān)聯(lián),如添加用戶時獲取到用戶的崗位為“設(shè)計師”篓足,則直接賦予“設(shè)計師”角色的權(quán)限段誊。

3. 人員管理中對自己的處理

在人員管理中,管理員角色處理自己時需要額外注意栈拖。因為如果修改或刪除了自己角色后连舍,可能導致系統(tǒng)沒有管理角色,從而無法添加其他成員和正常運行涩哟。設(shè)計時可添加判斷烟瞧,當自己為唯一管理角色時,禁止編輯和刪除染簇。

4. 無頁面權(quán)限的提示

雖然可以通過頁面權(quán)限限制直接隱藏當前用戶沒有權(quán)限的頁面,但不能排除用戶獲取到權(quán)限外的url地址强岸。當用戶意外訪問到?jīng)]有權(quán)限的頁面時務(wù)必提供“無權(quán)限”的提示锻弓,避免用戶認為系統(tǒng)bug。

最后

總結(jié)一下蝌箍,整個權(quán)限系統(tǒng)設(shè)計就是定義各個節(jié)點和節(jié)點間關(guān)系的過程青灼。

節(jié)點包括:

用戶;用戶組妓盲;角色杂拨;角色組;權(quán)限(頁面悯衬、操作弹沽、數(shù)據(jù));權(quán)限組(頁面筋粗、操作策橘、數(shù)據(jù));

關(guān)系包括:

是/否關(guān)系娜亿;繼承關(guān)系丽已;限制關(guān)系(互斥、范圍限制买决、邊界限制沛婴、字段限制……)


本文來源于人人都是產(chǎn)品經(jīng)理合作媒體@網(wǎng)易UEDC,作者@蔣蕊遙

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末督赤,一起剝皮案震驚了整個濱河市嘁灯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躲舌,老刑警劉巖旁仿,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡枯冈,警方通過查閱死者的電腦和手機毅贮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尘奏,“玉大人滩褥,你說我怎么就攤上這事§偶樱” “怎么了瑰煎?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俗孝。 經(jīng)常有香客問我酒甸,道長,這世上最難降的妖魔是什么赋铝? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任插勤,我火速辦了婚禮,結(jié)果婚禮上革骨,老公的妹妹穿的比我還像新娘农尖。我一直安慰自己,他們只是感情好良哲,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布盛卡。 她就那樣靜靜地躺著,像睡著了一般筑凫。 火紅的嫁衣襯著肌膚如雪滑沧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天巍实,我揣著相機與錄音嚎货,去河邊找鬼。 笑死蔫浆,一個胖子當著我的面吹牛殖属,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓦盛,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼洗显,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了原环?” 一聲冷哼從身側(cè)響起挠唆,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘱吗,沒想到半個月后玄组,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滔驾,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年俄讹,在試婚紗的時候發(fā)現(xiàn)自己被綠了哆致。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡患膛,死狀恐怖摊阀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踪蹬,我是刑警寧澤胞此,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站跃捣,受9級特大地震影響漱牵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疚漆,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一酣胀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧愿卸,春花似錦、人聲如沸截型。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宦焦。三九已至发钝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間波闹,已是汗流浹背酝豪。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留精堕,地道東北人孵淘。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像歹篓,于是被迫代替她去往敵國和親瘫证。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容