SaaS後台經驗分享:如何設計許可權管理

許可權管理的作用

SaaS後台系統中,數據具有敏感性,由於工作職責不同,所以用戶擁有的許可權也不同。因此,系統需要給用戶分配許可權,使得用戶在規定範圍內使用系統。

RBAC模型介紹

本文介紹的RBAC模型是一個模型族,它包含了RBAC0~RBAC3四個概念性模型。

  1. 基本模型RBAC0定義了完全支持RBAC概念的任何系統的最低需求。RBAC1和RBAC2兩者都包含RBAC0,但各自都增加了獨立的特點,它們被稱為高級模型。

  2. RBAC1中增加了角色分級的概念,一個角色可以從另一個角色繼承許可權。

  3. RBAC2中增加了一些限制,強調在RBAC的不同組件中在配置方面的一些限制。

  4. RBAC3稱為統一模型,它包含了RBAC1和RBAC2,利用傳遞性,也把RBAC0包括在內。這些模型構成了RBAC模型族。

本文主要介紹RBAC0模型,雖然是最基礎、最核心的許可權模型,但只要學習理解了其中的思想,便可以設計RBAC1~3的模型了;

RABC0的設計

RBAC(Role-Based Access Control )意為基於角色的訪問控制,角色是許可權集合,通過給用戶分配許可權達到控制訪問的目的。

RBAC認為許可權的過程可以抽象概括為:判斷【Who是否可以對What進行How的訪問操作(Operator)】這個邏輯表達式的值是否為True的求解過程。

即將許可權問題轉換為Who、What、How的問題,因此我們需要定義的是角色、資源和行為。

比如我們需要考慮:

  • 系統有哪些用戶,可以分為哪些角色;

  • 系統有哪些功能(資源)需要按許可權來劃分;

  • 功能(資源)的拆分粒度,到頁面還是到具體按鈕操作;

  • 新用戶的默認角色和許可權;

  • 用戶與角色是「多對一」還是「多對多」;

  • 新增的功能是默認全部角色「可用」還是「不可用」;

  • ......

這些都是比較細節的問題,我們在設計功能時需要考慮。

下面主要說一下Who,What,How的定義。

1.定義角色(Who)

前期需要進行用戶訪談,了解不同崗位的用戶的工作職責,並抽象出幾個角色。

然後,用戶與角色之間的關係需要明確是「多對一」還是「多對多」。這個問題需要結合業務場景進行討論,如果用戶的工作職責界限分明、不同工作崗位都有專門員工,那麼此時可以設計成「多對一」,即用戶只有一個角色,一個角色可以對應多個用戶;

如果某些用戶的工作內容跨越幾個職能,則可以設計成「多對多」,即一個用戶可擁有多個角色,一個角色也可對應多個用戶。

這裡還需注意的是,為了系統的靈活性,角色的許可權應是可編輯的,管理員可以創建角色,並對角色的許可權進行修改以應對工作場景的變化。

2.定義資源(What)

資源包括功能和數據。

定義功能時需要明確,功能許可權到頁面級別還是操作級別。在一些許可權嚴格的業務場景,比如電商ERP中,則會要求定義到操作級別,比如銷售報表導出按鈕,計算毛利率按鈕等;如果許可權比較寬鬆的,則可能只到頁面級別,比如該角色是否能訪問訂單列表等等。這些都需要根據業務需求決定。

定義數據時則比較簡單,可以根據該角色綁定的店鋪或區域來限制用戶的數據許可權,比如美國運營專員只綁定美國區的,則只能獲取美國區的數據。

3.定義行為(How)

行為包括增刪查改。不同的角色可根據需要設置不同的操作許可權,比如對於同樣的成績管理頁面,學生只能查看成績,不能修改成績;但教師同時擁有修改成績和查看成績的功能。


推薦閱讀:

TAG:SaaS | 用戶許可權 | 後台產品 |