RBAC不同場景下的演化

RBAC應用最爲廣泛的權限管理模型,核心的三要素是:賬戶、角色、權限,但並不僅僅侷限於這三個核心要素,基於企業規模、用戶規模、運維複雜度,RBCA其實是有很多的變種。從理論角度,有所謂的RBAC0、RBAC1、RBAC2、RBAC3等變種,這裏就不講這些理論,大家一搜就能明白,我按照演化的思路去看下RBAC的變化。

 

1、基本的RBAC模型

RBAC的核心就是在用戶和權限中間增加角色這一層級,提升了權限體系的擴展性。取消了用戶和權限的直接關聯,改爲通過用戶關聯角色、角色關聯權限的方法來間接地賦予用戶權限,從而達到用戶和權限解耦的目的。

 

如果沒有角色的概念,系統中每加入一個用戶,就需要爲這個用戶配置一遍權限,下圖是wiki中直接爲用戶權限管理方式,可以看出管理成本巨大。

而引入“角色”概念後,如下圖即是RBAC模型中最基本的模型:用戶與角色可爲多對一或多對多的關係,當一個用戶的角色爲多對多時,當前用戶的權限是多個角色的並集。

 

此時只需要爲角色賦予權限,能夠大大減輕管理負擔,同時將用戶與權限解耦,提供更大的靈活性。

 

2、提升賬戶賦權的靈活性:引入崗位概念的RBAC模型

在大型平臺的應用上,試想如果用戶量上萬,新增一個角色時,可能需要爲大量用戶都分配一遍新的角色,工程量仍然巨大,此時即可以引入崗位的概念,崗位是多個角色的合集。如果部分用戶的使用場景是相對一致和基礎的,我們可以把這些用戶打包成一個組,基於崗位的對象進行角色和權限的賦予。

再次驗證了,提升產品的擴展性和靈活性,增加一層就好。

3、提升權限運維的便捷性:引入權限組概念的RBAC模型

同理如果權限較多時也會存在一樣的問題,處理方式是引入權限組的概念,將使用場景相對固定的一組功能或權限打包成組賦予角色。但是一般來講一個系統中權限功能的體量是相對有限和可控的,所以實際應用中對權限組的使用較少。

 

4、集團型企業組織數據的隔離:引入組織的RBAC模型

通過角色所綁定的組織,來決定賬戶能訪問的數據範圍,這也是2B類ERP所採用的方法。

 

附:RBAC在維基百科的模型

 

多組織訪問能力

上圖的角色和組織是一對一,也就是一個角色只能訪問一個組織,想要訪問其他組織,就得切換新的角色,用戶體驗不好。

Oracle EBS有一個很好地功能就是多組織(MO,Multi Org),通過一些配置,可以選擇角色是單組織或是多組織,如果是多組織,這個角色在不用切換的情況下就能訪問多個組織的數據。

 

附:多年前,畫的Oracle EBS職責與組織的關係腦圖。

 

6、進一步擴展,員工和賬戶的關聯

很好理解,賬戶不一定代表員工,可能是一個虛擬的賬號,對於大型企業有精細化管理的要求,需要把賬號和HR中的員工進行關聯,那就可以再增加一層員工。

 

7、權限的拆分與設計

通過RBAC模型已經能夠很好的搭建起用戶、角色與權限之間的關係了,但具體權限其實還沒有展開。對於一般的系統,權限包括:頁面權限、操作權限、數據權限

但具體是什麼樣的關係,以及“權限”這個抽象的概念具體如何規劃?這些都需要分析清楚才能進一步設計出完善的權限系統。首先需要知道,一般產品的權限由頁面、操作和數據構成。頁面與操作相互關聯,必須擁有頁面權限,才能分配該頁面下對應的操作權限。數據可被增刪改查。

整體關係如下圖所示:

 

示例

 

參考

NITST Model For Role-Based Access Control

角色權限設計的100種解法

基於RBAC模型的權限設計:如何設計系統權限體系?

 

發佈了932 篇原創文章 · 獲贊 1224 · 訪問量 566萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章