組織機構 許可權 角色設計

2022-08-12 05:00:12 字數 2000 閱讀 5284

迄今為止最為普及的許可權設計模型是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 含有組織/職位/使用者組的模型

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

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

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

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

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

組織機構認證服務

專案需求 使用者和組織機構服務平台。1.單點登入 2.使用者和組織機構層級管理 初步不成熟設計 手動畫了一圖,字太醜,不好意思呈現,等週末有空補上 大致是這樣的 1.整體分三部分 1 外部單位 也就是單點登入白名單裡的單位 2 組織機構分很多單位,有層級劃分,比如市,區縣,校等 3 各個單位下的使用...

組織機構樹查詢

組織機構樹遞迴查詢 查詢父級節點的所有子節點 select organizational id,organizational name,parent id from sys organizational where is used 1 start with parent id 父級節點id conn...

java 遞迴查詢組織機構樹

需求 不要在資料庫層寫儲存過程或者呼叫資料庫自帶方法實現,因為資料庫有可能是mysql或者是oracle。核心遞迴 description 遞迴查詢機構 param param departlist param param departid 設定檔案 return void 返回型別 throws ...