后臺(tái)產(chǎn)品設(shè)計(jì)方法論:RBAC模型概要分析(附案例分析)
RBAC(Role-Based Access Control ,基于角色的訪問控制)模型是后臺(tái)產(chǎn)品設(shè)計(jì)中常用模型。本文屬于事后總結(jié),希望對(duì)各位讀者有一定的幫助,當(dāng)然也有一定的局限性,歡迎留下你的評(píng)論,相互探討。
最近西蒙折騰業(yè)務(wù)管理后臺(tái)的從0到1,接到任務(wù)那刻,就開始投入資料的搜集和匯總工作。但是很多網(wǎng)上的資料都是基于技術(shù)層面的解釋,但是很少有通俗易懂的說明,工作就開始了卡頓。
搜索出來的資料,很多都是這樣的圖表,后續(xù)咨詢了很多伙伴,感謝他們的建議和分享,終于順利完成了框架的梳理。撰寫此文屬于后續(xù)的思考沉淀,希望對(duì)各位讀者有一定的幫助,當(dāng)然本文也有一定的局限性,歡迎留下你的評(píng)論,相互探討。
當(dāng)框架梳理完畢的那刻,頭腦中閃現(xiàn)的就是《結(jié)網(wǎng)》的一句話:“不需要再發(fā)明輪子”。
一、RBAC模型無處不在,不需要再次發(fā)明輪子,在于歸類提煉
一開始搜索RBAC模型,很多都是偏技術(shù)類的說明,如用戶表、角色表、用戶角色關(guān)聯(lián)表、權(quán)限表、權(quán)限角色表之類,沒有一個(gè)概要(通俗)的說明。梳理完畢以后,發(fā)現(xiàn)其實(shí)RBAC模型是無處不在。
舉幾個(gè)例子和大家分享一下:
- 會(huì)員打折,基于會(huì)員卡,商品結(jié)賬時(shí),可以享受較低的支付價(jià)格。
- 公司的門禁卡,是分發(fā)給公司員工,只有是公司員工的身份(角色),才能領(lǐng)取門禁卡,才能使用打卡出入(權(quán)限),同樣基于員工的角色,所以要上下班考勤打卡(權(quán)限限制)。如果離開了公司,那么不再是員工(角色),所以無法出入公司大門,也無需上下班考勤打卡。
- 公司是有組織架構(gòu),不同的崗位,有不同的管理權(quán)限,財(cái)務(wù)總監(jiān)可以管理公司賬戶,人事總監(jiān)管理公司人事,與之對(duì)應(yīng)的是財(cái)務(wù)部成員和人事各自有不同的權(quán)限
- 當(dāng)我們打開微博/微信,發(fā)表內(nèi)容的時(shí)候,是輸出者,看別人內(nèi)容的時(shí)候,是瀏覽者,輸出評(píng)論的時(shí)候,是評(píng)論者,也是基于不同的動(dòng)作,觸發(fā)不同的權(quán)限。如內(nèi)容輸出者享受的權(quán)限就是可以看到多少人點(diǎn)擊,查看評(píng)論,回復(fù)評(píng)論,點(diǎn)贊數(shù)等
- 當(dāng)我們打開游戲的時(shí)候,游戲也是有角色權(quán)限約束,游戲里面的角色,達(dá)到N級(jí),可以解鎖對(duì)應(yīng)的技能,解鎖符文鑲嵌位,解鎖副本,解鎖其他游戲場(chǎng)景入口
RBAC模型無處不在,所以不需要再次發(fā)明輪子,在于歸類提煉,融合貫通。
二、RBAC核心是用戶-角色-權(quán)限的模型
RBAC核心是用戶-角色-權(quán)限模型,但是這個(gè)模型也是一步步衍化而來,早期的是用戶-權(quán)限模型。
這個(gè)模型的理念,是直接基于用戶勾選權(quán)限,實(shí)現(xiàn)用戶的賦權(quán),但是這個(gè)模型有一個(gè)硬傷,就是無法復(fù)用,效率太低。無法批量套用,需要依次處理
以一個(gè)千人論壇為例:需要為一千個(gè)用戶,手動(dòng)配置權(quán)限,實(shí)現(xiàn)超管,超版,版主等用戶的賦權(quán)。
想想為1千個(gè)用戶依次配備相關(guān)權(quán)限。
現(xiàn)在的論壇,貼吧,已經(jīng)可以實(shí)現(xiàn)數(shù)十萬,數(shù)百萬級(jí)的用戶支撐,顯然簡(jiǎn)單的用戶-權(quán)限角色是不切實(shí)際的,事實(shí)上他們用的是改良后的用戶-角色-權(quán)限的模型,也就是本次要分享的RBAC模型。
用戶原本沒有權(quán)限,基于角色對(duì)應(yīng)的權(quán)限,獲得對(duì)應(yīng)的權(quán)限,用戶變更角色,既可以獲得對(duì)應(yīng)的權(quán)限
現(xiàn)在還混貼吧和論壇的老鳥,應(yīng)該知道在自己熟悉的板塊,和自己未去過的板塊,積分,頭銜是不一樣的,比較常見的是自己板塊/貼吧,去到其他不熟悉的地方,也得從0開始熬,除非是獲得對(duì)方超版調(diào)整為嘉賓,小吧主之類,那么就直接獲得相關(guān)權(quán)限。這里面已經(jīng)是一個(gè)用戶-角色-權(quán)限的模型,這也是非常成熟的模型,所以西蒙一開始說的就是,不需要再發(fā)明輪子。
事實(shí)上,論壇的后臺(tái)可以把各大板塊分別設(shè)置模塊,從后臺(tái)層面,已經(jīng)把可操作性,可見性進(jìn)行區(qū)分,比方說普通用戶是無法可見特殊板塊,因?yàn)樘厥獍鍓K可以單獨(dú)設(shè)置為個(gè)別等級(jí)才可見(勾選權(quán)限),實(shí)現(xiàn)模塊可視化的隔離。
回到論壇的角色配置,可以單獨(dú)為用戶的不同板塊分別配置角色,用戶直接基于角色獲得對(duì)應(yīng)的權(quán)限,用戶完整的權(quán)限取全部權(quán)限的并集。基礎(chǔ)角色就是注冊(cè)用戶,享受默認(rèn)對(duì)應(yīng)的權(quán)限即可。
如上面的圖所示,甲在論壇的權(quán)限匯總之后如下:
從完整的RBAC模型會(huì)是這樣的梳理實(shí)現(xiàn)。為了讓大家更好理解模型結(jié)構(gòu),下面以人人都是產(chǎn)品經(jīng)理的角色與權(quán)限進(jìn)行詳細(xì)的說明
三、人人都是產(chǎn)品經(jīng)理角色與權(quán)限的概述
人人都是產(chǎn)品經(jīng)理的主頁面,點(diǎn)擊各大板塊的入口(紅框部分),對(duì)于首頁各類內(nèi)容進(jìn)行分類,
頁面分類了很多的內(nèi)容,但是涉及的板塊并不多,基于板塊再次細(xì)化后形成信息架構(gòu)圖,核心的內(nèi)容為為文章、起點(diǎn)學(xué)院、天天問、秒聘網(wǎng),個(gè)人信息。
西蒙實(shí)測(cè)對(duì)應(yīng)的角色,嘗試逆推相關(guān)的權(quán)限,梳理如下:
角色以及對(duì)應(yīng)的權(quán)限
普通未登錄用戶(訪客)
未登錄的情況下,基于訪客的身份,獲得訪客的權(quán)限:搜索文章,瀏覽文章,瀏覽天天問,瀏覽起點(diǎn)學(xué)院的內(nèi)容,但是更深一級(jí)的操作,如文章評(píng)論,回答問題,查看視頻均會(huì)彈出登錄的提示
登錄用戶(核心角色)
用戶基于手機(jī),用戶名和郵箱,微信登錄之后,將獲取到之前存儲(chǔ)的賬戶信息,同時(shí)角色替換為已登錄的用戶,則權(quán)限取未登錄用戶和已登錄用戶的并集。用戶登錄后除了訪客的之前的搜索文章,瀏覽文章,瀏覽天天問,瀏覽起點(diǎn)學(xué)院的內(nèi)容外,附加了作者,評(píng)論者,天天問板塊的角色,獲取對(duì)應(yīng)的消息提醒。
其他角色
起點(diǎn)學(xué)院的年費(fèi)會(huì)員,紅鉆會(huì)員,綠鉆會(huì)員以及天天問的角色,屬于其他角色類型的一種,用戶觸發(fā)則激活該角色的權(quán)限,不觸發(fā)則視為標(biāo)準(zhǔn)的用戶權(quán)限。
具體為:只有在觸發(fā)起點(diǎn)學(xué)院課程的時(shí)候,進(jìn)行瀏覽權(quán)時(shí)判定,其中年費(fèi)會(huì)員>紅鉆會(huì)員>綠鉆會(huì)員,若課程為綠鉆用戶可訪問時(shí),則普通用戶不可訪問,返回錯(cuò)誤。綠鉆及綠鉆以上的會(huì)員可以訪問該視頻。
同理:用戶沒有使用過天天問,或僅僅是瀏覽,沒觸發(fā)其他提問,回復(fù)問題等操作,則沒有觸發(fā)相關(guān)信息的推送提醒
運(yùn)營管理角色
基于相同的邏輯,運(yùn)營團(tuán)隊(duì)也是依據(jù)對(duì)應(yīng)的角色,獲取對(duì)應(yīng)的權(quán)限,對(duì)于用戶,內(nèi)容進(jìn)行管理。比如CECI的賬戶被勾選為天天問的管理員,則CECI可以管理天天問板塊,當(dāng)CECI被勾選文章的管理員,則CECI可以被臨時(shí)當(dāng)苦力,去加快文章的審核進(jìn)度。
同理總編大人和曹大為超管角色,可以同時(shí)管理多個(gè)模塊,以及對(duì)于員工的角色調(diào)整、
四、寫在后面的思考
事實(shí)上,RBAC模型在很多場(chǎng)景都會(huì)運(yùn)用上,希望本科普小文對(duì)大家有所幫助。
RBAC也可以復(fù)雜多樣化,比方說游戲里面的幫派,活動(dòng),門派,跑商,任務(wù)以及對(duì)抗,都是基于角色來觸發(fā)對(duì)應(yīng)的內(nèi)容,加入門派(門派角色),獲得門派的技能樹(門派權(quán)限),加入幫派(門派角色),獲得對(duì)應(yīng)的幫派任務(wù)和幫派福利。
RBAC的復(fù)雜程度是基于后臺(tái)角色的復(fù)雜性,所以做好適當(dāng)?shù)念A(yù)留空間,很重要。同樣,對(duì)于RBAC模型進(jìn)行改造的時(shí)候,對(duì)于整個(gè)用戶-角色-權(quán)限的探索復(fù)盤也很重要,
西蒙的RBAC模型的分享到這里就差不多了,在這里感謝RAIN,小菜鳥,老王,以及很多熱心伙伴的分享和建議。
本文由 @西蒙書策 ?原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自PEXELS,基于CC0協(xié)議
專欄作家
西蒙書策,人人都是產(chǎn)品經(jīng)理專欄作家,一個(gè)玩王者榮耀會(huì)研究貨幣體系的后端產(chǎ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ù)。
rbac
目前在學(xué)習(xí)后臺(tái)產(chǎn)品設(shè)計(jì)中,只知到RBAC這一種模型,但找不到有效的學(xué)習(xí)資料,理解RBAC模型后,覺得對(duì)權(quán)限管理設(shè)置很有幫助,能否請(qǐng)教作者后臺(tái)產(chǎn)品設(shè)計(jì)中常用模型有哪些?以及是否有相關(guān)書籍或文章推薦學(xué)習(xí)?
很仔細(xì),學(xué)習(xí)搜藏了。
同是剛轉(zhuǎn)型產(chǎn)品經(jīng)理,可否交換聯(lián)系方式
RBAC還有多個(gè)變種,我接觸過的有RBAC0,RBAC1,RBAC2,但都是基于角色-權(quán)限的控制模式。
在RBAC的基礎(chǔ)上,根據(jù)自身的需求還可以做各種重新的改變,比如加入職位,部門,組織的關(guān)系,通過職位+部門確定和角色的關(guān)系,再通過人所在職位確定人的角色。
另外,RBAC權(quán)限還可以接入權(quán)限組類,通過權(quán)限組更好的控制權(quán)限。
文章大部分在講操作類權(quán)限,其實(shí)RBAC還有數(shù)據(jù)類權(quán)限,數(shù)據(jù)權(quán)限的應(yīng)用也非常重要。
另外,同為基于thinkPHP,還有一種權(quán)限控制方案,Auth,RBAC更多的是通過節(jié)點(diǎn),角色來進(jìn)行權(quán)限控制,而Auth則不同,有興趣的童鞋也可以自己找資料看一下。
是的,從網(wǎng)上搜索到的資料,基本上都是現(xiàn)成,完整的技術(shù)和實(shí)現(xiàn)方案,但是對(duì)于剛?cè)腴T的產(chǎn)品童鞋,要摸索整個(gè)的原理,范例和梳理會(huì)有些苦惱,所以這個(gè)算是入門級(jí)的科普小文。
贊同你說的其他模式,比如我現(xiàn)在做的RBAC模式除了基于用戶-角色-權(quán)限外還要基于部門和組的關(guān)系,基于這兩種的話角色更多的就是一個(gè)用戶的標(biāo)簽,反而部門和組更能決定用戶的權(quán)限,因?yàn)椴煌牟块T都存在那個(gè)角色,比如實(shí)驗(yàn)室A和實(shí)驗(yàn)室B都有檢測(cè)員的角色,如果按角色劃分給檢測(cè)員這個(gè)角色賦予相同的權(quán)限,就會(huì)造成實(shí)驗(yàn)室A的檢測(cè)員能操作實(shí)驗(yàn)室B中檢測(cè)員創(chuàng)建的內(nèi)容,這樣在邏輯上就會(huì)混淆。