傳統網際網路時代,統一身份和訪問控制是助力企業安全從粗粒度訪問控制升級到多層級、細粒度動態訪問控的關鍵元件。目前廣泛採用的兩種許可權模型,基於角色的訪問控制(RBAC)和基於屬性的訪問控制(ABAC),本文我們將對這兩種模型進行深入討論。
01
RBAC與ABAC概念定義
RBAC和ABAC是兩種不同的訪問許可權控制模式。RBAC是Role-Based Access Control,基於角色的訪問控制,引入了Role的概念,目的是為了隔離User(即動作主體,Subject)與Privilege(許可權,表示對Resource的一個操作,即Operation+Resource) ,更符合企業的使用者、組織、資料和應用特徵。RBAC的關注點在於Role與user,Role與privilege的關係;ABAC是基於屬性的訪問控制,其基本思想是講訪問控制的主體、客體、環境、行為的相關屬性作為策略依據,對系統內部實體安全進行統一建模,透過屬性關係的定義來描述授權和訪問控制約束,進而支援細粒度和大規模的訪問控制。
02
RBAC模型場景應用
RBAC通常應用於組織、部門、群組、角色、崗位等不同授權方式,通常包括RBAC0、RBAC1、RBAC2和RBAC3四種模型。
RBAC0:許可權最基礎也是最核心的模型, 它包括使用者 / 角色 / 許可權, 其中使用者和角色是多對多的關係, 角色和許可權也是多對多的關係。
RBAC1: 此模型引入了角色繼承 (Hierarchical Role) 概念,即角色具有上下級的關係,角色間的繼承關係可分為一般繼承關係和受限繼承關係。
RBAC2: 基於核心模型的基礎上,進行了角色的約束控制,RBAC2 模型中新增了責任分離關係。其規定了許可權被賦予角色時,或角色被賦予使用者時,以及當使用者在某一時刻啟用一個角色時所應遵循的強制性規則。責任分離包括靜態責任分離和動態責任分離。
RBAC3: 即最全面的許可權管理, 它是基於 RBAC0,將 RBAC1 和 RBAC2 進行了整合。
在大型的企業應用中,通常是根據不同的工作崗位來設定,例如Manager、Employee等。每個角色被賦予一組許可權,可以針對不同的資源進行某些操作。使用者通常不會被直接賦予許可權,而是透過分配不同的角色從而獲得相應的許可權。
03
ABAC模型場景應用
ABAC基於策略進行訪問控制,即對RBAC的環境策略和行為策略進行進一步許可權控制,每一條策略可以使用任何屬性來定義。通常來說,有三種型別的屬性:Subject的屬性、Resource的屬性和系統屬性。例如每個員工有一個屬性“型別”,而每一個業務系統也有一個屬性“部門”,那麼就可以定義一個策略,只有某個正式員工與業務系統允許訪問的部門符合,那麼這個員工就可以檢視業務系統的具體某個業務單元。
04
RBAC與ABAC區別
RBAC一般用於粗粒度的許可權控制,而ABAC則用於細粒度的許可權控制。例如只要是企業正式員工都可以訪問培訓學習系統,那麼使用RBAC足以。如果再加一條限制,任何正式員工只要在過去半年內未完成培訓課程目標,那麼不能學習新課程,那麼就要用ABAC來控制。通常來說,應該儘量優先使用RBAC,然後再考慮使用ABAC,但通常會將兩者結合起來使用。在實際的應用中,很自然的就可以將實際的各種角色(例如員工、外包使用者等)對映成RBAC中的Role,所以RBAC讓人比較容易接受。而另一方面,RBAC靈活性上的欠缺,所以需要藉助於ABAC來處理各種特殊許可權控制的需要。
05
RBAC與ABAC業務價值
RBAC價值主要體現在減少授權管理的複雜性、降低管理開銷、靈活的支援企業的安全策略和對企業的變化有很大的伸縮性;ABAC因其靈活的授權方式,通常面向跨組織邊界進行復雜的細粒度許可權管理和管控。