B端平臺權(quán)限體系設(shè)計:RBAC模型的技術(shù)實現(xiàn)邏輯

9 評論 13505 瀏覽 73 收藏 9 分鐘

編輯導(dǎo)語:這篇文章基于B端平臺的權(quán)限體系設(shè)計,細(xì)致地闡述了作者對于RBAC模型的理解,并向我們展示了RBAC模型的具體應(yīng)用和邏輯實現(xiàn)過程。感興趣的話就一起看一下吧。

在以往多個0~1大型數(shù)字中臺項目中,底層權(quán)限體系是我最關(guān)心的,也要求產(chǎn)品經(jīng)理和開發(fā)同學(xué)、尤其是后端開發(fā)必須熟悉后方可進(jìn)入產(chǎn)品開發(fā)項目。

RBAC模型給了B端產(chǎn)品非常容易理解的權(quán)限方法,平臺中也有很多RBAC相關(guān)的文章介紹。本篇重點介紹實際的技術(shù)實現(xiàn)過程,供大家參考,方便B端產(chǎn)品經(jīng)理與開發(fā)同學(xué)的溝通,避免走彎路(曾經(jīng)3個項目在此處折損頗多)。

一、權(quán)限體系的基礎(chǔ)介紹

權(quán)限體系的要素有:業(yè)務(wù)組織、角色、用戶和權(quán)限、頁面、視圖。

  • 組織、角色、用戶是基于業(yè)務(wù)變化可即時調(diào)整的。
  • 權(quán)限是最底層屬性,由開發(fā)人員基于業(yè)務(wù)需求開發(fā)實現(xiàn)。權(quán)限約束的對象是后臺的具體實例。根據(jù)數(shù)據(jù)接口安全需要,可設(shè)計專用的接口權(quán)限。權(quán)限分功能權(quán)限(含菜單權(quán)限)、組織權(quán)限、數(shù)據(jù)權(quán)限。
  • 頁面、視圖是系統(tǒng)按照業(yè)務(wù)配置、給對應(yīng)用戶呈現(xiàn)的內(nèi)容。

詳細(xì)的權(quán)限體系說明,可參考 《成熟CRM系統(tǒng)的權(quán)限體系解析》 一文。

二、對RBAC模型的深度理解

RBAC(基于角色的權(quán)限控制)模型的核心是在用戶和權(quán)限之間引入了角色的概念。取消了用戶和權(quán)限的直接關(guān)聯(lián),改為通過用戶關(guān)聯(lián)角色、角色關(guān)聯(lián)權(quán)限的方法來間接地賦予用戶權(quán)限(如下圖),從而達(dá)到用戶和權(quán)限解耦的目的。

RBAC模型強(qiáng)調(diào)了用戶、角色、權(quán)限間的關(guān)系,但在B端業(yè)務(wù)應(yīng)用中是不能脫離業(yè)務(wù)部門存在的,因此4者必須建立關(guān)系。除了以上4張表外,后臺還需記錄用戶、業(yè)務(wù)部門、角色的關(guān)系表,如下圖:

1. 成熟業(yè)務(wù)平臺中對業(yè)務(wù)記錄的基礎(chǔ)要求

成熟ERP、CRM平臺中權(quán)限體系非常嚴(yán)密,對業(yè)務(wù)記錄有嚴(yán)格的要求:即單條業(yè)務(wù)記錄中必須有業(yè)務(wù)記錄的Owner和Owner所屬的業(yè)務(wù)部門。因此,業(yè)務(wù)記錄必須有7個基本字段:創(chuàng)建人、創(chuàng)建時間、最后修改人、最后修改時間、Owner、Owner所在的業(yè)務(wù)部門+狀態(tài)(啟用/停用),當(dāng)Owner發(fā)生變化時,Owner所在的業(yè)務(wù)部門同步更新。

只有如此,才能保障組織權(quán)限的嚴(yán)格控制,其實現(xiàn)邏輯:按照當(dāng)前用戶所在的組織和角色的數(shù)據(jù)范圍來從數(shù)據(jù)記錄中的Owner所在的業(yè)務(wù)組織來獲取的。加載可見數(shù)據(jù)后,再根據(jù)當(dāng)前用戶的編輯等權(quán)限進(jìn)行前端的功能按鈕控制。

舉例:張三是銷售經(jīng)理,查詢權(quán)限是看見部門所有銷售顧問的客戶數(shù)據(jù),修改權(quán)限是個人的。在獲取客戶列表時,部分客戶的修改按鈕是高亮的(他個人的客戶)、部分客戶的修改按鈕是置灰的(不是他的客戶,是其他銷售顧問的)。上圖中,客戶數(shù)據(jù)在線索中心中,其他業(yè)務(wù)中心的業(yè)務(wù)數(shù)據(jù)類似處理。

2. 權(quán)限體系如何配置和邏輯實現(xiàn)的呢?

權(quán)限配置屬于基礎(chǔ)設(shè)置部分,一般由超管用戶設(shè)定不同角色的權(quán)限,示例:

這樣的權(quán)限配置實際上需要前后端約定的,采用統(tǒng)一的權(quán)限碼來協(xié)同控制,使用excel表等其他方式約定菜單/功能權(quán)限、數(shù)據(jù)權(quán)限和對應(yīng)的權(quán)限代碼。示例:

留3個需要大家思考的問題:

  1. 組織權(quán)限是個人級、全部和本部、本部及以下的處理方式一樣嗎?
  2. 如果一個人擁有多個角色、且不同角色的組織權(quán)限的級別不同,怎么處理?
  3. 有功能權(quán)限就一定可以處理業(yè)務(wù)記錄嗎?

三、更復(fù)雜應(yīng)用:房產(chǎn)銷售中的業(yè)務(wù)組織+項目組織

在房產(chǎn)銷售業(yè)務(wù)中,會有業(yè)務(wù)組織,也會有項目組織及項目相關(guān)的業(yè)務(wù)數(shù)據(jù),如:一個樓盤就是一個項目,這個項目上產(chǎn)生的線索歸屬于項目,客戶歸屬于整個體系,發(fā)展的渠道公司也是歸屬于整個體系。

業(yè)務(wù)人員會在充當(dāng)不同業(yè)務(wù)角色和項目角色,復(fù)雜的如一個人同時在多個業(yè)務(wù)組織中、多個項目組織中,比如張三在BJ城市小區(qū)中任項目助理(擁有整個小區(qū)中的線索數(shù)據(jù)查看權(quán)限),同時在A項目任銷售一組經(jīng)理,B項目(非BJ城市小區(qū))中任銷售二組的案場顧問。此用戶在點擊線索列表時(項目外),看到的是BJ城市組織下的線索+A項目銷售一組的線索數(shù)據(jù)+B項目中歸屬自己的線索。

這樣的結(jié)果,就需要業(yè)務(wù)記錄中既要有業(yè)務(wù)組織ID、還要有項目組織ID。

四、擴(kuò)展知識:各類平臺中的組織

  • 行政組織:HR、OA等使用的行政組織,組織架構(gòu)清晰。
  • 財務(wù)組織:財務(wù)預(yù)決算使用的組織,比如行政組織中有1~5級,但在財務(wù)體系內(nèi)直到3級,那4、5級組織對應(yīng)的財務(wù)組織就是3級。
  • 業(yè)務(wù)組織:業(yè)務(wù)運(yùn)營的組織架構(gòu),與行政、財務(wù)組織類似,但會不同。舉例:董事長下CEO、CEO下CMO+CFO,但業(yè)務(wù)系統(tǒng)中會將董事長、CEO、CMO、CFO均放在公司頂級組織里,甚至財務(wù)會計、BP均會放在公司這層。
  • 虛擬組織:常用于區(qū)域管理組織或職能組織,比如與華南大區(qū)平行的華南虛擬組織中,會有財務(wù)、HR等職能共享組織,也會有負(fù)責(zé)市場物料集中采購的采購專員等。同一個財務(wù)會監(jiān)管2個大區(qū),即在2個大區(qū)虛擬組織中,數(shù)據(jù)范圍是按照平行的華南大區(qū)業(yè)務(wù)組織的權(quán)限。

 

作者:王建儒,MBA,科技公司CPO,18年業(yè)務(wù)運(yùn)營、運(yùn)營平臺規(guī)劃與建設(shè)經(jīng)驗。微信公眾號:王建儒的B星球

本文由 @王建儒 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

 

專欄作家

王建儒,微信公眾號:王建儒的B星球,人人都是產(chǎn)品經(jīng)理專欄作家。18年業(yè)務(wù)運(yùn)營、運(yùn)營平臺規(guī)劃與建設(shè)經(jīng)驗,熟悉S2B2C業(yè)務(wù)模式的業(yè)務(wù)+數(shù)字雙中臺規(guī)劃和落地,聚焦汽車、房產(chǎn)等行業(yè)的營/銷/服/客戶運(yùn)營與數(shù)字轉(zhuǎn)型。甲方IT負(fù)責(zé)人、乙方業(yè)務(wù)專家/產(chǎn)品團(tuán)隊負(fù)責(zé)人。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 訂閱了

    回復(fù)
  2. 厲害!

    來自上海 回復(fù)
  3. 受教

    來自北京 回復(fù)
  4. 1.組織權(quán)限是個人級、全部和本部、本部及以下的處理方式一樣嗎?
    答:【不確定】處理方式是指?
    2.如果一個人擁有多個角色、且不同角色的組織權(quán)限的級別不同,怎么處理?
    答:會擁有所有角色的權(quán)限之和。
    3.有功能權(quán)限就一定可以處理業(yè)務(wù)記錄嗎?
    答:不一定,還要判斷是否有組織權(quán)限、數(shù)據(jù)權(quán)限。

    來自江蘇 回復(fù)
    1. 第二個問題,如果兩個角色互斥,是否需要考慮讓用戶只能選擇一個角色?

      來自浙江 回復(fù)
    2. 是的,這是必須的。比如出納和會計就不可以為同一人。

      來自北京 回復(fù)
    3. 1-處理方式不同:1)個人級權(quán)限,直接找owner;2)全部:直接給所有數(shù)據(jù);3)本部:給owner所在組織的ID、用此ID返回記錄中有此ID的數(shù)據(jù);4)本部及以下:owner所在組織的ID及以下所有組織的組織ID,用這些ID返回記錄中有這些ID的數(shù)據(jù)。
      2-從數(shù)據(jù)查看角度,取最高級別的權(quán)限;但部分業(yè)務(wù)數(shù)據(jù)敏感,就會取最小級別的權(quán)限。避免因角色權(quán)限配置錯誤,而造成數(shù)據(jù)泄露。
      3-一般的有組織和數(shù)據(jù)權(quán)限才會涉及到功能權(quán)限,即先看到了數(shù)據(jù)記錄,才可以修改、刪除。而且功能權(quán)限用戶中心都會同步給業(yè)務(wù)中心的。這里想強(qiáng)調(diào)的是業(yè)務(wù)邏輯控制,如訂單狀態(tài)對功能權(quán)限的影響,舉例:訂單關(guān)閉后,只有查看按鈕、歸檔按鈕,其他按鈕全部置灰。

      來自北京 回復(fù)
  5. 超贊,收獲很大

    回復(fù)
  6. 來自廣東 回復(fù)