ABAC: Attritube-Based Access Control
ABAC 是一種使用屬性(例如用戶角色、資源屬性和環境條件)來做出存取控制決策的存取控制模型。
透過 屬性 (Attributes) 組合而成的 策略 (Policy) 來判斷授權:
- 主體屬性 (Subject): 誰發出的請求?(例如:職位、年資、安全認證等級、所屬部門)。
- 資源屬性 (Resource): 請求的是什麼?(例如:檔案類型、機密層級、建立者、所屬專案)。
- 環境屬性 (Environment): 現在是什麼情況?(例如:訪問時間、IP 地址、設備是否加密、當前威脅層級)。
- 操作屬性 (Action): 想要做什麼?(例如:讀取、寫入、刪除、審批)。
ABAC 策略比傳統的存取控制模型更為複雜。但也提供了更多的靈活性和細緻性。
資深等級的工程師,在平日上班時間,從公司內網連線時,才能修改特定專案或進行 Code Review Approve。
雖然 ABAC 很優秀,但缺點也很明顯:
- 效能開銷: 每次請求都要運算複雜的邏輯,在高併發系統中會造成延遲。
- 設定成本: 撰寫策略需要邏輯非常嚴密,如果條件錯誤,可能會造成嚴重的安全漏洞或權限鎖死。
除此之外,可測試性與審計難度也極大幅度提高。
實務上應該與 RBAC 配合,先進行大規模的篩選,並且在特定的上下文(Ex. VIP 在某個大放送時段玩了某款遊戲)使用 ABAC 精確判定。