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