發(fā)現(xiàn)每次設(shè)計(jì)權(quán)限體系都很痛苦绪钥,歸根結(jié)底就是沒有沉淀出一套方法論哩掺。看了下網(wǎng)上的文章大多是講RBAC權(quán)限管理模型RBAC0介紹到RBAC3厘擂,看的吐血了昆淡,還是自己總結(jié)點(diǎn)實(shí)際點(diǎn)的東西。
前言
設(shè)計(jì)B端產(chǎn)品刽严,無(wú)可避免會(huì)涉及權(quán)限管理的問(wèn)題瘪撇。為什么呢?因?yàn)锽端產(chǎn)品生來(lái)就是帶著組織結(jié)構(gòu)屬性的港庄,它輔助我們分工、協(xié)調(diào)和合作恕曲。所以我們的產(chǎn)品必須緊緊切合職鹏氧、責(zé)、權(quán)這三個(gè)主題佩谣。
簡(jiǎn)介
權(quán)限管理把还,一般指根據(jù)系統(tǒng)設(shè)置的安全規(guī)則或者安全策略,用戶可以訪問(wèn)而且只能訪問(wèn)自己被授權(quán)的資源茸俭,不多不少吊履。
原因
為什么要做權(quán)限管理呢?
- 權(quán)利不同可以了解的數(shù)據(jù)內(nèi)容不同调鬓,保證數(shù)據(jù)隱私艇炎,避免數(shù)據(jù)泄密。
- 職責(zé)不同所需要頁(yè)面不同腾窝,保證操作效率缀踪,避免頁(yè)面干擾居砖;
- 技術(shù)水平不同可以操作的功能不同,保證系統(tǒng)安全驴娃,避免操作風(fēng)險(xiǎn)奏候;
還有其他要素都注定了要獨(dú)立出一個(gè)權(quán)限管理模塊來(lái)規(guī)范操作和數(shù)據(jù)權(quán)限。
原則
- 權(quán)責(zé)明晰
權(quán):專人做專事唇敞,既可以防止誤操作蔗草,又避免干擾。比如自身才可以編輯和刪除疆柔。
責(zé):能將錯(cuò)誤行為定位到人咒精,落實(shí)責(zé)任。比如操作作業(yè)和表都帶上責(zé)任人的信息婆硬。
- 界限分明
功能:將功能按不同層級(jí)或者屬性進(jìn)行劃分狠轻;
數(shù)據(jù):將數(shù)據(jù)按業(yè)務(wù)類型或者組織架構(gòu)特性進(jìn)行劃分;
- 流程規(guī)范
依賴:允許用戶依賴別人作業(yè)和查看作業(yè)信息彬犯,保證組織的流暢性向楼。
繼承:根據(jù)實(shí)際情況要考慮流程的容錯(cuò)性,比如是否可以跨節(jié)點(diǎn)確認(rèn)谐区。
原理
所以每個(gè)用戶都需要權(quán)限限定湖蜕,但是直接給用戶賦上權(quán)限,會(huì)有很多問(wèn)題:
- 工作量大宋列,需要給每個(gè)用戶依次賦上權(quán)限昭抒;
- 靈活度低,如果某個(gè)操作權(quán)限關(guān)掉了炼杖,需要一個(gè)個(gè)找出用戶依次修改權(quán)限灭返;
所以基于傳統(tǒng)的權(quán)限模型進(jìn)行改建,RBAC模型是一個(gè)成熟的權(quán)限模型坤邪,雖然被講爛了熙含,但是還是假裝不知道重新介紹下。
RBAC(Role-Based Access Control)基于角色的訪問(wèn)控制艇纺。不同于傳統(tǒng)的權(quán)限模型直接賦予使用者權(quán)限怎静,而是將權(quán)限賦予角色。
用戶與角色相關(guān)聯(lián)黔衡,是多對(duì)多關(guān)系蚓聘;
角色與權(quán)限相關(guān)聯(lián),是多對(duì)多關(guān)系盟劫。
項(xiàng)目管理
項(xiàng)目是用來(lái)隔離數(shù)據(jù)和用戶的夜牡。用戶加入當(dāng)前項(xiàng)目才可以享受該項(xiàng)目下的資源。你可以把項(xiàng)目當(dāng)做部門就明白了捞高,A部門的用戶不可以查看B部門的數(shù)據(jù)氯材。
注意
刪除項(xiàng)目渣锦,需要提示是否刪除項(xiàng)目下的數(shù)據(jù),如果刪除有很多風(fēng)險(xiǎn)氢哮,那就禁用刪除吧袋毙。還有一種折中的方法,就是刪除時(shí)允許將項(xiàng)目下的資源遷移到其他項(xiàng)目冗尤。
用戶管理
管理用戶信息听盖,以及對(duì)用戶進(jìn)行增刪改查,包括用戶名稱裂七、所屬部門皆看、聯(lián)系電話等信息,至于密碼背零,一般只能重置密碼腰吟,而不是顯示密碼允許修改。
注意
源:一般我們可以和OA關(guān)聯(lián)拿取賬號(hào)徙瓶,而不需要在產(chǎn)品里添加毛雇,保證內(nèi)部系統(tǒng)信息一致性。
目標(biāo):在產(chǎn)品中一些頁(yè)面需要讀取用戶管理的用戶信息侦镇。
交接:如果用戶的信息被產(chǎn)品某些功能所引用灵疮,必須考慮用戶離職后,其創(chuàng)建的資源管理的問(wèn)題壳繁,這時(shí)候被賦予所有權(quán)限的管理員是個(gè)很好的接盤俠震捣。
用戶組管理
用戶組其實(shí)就是批量給用戶賦予角色,將多個(gè)用戶綁定為一個(gè)小組闹炉,再給這個(gè)小組賦予一個(gè)角色蒿赢。
注意
如果內(nèi)部組織架構(gòu)不復(fù)雜的話,最好不要加入用戶組渣触,不然增加了權(quán)限體系的復(fù)雜性诉植,畢竟殺雞焉用牛刀。
角色管理
管理角色信息昵观,對(duì)角色進(jìn)行增刪改查,包括角色名稱舌稀、角色描述和角色狀態(tài)等啊犬。
可以將角色理解為將權(quán)限打包成一個(gè)小組,那個(gè)小組就是一個(gè)角色壁查。
注意
- 角色停用后觉至,用戶被賦予這個(gè)權(quán)限就不生效。
權(quán)限
頁(yè)面權(quán)限
頁(yè)面權(quán)限指用戶可以看到的頁(yè)面睡腿。如果你的產(chǎn)品比較復(fù)雜语御,可能你需要從模塊權(quán)限到菜單權(quán)限最后到頁(yè)面權(quán)限峻贮。
操作權(quán)限
操作權(quán)限指用戶可以操作的內(nèi)容,即按鈕權(quán)限应闯,是否有增刪改查的權(quán)限纤控。
思考
銜接自然
比如根據(jù)項(xiàng)目區(qū)分?jǐn)?shù)據(jù)權(quán)限,根據(jù)崗位區(qū)分角色碉纺,將現(xiàn)實(shí)的角色與產(chǎn)品角色相關(guān)聯(lián)船万,顯得更自然。輕裝上陣
很多人一講到權(quán)限管理骨田,就希望把它設(shè)計(jì)的非常全面嚴(yán)謹(jǐn)耿导,但是邏輯上的全面嚴(yán)謹(jǐn)和功能上的全面嚴(yán)謹(jǐn)完全是兩回事。如果前期不需要态贤,完全沒必要多抽象出幾個(gè)概念舱呻,需要考慮的反而越多。所以在能滿足權(quán)限的需求下悠汽,就不要多設(shè)概念箱吕,比如抽象出用戶組這種,很可能基本用不到介粘,而且還增加了系統(tǒng)復(fù)雜度殖氏。隨機(jī)應(yīng)變
難道一定要遵從RBAC模型嗎?等你真正參與項(xiàng)目姻采,就會(huì)發(fā)現(xiàn)雅采,RBAC模型僅僅只是個(gè)開始咆耿,它只是幫你打好基礎(chǔ)丧没,之后還會(huì)有各種各樣個(gè)性化的需求,絕對(duì)不僅僅現(xiàn)在說(shuō)的這么簡(jiǎn)單······
參考
大數(shù)據(jù)開發(fā)平臺(tái)權(quán)限管理
后臺(tái)經(jīng)驗(yàn)分享:如何做權(quán)限管理系統(tǒng)設(shè)計(jì)
后臺(tái)系統(tǒng):賬號(hào)權(quán)限系統(tǒng)設(shè)計(jì)
以RBAC模型為基礎(chǔ)也搓,分析B端權(quán)限系統(tǒng)的設(shè)計(jì)思路(業(yè)務(wù)技能)
一個(gè)案例刑棵,三個(gè)角色巴刻,簡(jiǎn)單說(shuō)下B端產(chǎn)品的權(quán)限設(shè)計(jì)