帳號權限管理一直是產品系統的重要議題,近期規劃權限功能時發現 RBAC 這套模型,才開始了解為什麼要有 User-Role-Permission 的架構,隨著系統規模的擴大和複雜度的增加,傳統的權限管理模式已經無法滿足需求,而基於角色的訪問控制(Role-Based Access Control,簡稱 RBAC)模型就為系統提供更加靈活的權限管理方式。
在傳統的權限模型,我們直接將權限賦予用戶(信箱),這種方式在小型系統中可能還能應付,但在大型複雜系統中很快就會變得難以管理,不太可能讓每個信箱都有不同權限,在管理上太麻煩。
因此 RBAC 模型的核心思想是引入「角色」的概念,將權限賦予在角色身上,再將角色綁定在用戶(信箱)。
RBAC 模型的主要元素包括:
⠀⠀
RBAC 模型的工作流程如下:
⠀⠀
⠀⠀
比對了 RBAC 這種 User-Role-Permission 架構和傳統的 User-Permission 架構,差異是:
⠀⠀
以下是常見的 RBAC 案例:
⠀⠀
在一個大型倉庫管理系統中,可能會有以下角色:
在這個系統中,如果有一個新員工要成為上架人員,我們只需要將他的信箱指定到「上架人員」這個角色,他就會獲得上架人員的所有權限。
若上架人員要新增一個權限,我們只需要針對「上架人員」這個角色增加設定,裡面的所有「用戶」的帳號就會被套用。
若某個用戶要改成管理員,也只需調整該帳號對應的「角色」即可。從上架人員改成管理員。
⠀⠀
在電商平台中,可能會有以下角色:
通過這種角色劃分,平台可以精確控制每種用戶的權限,確保每個人只能訪問與其職責相關的功能。
⠀⠀
⠀⠀
⠀⠀
要在一個系統中搭出 RBAC 模型,前期需要建立幾個機制:
⠀⠀
在開發過程,則需要確認:
⠀⠀
實務上,以業務場景還需要確認:
⠀⠀
⠀⠀
⠀⠀
RBAC 模型幾乎是現在大型系統的權限管理方式,從倉庫管理系統、銀行系統、電商系統,都有滿好的適應。
但 RBAC 模型也不是萬能的,實際操作場景可能還需要搭配其他控制模型來滿足複雜的業務需求。
如對這系列文章有興趣可以再觀看: