首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 角色基礎存取控制(RBAC)詳解

     編輯:Java 相關知識

核心概念

角色基礎存取控制(RBAC)引入 Role 概念,目的為隔離 User(動作主體/Subject)與 Privilege(權限,表示對 Resource 的一個 Operation)。

Role 作為 User 與 Privilege 的代理層,解耦權限與用戶關係。所有授權應給予 Role 而非直接給 User 或 Group。Privilege 為權限顆粒,由 Operation + Resource 組成(如:對新聞的刪除操作)。Role-Privilege 為 many-to-many 關係,是權限核心。

RBAC 兩大特徵

  1. 角色/權限變化比角色/用戶關係變化慢得多,減小授權管理複雜度,降低管理開銷
  2. 靈活支援企業安全策略,對企業變化有極大伸縮性

基本術語定義

  • 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 兩大特徵:角色/權限變化較慢降低管理複雜度;靈活支援企業安全策略且具伸縮性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved