跳至主要内容

Role-Based Access Control

什麼是 RBAC 模型

RBAC 模型是目前最常見的權限管理模型之一,它用角色(Role)來做媒介,把使用者(User)跟權限(Permission)給分開,而不是直接把權限分配給使用者,這樣管理起來更加方便。

RBAC 優點

  1. 角色跟權限之間的變化比使用者跟角色之間的變化慢很多,所以管理起來輕鬆多了,而且省錢省力。
  2. 很靈活,可以輕鬆配合公司的安全策略,而且可以隨著公司變化而調整,非常有彈性。

RBAC 的基本概念

RBAC 認為權限分配其實就是「誰、對什麼、怎麼做」的問題,也就是**「誰對什麼進行怎麼樣的操作」**。

  • 誰(Who): 權限的擁有者或主體(例如:使用者、群組、角色等等)。
  • 什麼(What): 權限針對的對象或資源(例如:資料、檔案等等)。
  • 怎麼做(How): 具体的權限(例如:讀取、修改、刪除等等)。

RBAC96 標準

RBAC96 是一個由 NIST(National Institute of Standards and Technology)提出的標準,它定義了 RBAC 模型的四個基本元素:

  • 使用者(Users): 系統中的實體(如員工或顧客),需要存取系統資源。
  • 角色(Roles): 表示使用者在系統中的職位或功能,角色是權限的集合。
  • 權限(Permissions): 賦予使用者對系統資源執行特定操作的許可。
  • 會話(Sessions): 每次使用者登入系統時會建立一個會話,會話中定義了該使用者當前啟動的角色。

RBAC0 (基礎角色授權)

RBAC0 是 RBAC96 的基礎版本,專注於角色的定義與權限的分配,不包含會話。 每個使用者可以被指派一個或多個角色,而每個角色有一組對應的權限。權限是操作特定資源(例如:文件、API、模組等)的許可。角色與權限的關係是固定的,使用者的存取權取決於他們所屬的角色。

範例:在一個線上教育平台中,有兩個角色:「學生」和「教師」。

  • 學生角色:可以存取課程內容並提交作業。
  • 教師角色:可以建立課程、上傳教材,並查看學生提交的作業。

RBAC1 (支援角色繼承)

RBAC1 增加了角色繼承的概念。這意味著可以設計角色層級,高層角色自動繼承低層角色的權限。這樣的設計讓角色管理更加簡便。

範例:在同一個線上教育平台中,新增了「系統管理員」角色。

  • 系統管理員角色:可以管理課程和學生(繼承教師角色的權限),並且可以管理平台設置。

因此,「系統管理員」不僅擁有「教師」的權限,還多了額外的管理權限。

RBAC2 (支援權限的條件限制)

RBAC2 增加了條件限制功能,這樣可以限制某些操作只能在特定條件下進行。條件可以基於時間、位置或特定的資源狀態。

案例:在線上教育平台中,除了原有的角色設定,新增了條件限制:

  • 學生只能在課程指定的時間段內提交作業。
  • 教師只能在課程結束後的 7 天內修改評分。

RBAC3 (支援角色繼承 + 條件限制)

RBAC3 是 RBAC1 和 RBAC2 的結合,支援角色繼承和條件限制。這意味著,角色可以不僅繼承權限,還可以在繼承的基礎上套用條件限制,進一步強化控制。

在線上教育平台中,新增了「高級系統管理員」角色,這個角色繼承了「系統管理員」的權限,但有一些額外限制:

  • 只有在週一至週五的工作時間內,才能修改平台的系統設置。
  • 在特定地點(例如辦公室 IP 範圍)內才能進行敏感操作。

「高級系統管理員」不僅具有更高的權限,還有基於條件的控制,避免在不安全的情境下進行敏感操作。

參考資料