一文講透 B 端權限系統的概念及原理

1 評論 2528 瀏覽 26 收藏 10 分鐘

后臺系統的權限管理系統這個功能,可謂是難倒了一大批產品經理。本文總結了B 端權限系統的概念及原理,希望對你有所幫助。

發現最近好多人在問,后臺系統的權限管理怎么做。

權限管理這個功能,可以說難倒了一大批產品經理。

雖然講權限的文章一大堆,但真正講透的屈指可數。

剛好前段時間,我設計的多租戶權限系統上線了,做的過程中也總結了一些經驗,這里簡單聊聊。

一、權限概念

什么是權限?

權限是后臺的基礎模塊之一,沒有它的話每個用戶都是超級管理員,系統數據可以任意操作、改寫,如果是這樣那公司就亂套啦。

為了避免這種情況發生,后臺需要上線權限功能。

它確保了不同用戶進行合理分工和操作,避免了風險管理、數據安全等問題。

產品經理如果想搞懂和設計權限系統,需要先學會這 3 個基礎概念:用戶、權限、角色。

  • 用戶:這里的用戶,指的是后臺的用戶賬號;
  • 權限:權限規定了系統的操作范圍或數據查看限制,像“新增、編輯、刪除”等就是權限的一種;
  • 角色:角色包含了一組權限集合,主要以用戶的職責或功能來定義,例如“管理員、銷售、內容管理”等角色,它們擁有的權限各不相同。

二、權限分類

權限看起來很復雜,其實說起來只有這兩種分類:功能權限、數據權限。

1. 功能權限

功能權限,主要控制賬號的組件可視范圍,常見的有目錄、菜單、按鈕等。

  • 目錄:一般在系統的頂部,例如“用戶、營銷、系統”等一級管理入口;
  • 菜單:指的是系統左側的多級導航組件,點擊即可進入對應的功能頁面,例如營銷目錄中的“積分管理、活動管理、優惠券管理”等都是菜單;
  • 按鈕:在頁面中的功能操作都可視為按鈕,常見的“搜索、新增、編輯、刪除、打印”等功能都由相關按鈕控制。

2. 數據權限

數據權限則決定了用戶能看哪些數據,一般通過“部門、品牌、區域”等維度劃分數據權限。

例如廣東地區的同事,只能看到廣東地區的銷售數據,其他海南、青島等區域的數據,在系統界面將隱藏。

二、權限模型

權限模型有很多種,例如“ACL 模型、DAC 模型、MAC 模型、RBAC 模型、ABAC 模型”等。

這些權限模型為什么會產生?主要是公司基于“組織體量、業務背景、實施成本”等因素權衡取舍后的解決方案。

而我們在日常過程中,由于業務不大、公司架構簡單等因素,一般只需要用到“ACL 模型、RBAC 模型”這兩種。

1. ACL 模型

ACL 模型中,涉及了“用戶、權限”這兩個概念,主要通過用戶綁定多個權限,實現了權限控制管理。

例如 A 賬號是客服在用,它綁定了“內容管理、訂單管理”等權限,而 B 賬號作為老板專屬,當然是權限全開啦。

這種方案比較適合小公司,開發量較少。

但弊端是,當維護的用戶足夠多,而且它們權限大差不大時,配置權限的那個人一定很崩潰。

2. RBAC 模型

為了解決配置繁瑣的問題,我們需要使用 RBAC 模型。

RBAC 模型相比 ACL,多了一個角色的概念。

角色主要是為了將用戶、權限進行解耦,以達到權限“批量配置、隨時更新”的目的。

例如將原先的 A 賬號權限,分配給客服角色,然后再把老板 B 賬號,給到“超級管理員”角色。

那么當公司有 20 個客服,3 個老板時,通過 RBAC 模型,配置權限就只需要幾分鐘。

三、權限原理

如果你覺得一項知識太高深難懂,也許只是還沒找到學它的正確姿勢。——好夕雷

說了這么多概念和模型, 聽起來可能比較抽象。

我們試著用一些簡單的 Excel 表(為了便于理解,簡化了部分數據),來理解 ACL 模型、RBAC 模型的權限原理。

1. ACL 模型,如何實現權限控制?

在 ACL 模型中,想實現權限控制,我們首先需要“用戶、權限”這兩個主表。

現在問題來了,你上司突然要你搞定下面的權限配置,該怎么做?

  • 張三:由于是剛來的新員工,只能看一些文章數據;
  • 李四:李四是公司的老油條了,文章、文章評論的管理工作,都是由他處理的;
  • 王五:這個人是老板親戚,只需要看看商品、文章、動態等用戶的反饋評論,然后找老板告狀。

聽起來真是頭大阿!躺平行不行?

要想實現上司的權限需求,你還需要用到第三個表“用戶權限關聯”。

這個表的作用,是將用戶與權限的關系進行綁定,方便系統確認不同用戶的權限范圍。

按上司的要求,我們完成了用戶權限的配置。

無論界面交互層如何花里胡哨,功能實現的本質還是數據操作?!孟?/p>

由于在數據庫中,這些關系是通過 ID、代號表示的,看起來比較抽象。

我們試著用文字替代。

怎樣,看起來是不是容易理解多啦?

2. RBAC 模型,如何實現權限控制?

前面我們講到,RBAC 模型相比 ACL 模型多了角色的概念。

所以除了“用戶、權限”表之外,我們還需要一個“角色”主表,并按需求配置 3 個角色。

  1. 新員工:查看文章;
  2. 老油條:管理文章和文章評論;
  3. 老板親戚:查看商品、文章、動態等評論。

由于權限邏輯變了,所以原先那個“用戶權限”表就沒啥用了。

我們還需要“用戶角色關聯、角色權限關聯”這兩個新表,來實現 RBAC 模型的權限控制。

上圖中,其實有兩個問題需要注意:

  1. 用戶擁有多個角色:這種情況,我們一般是取兩個角色的所有去重權限,作為當前用戶的權限范圍,其他特殊功能需求,可以視情況更改;
  2. 數據權限實現原理:系統在判斷一個角色的數據權限,首先驗證是否有該對象的數據權限,然后再按“權限范圍”限制,顯示相關數據;例如 A 角色能查看“廣州、上海、南京”等地區的訂單數據。

總結

權限系統看起來很復雜,其實只要你掌握了權限的概念、分類、模型、原理,那么想要設計一個權限方案也不算難。

本文由 @好夕雷 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. ACL 模型、DAC 模型、MAC 模型、RBAC 模型、ABAC 模型,作者可以解釋一下縮寫的全稱嗎?可能更有助于理解一點。

    來自廣東 回復