权限系统的设计模式 ACL RBAC ABAC
ACL(Access Control List):訪問權限列表? 如:
?
user1-->AC1
user1-->AC2
user2-->AC1? ? 此時權限匯總成一個列表
這種設計最常見的應用就是文件系統的權限設計,如微軟的NTFS
對權限控制比較分散,不便于管理,比如無法簡單地將一組文件設置統一的權限開放給指定的一群用戶
RBAC(Role Base Access Control):基于角色的權限控制
與ACL 對比? RBAC不用給用戶單個分配權限,只用指向對應的角色就會有對應的權限,而且分配權限和收回權限都很方便
如菜單權限的設計:用戶與角色關聯,角色與菜單關聯
??
ABAC(Attribute Base Access Control) 基于屬性的權限控制
不同于常見的將用戶通過某種方式關聯到權限的方式,ABAC則是通過動態計算一個或一組屬性來是否滿足某種條件來進行授權判斷(可以編寫簡單的邏輯)。屬性通常來說分為四類:用戶屬性(如用戶年齡),環境屬性(如當前時間),操作屬性(如讀取)和對象屬性(如一篇文章,又稱資源屬性),所以理論上能夠實現非常靈活的權限控制,幾乎能滿足所有類型的需求。
例如規則:“允許所有班主任在上課時間自由進出校門”這條規則,其中,“班主任”是用戶的角色屬性,“上課時間”是環境屬性,“進出”是操作屬性,而“校門”就是對象屬性了。為了實現便捷的規則設置和規則判斷執行,ABAC通常有配置文件(XML、YAML等)或DSL配合規則解析引擎使用。XACML(eXtensible Access Control Markup Language)是ABAC的一個實現,但是該設計過于復雜,我還沒有完全理解,故不做介紹。
總結一下,ABAC有如下特點:
既然ABAC這么好,那最流行的為什么還是RBAC呢?
我認為主要還是因為大部分系統對權限控制并沒有過多的需求,而且ABAC的管理相對來說太復雜了。Kubernetes便因為ABAC太難用,在1.8版本里引入了RBAC的方案。
ABAC有時也被稱為PBAC(Policy-Based Access Control)或CBAC(Claims-Based Access Control)。
總結
以上是生活随笔為你收集整理的权限系统的设计模式 ACL RBAC ABAC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java精灵召唤_精灵召唤之梦游仙境
- 下一篇: SSM+阳光大学宿舍管理系统 毕业设计-