后臺權(quán)限管理設(shè)計思路:三種模型分析
編輯導(dǎo)語:任何系統(tǒng)/產(chǎn)品搭建時,最先考慮的都應(yīng)該是權(quán)限管理模塊,而且權(quán)限管理模塊的清晰、穩(wěn)定是平臺產(chǎn)品健康發(fā)展的基石,權(quán)限管理核心考慮的問題是用戶與權(quán)限的關(guān)系。本文作者對三種不同權(quán)限管理的版本展開了梳理分析,與大家分享。
01 超簡版本-用戶/權(quán)限模型
用戶直接與權(quán)限映射,這種設(shè)計的優(yōu)勢在于簡潔直觀,適合用戶數(shù)量不多,功能較為簡單的系統(tǒng),它的劣勢也是非常的明顯當(dāng)用戶量增多時,維護(hù)成本較高,可擴展性差。
系統(tǒng)頁面Demo:
02?進(jìn)階版本-用戶/角色/權(quán)限模型
若系統(tǒng)用戶和功能增多,為每一個用戶匹配單獨的權(quán)限,會變得非常的繁瑣,因此權(quán)限分門別類,形成“權(quán)限包”。從用戶的角度,將用戶分類,同一類用戶固定為相同的角色,賦予相同的權(quán)限,會讓操作變得簡單很多。
系統(tǒng)頁面Demo:
03?層級版本-組織/用戶/角色/權(quán)限模型
對于管理性后臺,往往人員是職級區(qū)分的,比如用戶王五為銷售組長,其組員趙六和孫七,王五需要看到趙六和孫七的銷售額數(shù)據(jù)和可以進(jìn)行趙六和孫七的所有操作,而趙六僅能看到自己的銷售額數(shù)據(jù),進(jìn)行和自己相關(guān)的操作。
這個事例中引入了兩個新的概念,一是用戶的權(quán)限可以細(xì)分為功能權(quán)限和數(shù)據(jù)范圍權(quán)限,二是數(shù)據(jù)范圍和功能權(quán)限都有了繼承的層級概念。
所謂功能權(quán)限大家比較好理解,比如能否看到某個頁面,能否點擊某個按鈕。而數(shù)據(jù)權(quán)限略抽象些,比如在業(yè)績報表模塊,從功能權(quán)限角度,可以決定用戶能否打開這個報表頁面,但是不同用戶進(jìn)來看到不同的數(shù)據(jù)(王五需要看到趙六和孫七的銷售額數(shù)據(jù),而趙六僅能看到自己的銷售額數(shù)據(jù),看不到孫七的),則是由數(shù)據(jù)范圍來控制的。
1. 數(shù)據(jù)范圍的繼承
我們可以將用戶進(jìn)行分級管理,比如建立多層級的組織架構(gòu)樹,將不同用戶放置于組織架構(gòu)的不同根節(jié)點上,來實現(xiàn)多層級用戶的建立和管理。
1)如果用戶的層級如果比較簡單(不多于三級),可以將層級關(guān)系融入到角色之中。比如用戶分為三級:管理員-組長-組員,管理員能看到全部的數(shù)據(jù)范圍和擁有全部的功能權(quán)限,而組長能查看組員的數(shù)據(jù)范圍和擁有部分功能權(quán)限(比如無法編輯用戶),而組員的數(shù)據(jù)范圍僅僅為自己負(fù)責(zé)的數(shù)據(jù)和擁有部分功能權(quán)限。
我們可以在組長這個角色下,允許其綁定組員,針對不同的角色設(shè)置不同的數(shù)據(jù)范圍讀取方式,管理員可以讀取全部數(shù)據(jù)范圍,組長需要讀取其組員的,組員只能讀取自己的。大家有興趣可以去了解下RBAC0/1模型
2)而對于用戶層級較多的情況,建議采用多層級的組織架構(gòu)的管理模式,先建立公司的組織部門,再將人置于組織架構(gòu)樹的不同節(jié)點之下。以用戶在組織節(jié)點的位置,以及是否為某個節(jié)點組織的負(fù)責(zé)人,來確定其數(shù)據(jù)范圍。
2. 功能權(quán)限的繼承
一般是將角色進(jìn)行分級,有了所謂的角色樹的概念
由此,我們就得到了自由度更高但是邏輯更復(fù)雜的權(quán)限管理
涉及到組織架構(gòu)樹和角色樹,需要考慮到的場景更多,這些細(xì)節(jié)要根據(jù)實際的業(yè)務(wù)場景來制定方案。比如:
- 組織有成立和解散的時間,員工也存在轉(zhuǎn)崗換組織部門的情況,因此要考慮引入時間軸的概念。增加很多的校驗邏輯,比如需要增加員工入職、離職時間,且員工在該部門任職的時間不能早于部門成立的時間等等
- 同一員工能否兼崗,允許在多個組織下存在
- 角色上是否會有互斥情況存在(RBAC-2模型),比如實際業(yè)務(wù)中,發(fā)鈔和驗鈔的工作不允許同一個人做,因此在功能設(shè)計時要考慮角色之間的互斥性,通過為用戶配置角色來實現(xiàn)用戶與權(quán)限的映射關(guān)系,不同權(quán)限間是存在優(yōu)先級的,比如剛剛的例子,互斥關(guān)系為最高優(yōu)先級
實體關(guān)系圖 :
系統(tǒng)頁面Demo:
上述分析的三種權(quán)限管理其實并無優(yōu)劣之分。權(quán)限管理作為系統(tǒng)的基石,應(yīng)依據(jù)系統(tǒng)目標(biāo)用戶特點、后續(xù)發(fā)展方向、維護(hù)成本等方面進(jìn)行綜合評估,找到最適合系統(tǒng)的模式即可。
知識點總結(jié)
- 用戶管理核心是解決用戶與權(quán)限的問題;
- 角色可理解為一類用戶,或者一堆權(quán)限的集合,鏈接了用戶與權(quán)限的關(guān)系;
- 權(quán)限可以分為功能權(quán)限和數(shù)據(jù)范圍;
- 復(fù)雜的繼承關(guān)系,數(shù)據(jù)范圍依賴用戶組織架構(gòu)樹,功能權(quán)限依賴角色樹,將用戶放置于組織架構(gòu)樹的不同節(jié)點上,并賦予角色,即解決了功能權(quán)限和數(shù)據(jù)范圍的問題;
作者:yingying之語;公眾號“yingying之語”,持續(xù)分享B端產(chǎn)品設(shè)計經(jīng)驗,期待與小伙伴們一起交流探討
本文由 @yingying之語 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議
RBAC權(quán)限管理模型
層級版本中,組織的職位是角色嗎?還是說角色還要再建立一套?
請問一下同一個部門的組長A、組長B,我需要讓組長A也可以看到組長B的數(shù)據(jù),這種權(quán)限怎么做比較合理呢?
請問一下權(quán)限可以分為功能權(quán)限和數(shù)據(jù)范圍 這個不太明白,功能都是基于基礎(chǔ)數(shù)據(jù)上的衍生,為什么會分開呢
功能是用來處理數(shù)據(jù)的,功能操作不變的情況下,數(shù)據(jù)的范圍有差別,這就是數(shù)據(jù)權(quán)限與功能權(quán)限要分開。比如查詢功能,A用戶默認(rèn)查詢自己創(chuàng)建的客戶,但因為特殊情況他暫時接管B用戶的部分客戶數(shù)據(jù),這里只需要調(diào)整他能處理的客戶數(shù)據(jù)就可以了,查詢功能還是不變的。
權(quán)限管理