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