使用者 角色 許可權系統概述

2022-06-16 06:06:10 字數 2197 閱讀 7215

參考部落格:

迄今為止最為普及的許可權設計模型是rbac模型,基於角色的訪問控制(role-based access control)

1.1 rbac0模型

rbac0模型如下:

這是許可權最基礎也是最核心的模型,它包括使用者/角色/許可權,其中使用者和角色是多對多的關係,角色和許可權也是多對多的關係。

使用者是發起操作的主體,按型別分可分為2b和2c使用者,可以是後台管理系統的使用者,可以是oa系統的內部員工,也可以是面向c端的使用者,比如阿里雲的使用者。

角色起到了橋梁的作用,連線了使用者和許可權的關係,每個角色可以關聯多個許可權,同時乙個使用者關聯多個角色,那麼這個使用者就有了多個角色的多個許可權。有人會問了為什麼使用者不直接關聯許可權呢?在使用者基數小的系統,比如20個人的小系統,管理員可以直接把使用者和許可權關聯,工作量並不大,選擇乙個使用者勾選下需要的許可權就完事了。但是在實際企業系統中,使用者基數比較大,其中很多人的許可權都是一樣的,就是個普通訪問許可權,如果管理員給100人甚至更多授權,工作量巨大。這就引入了"角色(role)"概念,乙個角色可以與多個使用者關聯,管理員只需要把該角色賦予使用者,那麼使用者就有了該角色下的所有許可權,這樣設計既提公升了效率,也有很大的拓展性。

許可權是使用者可以訪問的資源,包括頁面許可權,操作許可權,資料許可權:

以上是rbac的核心設計及模型分析,此模型也叫做rbac0,而基於核心概念之上,rbac還提供了擴充套件模式。包括rbac1,rbac2,rbac3模型。下面介紹這三種型別

1.2 rbac1模型

此模型引入了角色繼承(hierarchical role)概念,即角色具有上下級的關係,角色間的繼承關係可分為一般繼承關係和受限繼承關係。一般繼承關係僅要求角色繼承關係是乙個絕對偏序關係,允許角色間的多繼承。而受限繼承關係則進一步要求角色繼承關係是乙個樹結構,實現角色間的單繼承。這種設計可以給角色分組和分層,一定程度簡化了許可權管理工作。

1.3 rbac2模型

基於核心模型的基礎上,進行了角色的約束控制,rbac2模型中新增了責任分離關係,其規定了許可權被賦予角色時,或角色被賦予使用者時,以及當使用者在某一時刻啟用乙個角色時所應遵循的強制性規則。責任分離包括靜態責任分離和動態責任分離。主要包括以下約束:

1.4 rbac3模型

即最全面的許可權管理,它是基於rbac0,將rbac1和rbac2進行了整合

1.5 使用者組

當平台使用者基數增大,角色型別增多時,而且有一部分人具有相同的屬性,比如財務部的所有員工,如果直接給使用者分配角色,管理員的工作量就會很大,如果把相同屬性的使用者歸類到某使用者組,那麼管理員直接給使用者組分配角色,使用者組裡的每個使用者即可擁有該角色,以後其他使用者加入使用者組後,即可自動獲取使用者組的所有角色,退出使用者組,同時也撤銷了使用者組下的角色,無須管理員手動管理角色。

根據使用者組是否有上下級關係,可以分為有上下級的使用者組和普通使用者組:

每個公司都會涉及到到組織和職位,下面就重點介紹這兩個。

1.5.1 組織

常見的組織架構如下圖:

我們可以把組織與角色進行關聯,使用者加入組織後,就會自動獲得該組織的全部角色,無須管理員手動授予,大大減少工作量,同時使用者在調崗時,只需調整組織,角色即可批量調整。組織的另外乙個作用是控制資料許可權,把角色關聯到組織,那麼該角色只能看到該組織下的資料許可權。

1.5.2 職位

假設財務部的職位如下圖:

每個組織部門下都會有多個職位,比如財務部有總監,會計,出納等職位,雖然都在同一部門,但是每個職位的許可權是不同的,職位高的擁有更多的許可權。總監擁有所有許可權,會計和出納擁有部分許可權。特殊情況下,乙個人可能身兼多職。

1.6 含有組織/職位/使用者組的模型

根據以上場景,新的許可權模型就可以設計出來了,如下圖:

根據系統的複雜度不同,其中的多對多關係和一對一關係可能會有變化,

授權即給使用者授予角色,按流程可分為手動授權和審批授權。許可權中心可同時配置這兩種,可提高授權的靈活性。

有了上述的許可權模型,設計表結構就不難了,下面是多系統下的表結構,簡單設計下,主要提供思路:

在專案中可以採用其中一種框架,它們的優缺點以及如何使用會在後面的文章中詳細介紹.

許可權系統可以說是整個系統中最基礎,同時也可以很複雜的,在實際專案中,會遇到多個系統,多個使用者型別,多個使用場景,這就需要具體問題具體分析,但最核心的rbac模型是不變的,我們可以在其基礎上進行擴充套件來滿足需求。

使用者,角色,許可權概述

author yeexun date 發表於 2010年12月26日 10 01 00 address jau 17 304 在建立使用者時,oracle 會把使用者的資訊存放到資料字典中,當給使用者授予許可權或角色時,oracle 會將許可權和角色的資訊存放到資料字典。通過查詢 dba users...

使用者 角色 許可權

最近因為要用到許可權這個東西,感覺腦袋很是有點亂,昨天硬是搞到大半夜才終於理清了思路。現在我就將我的思路和大家分享一下,不敢保證完全正確,大家看看便罷。看看便罷 一般我們使用到 使用者 角色 許可權 這三張表的時候,會發現表裡會有很多字段,然後相對應的外來鍵也是很多,往往我們就容易混亂。現在我這邊列...

使用者角色許可權

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...