零信任架构和访问控制模型ABAC
近幾年,權限訪問控制模型被反復提及,目前常用的是RBAC(Role-Based Access Control),RBAC是迄今為止最為普及的權限設計模型,其優點是簡單,實現起來非常容易。
但是隨著授權需求復雜度的提升和對控制邏輯靈活性的高度要求,ABAC(attribute-based access control)訪問控制模型將會越來越普及。近期火爆的零信任架構里,ABAC模型就比RBAC更加合適。
ABAC既然是針對屬性(attributes)的,那我們先來看看它一般是針對哪些屬性進行授權控制的。屬性可以是任意的對象,一般會涉及的屬性主要是以下四類:
1、訪問主體屬性:訪問者自帶的屬性,比如年齡,性別,部門,角色等;
2、動作屬性:比如讀取,刪除,查看等;
3、對象屬性:被訪問對象的屬性,比如一條記錄的修改時間,創建者等;
4、環境屬性:比如時間信息,地理位置信息,訪問平臺信息等。
基于屬性,ABAC可以設置很多靈活的策略來進行訪問的控制,比如:
1、當一個文檔的所屬部門跟用戶的部門相同時,用戶可以訪問這個文檔;
2、當用戶是一個文檔的額擁有者并且文檔的狀態是草稿,用戶可以編輯這個文檔;
3、早上九點前禁止A部門的人訪問B系統;
4、在除了上海以外的地方禁止以管理員身份訪問A系統。
看起來是不是挺強大的。
因為模型是基于策略,而策略又是基于各種靈活的屬性動態控制的,所以ABAC模型里通常有配置文件(XML、YAML等)或DSL配合規則解析引擎使用。規則引擎負責控制邏輯的處理,配置文件負責策略的定義和描述。
XACML(eXtensible Access Control Markup Language)就是基于ABAC訪問模型的一個實現(可能也是最復雜的一種實現)。
在XACML的架構中,有5種控制節點:
典型的訪問請求是這樣流轉的:
用戶訪問資源,發送原始請求,請求會被PEP攔截;
PEP把請求轉換成一個XACML的訪問申請請求;
PEP把訪問申請請求轉發給PDP;
PDP根據策略配置對認證請求進行評估。策略保存在PRP,并由PAP維護。如果需要采集屬性信息,還會從PIP收集屬性;
PDP收到訪問申請請求的結果(允許,禁止)并發送給PEP;
PEP根據收到的信息,允許或者禁止用戶訪問資源。
不想看字那就看圖:
我們再來看一下ABAC訪問控制模型和零信任架構的結合點,從Gartner提供的報告中,我們可以看到典型的零信任架構圖如下:
SDP Gateway是用于做訪問攔截和訪問代理,這個跟XACML里的PEP功能類似。
SDP Controller是做訪問控制的策略定義和執行,這個則是包含了XACML里除了PEP以外的節點的功能。
ABAC可以說是縮小版的零信任模型。
零信任架構是想解決最小化授權、策略集中化管理、動態授權控制、自適應授權控制等問題。這些功能的實現跟ABAC權限控制模型不謀而合(也有廠商的零信任架構是基于ABAC和RBAC兩種授權控制模型結合實現的)。
然后就是策略文件的構成,策略文件是非常重要的文件,所有的決策都是根據策略文件來判斷的
總結
以上是生活随笔為你收集整理的零信任架构和访问控制模型ABAC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【二分图最佳匹配】丘比特的烦恼
- 下一篇: A Survey of Symbolic