ABAC訪問控制模型
一、什麼是ABAC訪問控制模型
基於屬性的訪問控制(Attribute-Based Access Control,下文簡稱ABAC)是一種靈活的授權模型。是透過實體的屬性、操作型別、相關的環境來控制是否有對操作物件的許可權。
例如:P5(職級)的同學有OA系統的許可權。
上述是一個簡單的ABAC的例子,就是透過實體的職級這一屬性來控制是否有OA系統的許可權
再比如:P5(職級)的研發(職位)同學有公司Gitlab的許可權
上述例子是透過一組實體的屬性(職級和職位)來控制對操作物件的許可權
再比如:P5(職級)的研發(職位)同學在公司內網(環境)可以檢視和下載(操作)程式碼。
上述例子顯然比之前兩個更加複雜,除了判斷實體的屬性(職級和職位),還判斷了當前的環境屬性和操作屬性
所以我們可以ABAC的訪問控制模型用下面這張圖表現出來
ABAC的使用場景
ABAC授權模型理論上能夠實現非常靈活的許可權控制,幾乎能滿足所有型別的需求。從使用場景來說比較適用於使用者數量多並且授權比較複雜的場景。簡單的場景也是可以使用ABAC的,但是使用基礎的ACL或者RBAC也能滿足需求。
場景一:
還是拿上面的例子來說:P5(職級)的研發(職位)同學在公司內網(環境)可以檢視和下載(操作)程式碼。
在需要根據環境屬性和操作屬性來動態計算許可權的時候,使用其他的授權模型可能不太能滿足需求。這個時候就需要使用ABAC授權模型。
場景二:
ABAC也適用於 成員(角色)快速變化的場景,由於ABAC 是透過使用者的屬性來授權的。在新建使用者/修改使用者屬性時會自動更改使用者的許可權,無需管理員手動更改賬戶角色。
在屬性的組合比較多,需要更細粒度地劃分角色的情況下。RBAC需要建立大量的角色。ABAC授權模型會更加靈活。
二、與RBAC訪問控制模型的對比
ABAC對於RBAC有以下優點
- 對於大型組織,基於RBCA的控制模型需要維護大量的角色和授權關係,相比而言,ABAC更加靈活;對於中小型組織,維護角色和授權關係的工作量不大,反而定製各種策略相對麻煩,更容易接受RBAC授權模型。
- 新增資源時,ABAC僅需要維護較少的資源。而RBAC需要維護所有相關的角色。ABAC可擴充套件性更強、更方便。
- RBAC支援帶有動態引數的授權規則,RBAC只能基於靜態的引數進行判斷。
- ABAC許可權控制的粒度比RBAC更細。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978904/viewspace-2734769/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- openGauss 訪問控制模型模型
- jCasbin: 強大的訪問控制、許可權管理框架,支援 ACL, RBAC, ABAC框架
- 基於PLM訪問控制模型研究模型
- Mongodb訪問控制MongoDB
- Flask——訪問控制Flask
- RabbitMQ訪問控制MQ
- Nginx訪問控制Nginx
- Swift 訪問控制Swift
- Think Authz:支援 ACL、RBAC、ABAC 等模型的授權(角色和許可權控制)庫模型
- 檔案和目錄的訪問控制(2)新增訪問控制
- JoomlaACL訪問控制列表OOM
- 類的訪問控制
- 從mimikatz學習Windows安全之訪問控制模型(二)Windows模型
- 從mimikatz學習Windows安全之訪問控制模型(一)Windows模型
- 基於 PHP-Casbin 的 ABAC 許可權控制PHP
- IOS - ACL (訪問控制列表)iOS
- HTTP之訪問控制「CORS」HTTPCORS
- Vue前端訪問控制方案Vue前端
- Ubuntu 增加埠訪問控制Ubuntu
- Swift 中的訪問控制Swift
- web application 訪問控制WebAPP
- 控制資料訪問(一)
- Laravel Authorization:支援 ACL、RBAC、ABAC 等模型的授權庫Laravel模型
- weblogic控制檯訪問慢問題Web
- 006.Nginx訪問控制Nginx
- Swift的訪問控制講解Swift
- Nginx 對訪問量的控制Nginx
- Casbin訪問控制框架入門框架
- 遠端訪問及控制——ssh
- 訪問控制之9種元素
- Oracle資料庫訪問控制Oracle資料庫
- SSH遠端訪問及控制
- 用訪問控制列表實現網路單向訪問(轉)
- Nginx訪問控制_IP訪問控制(http_access_module)原理、侷限性、解決方法講解NginxHTTP
- CentOS 中 TCP Wrappers訪問控制CentOSTCPAPP
- Java 訪問許可權控制(6)Java訪問許可權
- Struts2實現訪問控制
- java 訪問控制符和supper,thisJava