首頁 > 運營推廣 > 正文

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

2020-02-13 22:30:00 來源:金橙教程網 作者:admin7 瀏覽:78次 「手機版」

權限設計

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

一、什么是RABC

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

RABC的好處

職能劃分更謹慎。對于角色的權限調整不僅僅只影響單個用戶,而是會影響關聯此角色的所有用戶,管理員下發/回收權限會更為謹慎;

便于權限管理。對于批量的用戶權限調整,只需調整用戶關聯的角色權限即可,無需對每一個用戶都進行權限調整,既大幅提升權限調整的效率,又降低漏調權限的概率;

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

RBAC0,這是RBAC的初始形態,也是最原始、最簡單的RBAC版本;

RBAC1,基于RBAC0的優化,增加了角色的分層(即:子角色),子角色可以繼承父角色的所有權限;

RBAC2,基于RBAC0的另一種優化,增加了對角色的一些限制:角色互斥、角色容量等;

RBAC3,最復雜也是最全面的RBAC模型,它在RBAC0的基礎上,將RBAC1和RBAC2中的優化部分進行了整合;

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

1、用戶-角色-權限

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

用戶和角色是多對一關系,即:一個用戶只充當一種角色,一種角色可以有多個用戶擔當;

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

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

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

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

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

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

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

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

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

組織層級劃分。如下圖,我們需要對組織進行梳理,并劃分層級;

數據可視權限規則制定。比如:上級組織職能看到下級組織員工負責的數據,而不能看到其他平級組織及其下級組織的員工數據等。

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

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

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

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

識別用戶的主要身份。一個人可能身兼多職(多個角色),但是他的主要職能是固定的,那怎么告訴系統用戶的主要職能是什么呢?答案就是:通過崗位!拿上面的小馬哥舉例:小馬哥雖然身兼經理和財務兩種身份,但他的本職工作是“經理”,因此,他的系統崗位應該“經理”。當他登錄時,系統會識別他的身份為“經理”,只不過這個“經理”剛好兼具了其他崗位的職能而已;

通過“組織-崗位”關聯,快速甄別用戶崗位。公司在不斷地發展的過程中,系統的用戶角色也會不斷增加,當角色達到一定數量以后,管理員每新增一個用戶都要花相當的時間去尋找角色。引入崗位后,可將組織和崗位、崗位和角色提前進行關聯,配置賬號時,管理員只要選定組織,系統就給出與該組織關聯的崗位,而這些崗位,又是提前關聯好角色的,選擇起來,既方便又高效!

三、總結

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

在最后,也給大家留下兩個小問題,大家有興趣的話可以思考下并在評論區寫出你的答案哦:

在不增加“組織”的情況下(即:第一種權限體系),能否達到數據私密性的控制?如何達到?

在第二種權限體系中,如何做到將“團隊A”的員工和管理者設置在同一個組織下,但又能保證員工只能看到自己的數據,而管理者可以看到該團隊所有員工的數據?

題圖來自unsplash,基于CC0協議

相關閱讀

角色權限設計的100種解法

以下作者結合自己的幾次權限設計經歷,提供一些所謂的經驗套路,希望各位設計師從此微笑迎接權限需求。一、令人頭疼的權限設計設計師

(責任編輯:jjjccc)

關鍵詞:權限設計

福彩3d字谜画谜藏机图