Authorization Model
在資料存取中,Authorization Model 是決定使用者或系統能夠對哪些資源(Resource)執行何種操作(Action)的規則處理,在使用者通過身份驗證(Authentication)後,進一步決定他們的存取權限
以下將介紹三種常見的授權模型:
Role-Based Access Control(RBAC)
RBAC 是目前最廣泛採用的授權模型之一它的核心思想是將權限(Permission)賦予角色(Role),然後再將角色指派給使用者
運作方式
- 定義角色 (Roles): 根據組織內的職能或職位,定義一系列的抽象角色,例如「管理員」、「編輯者」、「訪客」等
- 賦予權限給角色 (Permissions to Roles): 為每個角色設定其擁有的特定權限,例如:
- 管理員: 擁有建立、讀取、更新、刪除 (CRUD) 所有檔案的權限
- 編輯者: 擁有讀取、更新特定檔案的權限
- 訪客: 只能讀取公開檔案
- 指派角色給使用者 (Users to Roles): 將一個或多個角色指派給使用者,使用者便會繼承該角色所擁有的所有權限
Attribute-Based Access Control(ABAC)
ABAC 是一種基於屬性(Attribute)來決定存取權限這些屬性可以是關於使用者、資源、操作或環境的任何資訊
運作方式
- 定義屬性 (Attributes): 收集並定義與存取控制相關的屬性,例如:
- 使用者屬性 (Subject Attributes): 使用者的部門、職位、地點、安全等級等
- 資源屬性 (Object/Resource Attributes): 資源的類型、所有者、機密等級、創建日期等
- 操作屬性 (Action Attributes): 讀取、寫入、刪除、執行等操作類型
- 環境屬性 (Environment Attributes): 存取時間、IP 位址、裝置類型等
- 建立策略 (Policies): 根據這些屬性制定存取策略,通常以「如果...則...」的形式表達,例如:
- 如果使用者在『財務部』且資源為『機密文件』,則只允許『讀取』操作
- 如果存取時間在工作時間之外,則禁止任何『寫入』操作
- 動態評估: 當有存取請求時,系統會即時獲取所有相關屬性,並根據預定義的策略進行評估,然後決定是否授權
Relationship-Based Access Control(ReBAC)
ReBAC 是一種基於實體之間關係來判斷存取權限的授權模型它關注的是使用者與資源之間的聯繫,例如「所有者」、「成員」、「管理者」、「朋友」等
運作方式
- 定義實體與關係(Entities and Relationships): 識別系統中的各種實體(如使用者、文件、資料夾、專案、團隊)以及它們之間的關係這些關係可以是直接的(例如「使用者 A 是文件 B 的所有者」)或間接的(例如「使用者 A 屬於團隊 C,團隊 C 擁有專案 D,專案 D 包含文件 E,因此使用者 A 可以存取文件 E」)
- 建立關係圖譜 (Relationship Graph): 將這些實體和關係構建成一個圖譜或網絡
- 定義基於關係的規則 (Relationship-Based Rules): 制定規則來判斷哪些關係允許何種存取,例如:
- 文件的『所有者』可以對文件進行任何操作
- 專案的『成員』可以讀取專案中的所有文件
- 「主管可以存取其『下屬』提交的報告
- 查詢關係路徑: 當有存取請求時,系統會查詢關係圖譜,尋找使用者與目標資源之間是否存在符合授權規則的路徑
優缺比較
特徵 | RBAC (角色型存取控制) | ABAC (屬性型存取控制) | ReBAC (關係型存取控制) |
---|---|---|---|
核心依據 | 預定義的角色 | 實體(使用者、資源等)的屬性 | 實體之間的關係 |
權限粒度 | 中等,基於角色 | 細粒度,基於多個屬性 | 極細粒度,基於實體間的動態關係 |
彈性 | 較低,需預先定義角色 | 高,可動態適應變化 | 高,基於動態關係圖譜 |
複雜度 | 較低,易於理解和實施 | 高,策略設計與評估複雜 | 高,關係管理與查詢複雜 |
適用場景 | 傳統企業組織、職能分工明確的系統 | 需要高度靈活、動態和細粒度控制的系統 | 社交網絡、協作平台、階層式資料結構 |