核心概念
角色基礎存取控制(RBAC)引入 Role 概念,目的為隔離 User(動作主體/Subject)與 Privilege(權限,表示對 Resource 的一個 Operation)。
Role 作為 User 與 Privilege 的代理層,解耦權限與用戶關係。所有授權應給予 Role 而非直接給 User 或 Group。Privilege 為權限顆粒,由 Operation + Resource 組成(如:對新聞的刪除操作)。Role-Privilege 為 many-to-many 關係,是權限核心。
RBAC 兩大特徵
- 角色/權限變化比角色/用戶關係變化慢得多,減小授權管理複雜度,降低管理開銷
- 靈活支援企業安全策略,對企業變化有極大伸縮性
基本術語定義
- Who:權限擁有者/主體(Principal、User、Group、Role、Actor)
- What:權限針對對象/資源(Resource、Class)
- How:具體權限(Privilege,正向/負向授權)
- Operator:操作,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。關係型資料庫中 n:m 關係需中間表,UA 與 PA 即相當於中間表。整個 RBAC 基於關係模型。
Session 在 RBAC 中
標準定義:每個 Session 為一映射,一用戶到多 Role 映射。用戶激活其所有角色子集時建立 Session。每 Session 關聯單一 User,每 User 可關聯一或多 Session。
Actor、User、Group 概念釐清
- User 實際扮演 Role,可用 Actor 取代 User(來自《Business Modeling With UML》Actor-Role 模式)
- 考慮多人相同權限,引入 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 部門人員可看」,有對應 Group 可直接授權
核心重述
Role 作為 User 與 Privilege 代理層,解耦權限與用戶關係。所有授權應給 Role 而非直接給 User/Group。Privilege 由 Operation+Resource 組成。Role-Privilege 為 many-to-many,權限核心。RBAC 兩大特徵:角色/權限變化較慢降低管理複雜度;靈活支援企業安全策略且具伸縮性。