ABAC訪問控制模型

hzcya發表於2020-11-17

一、什麼是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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章