RBAC權限體系設計簡單說明

RBAC目前使用最爲廣泛的權限模型,本文通過平常工作及工作外的積累,整理了幾種比較經典的權限體系,希望對大家有所幫助!

一、什麼是RBAC

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

組成部分:用戶,角色,權限,用戶角色關係,角色權限關係

例如: a.功能需求列表

b.權限控制流程

RABC的好處

  1. 職能劃分更謹慎。對於角色的權限調整不僅僅只影響單個用戶,而是會影響關聯此角色的所有用戶,管理員下發/回收權限會更爲謹慎;
  2. 便於權限管理。對於批量的用戶權限調整,只需調整用戶關聯的角色權限即可,無需對每一個用戶都進行權限調整,既大幅提升權限調整的效率,又降低漏調權限的概率;

在不斷的發展過程中,RBAC也因不同的需求而演化出了不同的版本,目前主要有以下幾個版本:

  1. RBAC0,這是RBAC的初始形態,也是最原始、最簡單的RBAC版本;
  2. RBAC1,基於RBAC0的優化,增加了角色的分層(即:子角色),子角色可以繼承父角色的所有權限;
  3. RBAC2,基於RBAC0的另一種優化,增加了對角色的一些限制:角色互斥、角色容量等;
  4. RBAC3,最複雜也是最全面的RBAC模型,它在RBAC0的基礎上,將RBAC1和RBAC2中的優化部分進行了整合;

二、基於RBAC的幾種權限體系設計

1、用戶-角色-權限

這種權限體系其實就是RBAC0的模式了。這裏面又包含了2種:

  1. 用戶和角色是多對一關係,即:一個用戶只充當一種角色,一種角色可以有多個用戶擔當;
  2. 用戶和角色是多對多關係,即:一個用戶可同時充當好幾種角色,一種角色可以有多個用戶擔當;

如上圖:對於左邊的用戶-角色對應,每個人只能同時擁有一種角色,但是同一個角色裏邊,可能會含有多個用戶(如:李四和王麻子都是業務員);而右邊的用戶-角色對應,是在左邊的基礎上,增加了一個用戶可擁有多種角色的情況(如:小馬哥既是經理,也要負責財務的工作);

那麼,什麼時候該使用多對一的權限體系,什麼時候又該使用多對多的權限體系呢?

我的建議是:儘量可能地使用多對多的權限體系。如果這個系統的功能比較單一、使用人員較少、崗位權限相對清晰且不會出現兼崗的情況,這種情況也可以考慮用多對一的權限體系。

2、用戶-組織-角色-權限

一般公司的業務管理系統,都有數據私密性的要求:哪些人可以看到哪些數據,哪些人不可以看到哪些數據。這個時候,我們就需要把這些東西也考慮到你的權限體系內了。

假設上圖是一家公司業務部門的組織架構圖,公司要求你基於這個組織架構設計一個業務管理系統,並要求系統需要滿足不同用戶的數據私密性,比如:“張三”登錄時,只能看到“張三”負責的數據;“張三”的領導登錄時,能看到“團隊A”的所有業務員負責的數據,但看不到其他團隊業務員負責的數據等等。

在這種情況下,上一種權限體系就不適用了,但我們可以對其進行一些小改造後,即可達到數據管控的目的,如下圖:

在“用戶-角色-權限”的基礎上,我們增加了用戶與組織的關聯關係,組織決定了用戶的數據可視權限。但要想真正達到這個效果,我們還需要做2件事:

  1. 組織層級劃分。如下圖,我們需要對組織進行梳理,並劃分層級;
  2. 數據可視權限規則制定。比如:上級組織職能看到下級組織員工負責的數據,而不能看到其他平級組織及其下級組織的員工數據等。

通過以上兩點,系統就可以在用戶登錄時,自動判斷要給用戶展示哪些數據了!

3、用戶-組織-崗位-角色-權限

第三種權限體系又是在第二種權限體系上進行優化的,增加了用戶與崗位的關聯關係,示意圖如下:

增加崗位有以下幾點好處:

  1. 識別用戶的主要身份。一個人可能身兼多職(多個角色),但是他的主要職能是固定的,那怎麼告訴系統用戶的主要職能是什麼呢?答案就是:通過崗位!拿上面的小馬哥舉例:小馬哥雖然身兼經理和財務兩種身份,但他的本職工作是“經理”,因此,他的系統崗位應該“經理”。當他登錄時,系統會識別他的身份爲“經理”,只不過這個“經理”剛好兼具了其他崗位的職能而已;
  2. 通過“組織-崗位”關聯,快速甄別用戶崗位。公司在不斷地發展的過程中,系統的用戶角色也會不斷增加,當角色達到一定數量以後,管理員每新增一個用戶都要花相當的時間去尋找角色。引入崗位後,可將組織和崗位、崗位和角色提前進行關聯,配置賬號時,管理員只要選定組織,系統就給出與該組織關聯的崗位,而這些崗位,又是提前關聯好角色的,選擇起來,既方便又高效!

三、總結

以上是基於RBAC模型的三種權限體系,不難看出,三種權限體系的本質都是用戶和權限進行解耦,以達到權限的靈活運用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章