許可權系統設計的理論基礎--RBAC
RBAC
基於角色的訪問控制(Role-Based Access Control)引入了Role的概念,目的是為了隔離User(即動作主體,Subject)與Privilege(許可權,表示對Resource的一個操作,即Operation+Resource)。
Role作為一個使用者(User)與許可權(Privilege)的代理層,解耦了許可權和使用者的關係,所有的授權應該給予Role而不是直接給User或Group。Privilege是許可權顆粒,由Operation和Resource組成,表示對Resource的一個Operation。例如,對於新聞的刪除操作。Role-Privilege是many-to-many的關係,這就是許可權的核心。
基於角色的訪問控制方法(RBAC)的顯著的兩大特徵是:1.由於角色/許可權之間的變化比角色/使用者關係之間的變化相對要慢得多,減小了授權管理的複雜性,降低管理開銷。2.靈活地支援企業的安全策略,並對企業的變化有很大的伸縮性。
RBAC基本概念:
RBAC認為許可權授權實際上是Who、What、How的問題。在RBAC模型中,who、what、how構成了訪問許可權三元組,也就是“Who對What(Which)進行How的操作”。
Who:許可權的擁用者或主體(如Principal、User、Group、Role、Actor等等)
What:許可權針對的物件或資源(Resource、Class)。
How:具體的許可權(Privilege,正向授權與負向授權)。
Operator:操作。表明對What的How操作。也就是Privilege+Resource
Role:角色,一定數量的許可權的集合。許可權分配的單位與載體,目的是隔離User與Privilege的邏輯關係.
Group:使用者組,許可權分配的單位與載體。許可權不考慮分配給特定的使用者而給組。組可以包括組(以實現許可權的繼承),也可以包含使用者,組內使用者繼承組的許可權。User與Group是多對多的關係。Group可以層次化,以滿足不同層級許可權控制的要求。
RBAC的關注點在於Role和User, Permission的關係。稱為User assignment(UA)和Permission assignment(PA).關係的左右兩邊都是Many-to-Many關係。就是user可以有多個role,role可以包括多個user。
凡是用過RDBMS都知道,n:m 的關係需要一箇中間表來儲存兩個表的關係。這UA和PA就相當於中間表。事實上,整個RBAC都是基於關係模型。
Session在RBAC中是比較隱晦的一個元素。標準上說:每個Session是一個對映,一個使用者到多個role的對映。當一個使用者啟用他所有角色的一個子集的時候,建立一個session。每個Session和單個的user關聯,並且每個User可以關聯到一或多個Session.
在RBAC系統中,User實際上是在扮演角色(Role),可以用Actor來取代User,這個想法來自於Business Modeling With UML一書Actor-Role模式。考慮到多人可以有相同許可權,RBAC引入了Group的概念。Group同樣也看作是Actor。而User的概念就具象到一個人。
這裡的Group和GBAC(Group-Based Access Control)中的Group(組)不同。GBAC多用於作業系統中。其中的Group直接和許可權相關聯,實際上RBAC也借鑑了一些GBAC的概念。
Group和User都和組織機構有關,但不是組織機構。二者在概念上是不同的。組織機構是物理存在的公司結構的抽象模型,包括部門,人,職位等等,而許可權模型是對抽象概念描述。組織結構一般用Martin fowler的Party或責任模式來建模。
Party模式中的Person和User的關係,是每個Person可以對應到一個User,但可能不是所有的User都有對應的Person。Party中的部門Department或組織Organization,都可以對應到Group。反之Group未必對應一個實際的機構。例如,可以有副經理這個Group,這是多人有相同職責。
引入Group這個概念,除了用來解決多人相同角色問題外,還用以解決組織機構的另一種授權問題:例如,A部門的新聞我希望所有的A部門的人都能看。有了這樣一個A部門對應的Group,就可直接授權給這個Group。
Role作為一個使用者(User)與許可權(Privilege)的代理層,解耦了許可權和使用者的關係,所有的授權應該給予Role而不是直接給User或Group。Privilege是許可權顆粒,由Operation和Resource組成,表示對Resource的一個Operation。例如,對於新聞的刪除操作。Role-Privilege是many-to-many的關係,這就是許可權的核心。
基於角色的訪問控制方法(RBAC)的顯著的兩大特徵是:1.由於角色/許可權之間的變化比角色/使用者關係之間的變化相對要慢得多,減小了授權管理的複雜性,降低管理開銷。2.靈活地支援企業的安全策略,並對企業的變化有很大的伸縮性。
RBAC基本概念:
RBAC認為許可權授權實際上是Who、What、How的問題。在RBAC模型中,who、what、how構成了訪問許可權三元組,也就是“Who對What(Which)進行How的操作”。
Who:許可權的擁用者或主體(如Principal、User、Group、Role、Actor等等)
What:許可權針對的物件或資源(Resource、Class)。
How:具體的許可權(Privilege,正向授權與負向授權)。
Operator:操作。表明對What的How操作。也就是Privilege+Resource
Role:角色,一定數量的許可權的集合。許可權分配的單位與載體,目的是隔離User與Privilege的邏輯關係.
Group:使用者組,許可權分配的單位與載體。許可權不考慮分配給特定的使用者而給組。組可以包括組(以實現許可權的繼承),也可以包含使用者,組內使用者繼承組的許可權。User與Group是多對多的關係。Group可以層次化,以滿足不同層級許可權控制的要求。
RBAC的關注點在於Role和User, Permission的關係。稱為User assignment(UA)和Permission assignment(PA).關係的左右兩邊都是Many-to-Many關係。就是user可以有多個role,role可以包括多個user。
凡是用過RDBMS都知道,n:m 的關係需要一箇中間表來儲存兩個表的關係。這UA和PA就相當於中間表。事實上,整個RBAC都是基於關係模型。
Session在RBAC中是比較隱晦的一個元素。標準上說:每個Session是一個對映,一個使用者到多個role的對映。當一個使用者啟用他所有角色的一個子集的時候,建立一個session。每個Session和單個的user關聯,並且每個User可以關聯到一或多個Session.
在RBAC系統中,User實際上是在扮演角色(Role),可以用Actor來取代User,這個想法來自於Business Modeling With UML一書Actor-Role模式。考慮到多人可以有相同許可權,RBAC引入了Group的概念。Group同樣也看作是Actor。而User的概念就具象到一個人。
這裡的Group和GBAC(Group-Based Access Control)中的Group(組)不同。GBAC多用於作業系統中。其中的Group直接和許可權相關聯,實際上RBAC也借鑑了一些GBAC的概念。
Group和User都和組織機構有關,但不是組織機構。二者在概念上是不同的。組織機構是物理存在的公司結構的抽象模型,包括部門,人,職位等等,而許可權模型是對抽象概念描述。組織結構一般用Martin fowler的Party或責任模式來建模。
Party模式中的Person和User的關係,是每個Person可以對應到一個User,但可能不是所有的User都有對應的Person。Party中的部門Department或組織Organization,都可以對應到Group。反之Group未必對應一個實際的機構。例如,可以有副經理這個Group,這是多人有相同職責。
引入Group這個概念,除了用來解決多人相同角色問題外,還用以解決組織機構的另一種授權問題:例如,A部門的新聞我希望所有的A部門的人都能看。有了這樣一個A部門對應的Group,就可直接授權給這個Group。
相關連結:
[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13651903/viewspace-1028785/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於RBAC的許可權管理系統
- 基於RBAC的許可權設計模型模型
- React基於RBAC的許可權控制React
- 許可權系統:許可權應用服務設計
- Rbac使用者角色許可權表設計
- RBAC許可權管理
- 基於casbin的RBAC許可權實踐
- 基於RBAC實現許可權管理
- 基於RBAC做資料許可權
- 許可權系統:6個許可權概念模型設計模型
- 許可權系統:許可權應用服務設計Tu
- 基於Spring Security和 JWT的許可權系統設計SpringJWT
- 基於 Laravel5.5 和 layui 包含基礎 RBAC 許可權的管理後臺LaravelUI
- RBAC許可權---SpringBoot整合SecuritySpring Boot
- 關於系統許可權的設計-位操作
- SpringCloud微服務實戰——搭建企業級開發框架(二十一):基於RBAC模型的系統許可權設計SpringGCCloud微服務框架模型
- PHP 中基於 Casbin 做 RBAC + RESTful 許可權控制PHPREST
- 管理系統之許可權的設計和實現
- RBAC_許可權模型介紹模型
- 許可權設計
- 基於RBAC的許可權控制淺析(結合Spring Security)Spring
- Spring Security + jwt 許可權系統設計,包含SQLSpringJWTSQL
- 分散式系統中,許可權設計實踐分散式
- django自帶的許可權介紹(rbac)Django
- Linux系統程式設計(七)檔案許可權系統呼叫Linux程式設計
- 基於位運算的許可權設計
- mongodb 的許可權系統MongoDB
- 如何設計應用系統的資料許可權管理
- k8s許可權管理(RBAC)K8S
- 從0實現RBAC許可權模型模型
- 許可權系統:一文搞懂功能許可權、資料許可權
- learun通用許可權系統框架功能實現設計框架
- 手把手擼套框架-許可權系統設計框架
- 通用許可權系統之資料庫表設計資料庫
- Linux基礎之許可權管理Linux
- [仁潤雲技術團隊]許可權系統的設計
- f-admin——基於 Laravel 框架開發的基礎許可權後臺系統Laravel框架
- 基於tp3.2.3開發的許可權管理系統,路由,微信,cdn,許可權路由
- Nestjs RBAC 許可權控制管理實踐(一)JS