一文講透 B 端權(quán)限系統(tǒng)的概念及原理
后臺(tái)系統(tǒng)的權(quán)限管理系統(tǒng)這個(gè)功能,可謂是難倒了一大批產(chǎn)品經(jīng)理。本文總結(jié)了B 端權(quán)限系統(tǒng)的概念及原理,希望對(duì)你有所幫助。
發(fā)現(xiàn)最近好多人在問,后臺(tái)系統(tǒng)的權(quán)限管理怎么做。
權(quán)限管理這個(gè)功能,可以說難倒了一大批產(chǎn)品經(jīng)理。
雖然講權(quán)限的文章一大堆,但真正講透的屈指可數(shù)。
剛好前段時(shí)間,我設(shè)計(jì)的多租戶權(quán)限系統(tǒng)上線了,做的過程中也總結(jié)了一些經(jīng)驗(yàn),這里簡單聊聊。
一、權(quán)限概念
什么是權(quán)限?
權(quán)限是后臺(tái)的基礎(chǔ)模塊之一,沒有它的話每個(gè)用戶都是超級(jí)管理員,系統(tǒng)數(shù)據(jù)可以任意操作、改寫,如果是這樣那公司就亂套啦。
為了避免這種情況發(fā)生,后臺(tái)需要上線權(quán)限功能。
它確保了不同用戶進(jìn)行合理分工和操作,避免了風(fēng)險(xiǎn)管理、數(shù)據(jù)安全等問題。
產(chǎn)品經(jīng)理如果想搞懂和設(shè)計(jì)權(quán)限系統(tǒng),需要先學(xué)會(huì)這 3 個(gè)基礎(chǔ)概念:用戶、權(quán)限、角色。
- 用戶:這里的用戶,指的是后臺(tái)的用戶賬號(hào);
- 權(quán)限:權(quán)限規(guī)定了系統(tǒng)的操作范圍或數(shù)據(jù)查看限制,像“新增、編輯、刪除”等就是權(quán)限的一種;
- 角色:角色包含了一組權(quán)限集合,主要以用戶的職責(zé)或功能來定義,例如“管理員、銷售、內(nèi)容管理”等角色,它們擁有的權(quán)限各不相同。
二、權(quán)限分類
權(quán)限看起來很復(fù)雜,其實(shí)說起來只有這兩種分類:功能權(quán)限、數(shù)據(jù)權(quán)限。
1. 功能權(quán)限
功能權(quán)限,主要控制賬號(hào)的組件可視范圍,常見的有目錄、菜單、按鈕等。
- 目錄:一般在系統(tǒng)的頂部,例如“用戶、營銷、系統(tǒng)”等一級(jí)管理入口;
- 菜單:指的是系統(tǒng)左側(cè)的多級(jí)導(dǎo)航組件,點(diǎn)擊即可進(jìn)入對(duì)應(yīng)的功能頁面,例如營銷目錄中的“積分管理、活動(dòng)管理、優(yōu)惠券管理”等都是菜單;
- 按鈕:在頁面中的功能操作都可視為按鈕,常見的“搜索、新增、編輯、刪除、打印”等功能都由相關(guān)按鈕控制。
2. 數(shù)據(jù)權(quán)限
數(shù)據(jù)權(quán)限則決定了用戶能看哪些數(shù)據(jù),一般通過“部門、品牌、區(qū)域”等維度劃分?jǐn)?shù)據(jù)權(quán)限。
例如廣東地區(qū)的同事,只能看到廣東地區(qū)的銷售數(shù)據(jù),其他海南、青島等區(qū)域的數(shù)據(jù),在系統(tǒng)界面將隱藏。
二、權(quán)限模型
權(quán)限模型有很多種,例如“ACL 模型、DAC 模型、MAC 模型、RBAC 模型、ABAC 模型”等。
這些權(quán)限模型為什么會(huì)產(chǎn)生?主要是公司基于“組織體量、業(yè)務(wù)背景、實(shí)施成本”等因素權(quán)衡取舍后的解決方案。
而我們?cè)谌粘_^程中,由于業(yè)務(wù)不大、公司架構(gòu)簡單等因素,一般只需要用到“ACL 模型、RBAC 模型”這兩種。
1. ACL 模型
ACL 模型中,涉及了“用戶、權(quán)限”這兩個(gè)概念,主要通過用戶綁定多個(gè)權(quán)限,實(shí)現(xiàn)了權(quán)限控制管理。
例如 A 賬號(hào)是客服在用,它綁定了“內(nèi)容管理、訂單管理”等權(quán)限,而 B 賬號(hào)作為老板專屬,當(dāng)然是權(quán)限全開啦。
這種方案比較適合小公司,開發(fā)量較少。
但弊端是,當(dāng)維護(hù)的用戶足夠多,而且它們權(quán)限大差不大時(shí),配置權(quán)限的那個(gè)人一定很崩潰。
2. RBAC 模型
為了解決配置繁瑣的問題,我們需要使用 RBAC 模型。
RBAC 模型相比 ACL,多了一個(gè)角色的概念。
角色主要是為了將用戶、權(quán)限進(jìn)行解耦,以達(dá)到權(quán)限“批量配置、隨時(shí)更新”的目的。
例如將原先的 A 賬號(hào)權(quán)限,分配給客服角色,然后再把老板 B 賬號(hào),給到“超級(jí)管理員”角色。
那么當(dāng)公司有 20 個(gè)客服,3 個(gè)老板時(shí),通過 RBAC 模型,配置權(quán)限就只需要幾分鐘。
三、權(quán)限原理
如果你覺得一項(xiàng)知識(shí)太高深難懂,也許只是還沒找到學(xué)它的正確姿勢(shì)?!孟?/p>
說了這么多概念和模型, 聽起來可能比較抽象。
我們?cè)囍靡恍┖唵蔚?Excel 表(為了便于理解,簡化了部分?jǐn)?shù)據(jù)),來理解 ACL 模型、RBAC 模型的權(quán)限原理。
1. ACL 模型,如何實(shí)現(xiàn)權(quán)限控制?
在 ACL 模型中,想實(shí)現(xiàn)權(quán)限控制,我們首先需要“用戶、權(quán)限”這兩個(gè)主表。
現(xiàn)在問題來了,你上司突然要你搞定下面的權(quán)限配置,該怎么做?
- 張三:由于是剛來的新員工,只能看一些文章數(shù)據(jù);
- 李四:李四是公司的老油條了,文章、文章評(píng)論的管理工作,都是由他處理的;
- 王五:這個(gè)人是老板親戚,只需要看看商品、文章、動(dòng)態(tài)等用戶的反饋評(píng)論,然后找老板告狀。
聽起來真是頭大阿!躺平行不行?
要想實(shí)現(xiàn)上司的權(quán)限需求,你還需要用到第三個(gè)表“用戶權(quán)限關(guān)聯(lián)”。
這個(gè)表的作用,是將用戶與權(quán)限的關(guān)系進(jìn)行綁定,方便系統(tǒng)確認(rèn)不同用戶的權(quán)限范圍。
按上司的要求,我們完成了用戶權(quán)限的配置。
無論界面交互層如何花里胡哨,功能實(shí)現(xiàn)的本質(zhì)還是數(shù)據(jù)操作?!孟?/p>
由于在數(shù)據(jù)庫中,這些關(guān)系是通過 ID、代號(hào)表示的,看起來比較抽象。
我們?cè)囍梦淖痔娲?/p>
怎樣,看起來是不是容易理解多啦?
2. RBAC 模型,如何實(shí)現(xiàn)權(quán)限控制?
前面我們講到,RBAC 模型相比 ACL 模型多了角色的概念。
所以除了“用戶、權(quán)限”表之外,我們還需要一個(gè)“角色”主表,并按需求配置 3 個(gè)角色。
- 新員工:查看文章;
- 老油條:管理文章和文章評(píng)論;
- 老板親戚:查看商品、文章、動(dòng)態(tài)等評(píng)論。
由于權(quán)限邏輯變了,所以原先那個(gè)“用戶權(quán)限”表就沒啥用了。
我們還需要“用戶角色關(guān)聯(lián)、角色權(quán)限關(guān)聯(lián)”這兩個(gè)新表,來實(shí)現(xiàn) RBAC 模型的權(quán)限控制。
上圖中,其實(shí)有兩個(gè)問題需要注意:
- 用戶擁有多個(gè)角色:這種情況,我們一般是取兩個(gè)角色的所有去重權(quán)限,作為當(dāng)前用戶的權(quán)限范圍,其他特殊功能需求,可以視情況更改;
- 數(shù)據(jù)權(quán)限實(shí)現(xiàn)原理:系統(tǒng)在判斷一個(gè)角色的數(shù)據(jù)權(quán)限,首先驗(yàn)證是否有該對(duì)象的數(shù)據(jù)權(quán)限,然后再按“權(quán)限范圍”限制,顯示相關(guān)數(shù)據(jù);例如 A 角色能查看“廣州、上海、南京”等地區(qū)的訂單數(shù)據(jù)。
總結(jié)
權(quán)限系統(tǒng)看起來很復(fù)雜,其實(shí)只要你掌握了權(quán)限的概念、分類、模型、原理,那么想要設(shè)計(jì)一個(gè)權(quán)限方案也不算難。
本文由 @好夕雷 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
ACL 模型、DAC 模型、MAC 模型、RBAC 模型、ABAC 模型,作者可以解釋一下縮寫的全稱嗎?可能更有助于理解一點(diǎn)。