跳到主要內容

存取控制核心概念:Subject 與 Object 的主動被動角色解析

在存取控制的世界裡,誰在存取、誰被存取是最基本的問題。理解 Subject 與 Object 的角色區分,是掌握所有存取控制模型(DAC、MAC、RBAC)的第一步。

什麼是 Subject(主體)?

Subject 是主動發起存取請求的實體,代表「行動的一方」。常見形式包括:登入系統的使用者、執行中的程序(Process)、呼叫 API 的服務帳號。關鍵在於,Subject 的定義不限於「人」,任何主動觸發存取行為的實體皆屬之。例如,一支排程腳本在深夜自動讀取資料庫,此時該腳本的執行程序就是 Subject。角色由行為決定,而非由身份決定。系統在評估權限時,會先識別當前的 Subject,再判斷其是否有權對目標資源執行操作。

什麼是 Object(客體)?

Object 是被動接受存取的目標資源,代表「被操作的一方」。常見形式包括:檔案、資料庫記錄、記憶體區段、網路埠口、甚至另一個程序。同一個實體可以在不同情境下扮演不同角色。例如,程序 A 讀取一份設定檔時,設定檔是 Object;但程序 A 向程序 B 發送訊號時,程序 B 成為 Object,程序 A 則是 Subject。這種角色的動態性正是存取控制模型中最容易被忽略的核心細節。Object 本身不主動參與決策,僅作為被保護的目標。

💡 重點整理

  • Subject = 主動方:發起存取請求的實體,可以是使用者、程序或服務。
  • Object = 被動方:被存取的目標資源,本身不主導決策。
  • 角色由行為決定:同一實體可視情境交替扮演 Subject 或 Object。
  • 存取控制的核心判斷:「哪個 Subject 可以對哪個 Object 執行哪種操作」。

掌握 Subject 與 Object 的區分,是設計任何存取控制策略的前提。角色非固定,行為才是判斷依據。無論面對 DAC、MAC 或 RBAC,這組概念都是分析權限模型的起點。

📚 參考文獻

  1. NIST SP 800-162, Guide to Attribute Based Access Control (ABAC) Definition and Considerationscsrc.nist.gov
  2. OWASP, Access Control Cheat Sheetcheatsheetseries.owasp.org

⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。

留言