在零信任架構盛行的今天,傳統角色型存取控制(RBAC)已難以應對複雜授權場景。Attribute-based Access Control(ABAC) 以多維屬性動態決策,成為細粒度授權的核心解法。
什麼是 ABAC?核心模型解析
ABAC 的授權決策由四個維度的屬性共同驅動。主體屬性(Subject) 描述請求者身份,例如部門、職級、所在地;資源屬性(Resource) 描述被存取物件的敏感等級或所有者;動作屬性(Action) 定義操作類型如讀取或刪除;環境屬性(Environment) 則納入時間、IP 位置、裝置狀態等上下文。系統透過政策引擎(Policy Engine)將這些屬性套入預定義規則,即時運算出「允許」或「拒絕」的決策,無需預先分配固定角色。這使 ABAC 能處理 RBAC 難以表達的複合條件授權。
ABAC 與零信任架構的結合
零信任核心原則是「永不信任,持續驗證」,而 ABAC 的動態決策機制天然契合此理念。每次存取請求都重新評估當下屬性,而非依賴靜態角色授權。實務上常見的落地標準為 XACML(eXtensible Access Control Markup Language),定義了政策決策點(PDP)、政策執行點(PEP)等元件。現代雲端平台如 AWS IAM Conditions 與 Azure ABAC 也直接支援屬性條件語法,讓開發團隊可快速實踐 ABAC 策略,在不增加角色數量的前提下,實現更精準的資源保護邊界。
// ABAC 政策範例(偽代碼)
ALLOW IF
subject.department == "finance"
AND resource.sensitivity <= "confidential"
AND action == "read"
AND environment.time BETWEEN "09:00" AND "18:00"
AND environment.device_trusted == true
💡 重點整理
- 多維屬性決策:結合主體、資源、動作、環境四維度,實現細粒度授權。
- 動態即時評估:每次請求獨立運算,避免靜態角色帶來的權限蔓延風險。
- 零信任天然契合:持續驗證的決策模式直接對應零信任「最小權限」原則。
- 業界標準支援:XACML 規範與主流雲端平台均提供成熟的 ABAC 實作框架。
ABAC 並非要取代 RBAC,而是在複雜場景中作為更強力的補充。當授權邏輯涉及多條件組合時,導入 ABAC 是邁向成熟零信任架構的關鍵一步。
📚 參考文獻
- NIST SP 800-162 — Guide to Attribute Based Access Control (ABAC) Definition and Considerations:https://csrc.nist.gov/publications/detail/sp/800-162/final
- OASIS XACML 3.0 標準規範:https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html
- AWS — Attribute-based access control (ABAC) for AWS IAM:https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html