RBAC(基于角色訪問控制)-系統權限設計
Role-Based Access Control,基于角色(Role)的訪問控制。
簡單說就是通過將權限分配給?角色,再將角色分配給?用戶,來實現對系統資源的訪問控制。一個用戶擁有若干角色,每一個角色擁有若干權限。
3個概念:
角色(Role):角色是指在系統中具有一組相關權限的抽象概念,代表了用戶在特定上下文中的身份或職能,例如管理員、普通用戶等。
權限(Permission):權限是指對系統資源進行操作的許可,如讀取、寫入、修改等。權限可以被分配給角色。
- 功能權限是系統執行權限控制的基本單元,包括頁面權限、菜單權限、按鈕權限等
- 數據權限包括基礎數據、業務數據、資源數據等
用戶(User):用戶是指系統的實際使用者,每個用戶可以被分配一個或多個角色。
RBAC0模型:

RBAC1:角色繼承的RBAC模型
在角色中引入上下級關系的RBAC模型就叫做角色繼承的RBAC模型(RBAC1),通過給角色分級,高級別的角色可繼承低級別角色的權限,一定程度上簡化了權限管理工作

另外角色間的繼承關系可分為一般繼承關系和受限繼承關系。一般繼承關系要求角色繼承關系是一個絕對偏序關系,允許角色間的多向繼承,即下級角色可以擁有多個上級角色,上級角色也可以擁有多個下級角色。而受限繼承關系則要求角色繼承關系是一個樹狀結構,角色間只能單向繼承,即下級角色只能擁有一個上級角色,但是上級角色可以擁有多個下級角色。
RBAC2:角色限制的RBAC模型
RBAC2 = RBAC1 + 職責分離
-
靜態職責分離(SSD)?:
- ?定義?:靜態職責分離是指在權限分配階段,通過預定義的規則確保某些角色之間不能同時被分配給同一個用戶。
- ?目的?:防止用戶擁有過多的權限,從而減少潛在的安全風險。
- ?示例?:銷售經理和財務經理角色互斥,不能同時賦予同一用戶。
1、角色互斥:互斥角色是指各自權限互相制約的兩個角色,同一用戶只能分配到一組互斥角色集合中至多一個角色。比如財務部的用戶就不能同時擁有會計和審核員這兩個角色;
2、基數約束:用戶可擁有的角色數量受限,角色被分配的用戶數量受限,角色對應的權限數量也受限;
3、先決條件:用戶在獲得角色A的同時,必須先獲得角色B。
-
?動態職責分離(DSD)?:
- ?定義?:動態職責分離是指在用戶激活角色時,系統檢查并確保用戶當前激活的角色之間不存在沖突。
- ?目的?:在用戶會話期間,實時監控角色激活情況,確保不違反職責分離原則。
- ?示例?:用戶已激活銷售經理角色時,系統阻止其同時激活財務經理角色。
RBAC3:統一的RBAC模型
RBAC3=RBAC1+RBAC2,既引入了角色間的繼承關系,又引入了角色限制關系。
- ?核心特性?:RBAC3不僅支持角色的分層(如RBAC1),還引入了職責分離(如RBAC2)的特性,包括靜態職責分離和動態職責分離。這使得RBAC3在權限管理上更加靈活和強大。
- ?角色分層?:在RBAC3中,角色之間存在上下級關系,這種層次結構有助于更好地組織和管理角色。
- ?職責分離?:RBAC3通過靜態和動態兩種方式確保用戶不能同時擁有沖突的角色或權限,從而增強了系統的安全性。
組:完善的RBAC模型
現有的權限管理模型雖然已經對“角色”進行了層級優化,但并沒有優化“用戶”方,這就意味著每入職一個新員工,小王得單獨為其設置權限,還是很麻煩,于是他利用抽象的思想將相同屬性的用戶進行歸類。在公司里,最簡單的相同屬性就是“部門”了,如果給部門賦予了角色和權限,那么這個部門中的所有用戶都有了部門權限,而不需要為每一個用戶再單獨指定角色。
用戶可以分組,權限同樣也可以分組。在權限特別多的情況下,可以把同一層級的權限合并為一個權限組,如二級菜單下面有十幾個按鈕,如果對按鈕的操作沒有角色限制,可以把這些按鈕權限與二級菜單權限合并為一個權限組,然后再把權限組賦予角色就可以了。
“組”概念的引入完善了RBAC模型,在簡化操作的同時更貼近了實際業務,便于理解。

參考資料:https://blog.csdn.net/fsgvcrgg/article/details/132016290?spm=1001.2014.3001.5501

浙公網安備 33010602011771號