权限设计,设计模型分析(DAC,MAC,RBAC,ABAC) 之 RBAC
一、什么是RBAC模型
RBAC是Role-Based Access Control的縮寫,意為:基于角色的權限控制。通過角色關聯用戶,角色關聯權限的方式間接賦予用戶權限。
如下圖:
?為什么不直接給用戶分配權限,還多此一舉的增加角色這一環節呢?
????????其實是可以直接給用戶分配權限,只是直接給用戶分配權限,少了一層關系,擴展性弱了許多,適合那些用戶數量、角色類型少的平臺。
對于通常的系統,比如:存在多個用戶擁有相同的權限,在分配的時候就要分別為這幾個用戶指定相同的權限,修改時也要為這幾個用戶的權限進行一一修改。有了角色后,我們只需要為該角色制定好權限后,將相同權限的用戶都指定為同一個角色即可,便于權限管理。
對于批量的用戶權限調整,只需調整用戶關聯的角色權限,無需對每一個用戶都進行權限調整,既大幅提升權限調整的效率,又降低了漏調權限的概率。
二、RBAC模型的分類
RBAC模型可以分為:RBAC0、RBAC1、RBAC2、RBAC3 四種。其中RBAC0是基礎,也是最簡單的,相當于底層邏輯,RBAC1、RBAC2、RBAC3都是以RBAC0為基礎的升級。
一般情況下,使用RBAC0模型就可以滿足常規的權限管理系統設計了。
2.1 RBAC0模型
最簡單的用戶、角色、權限模型。這里面又包含了2種:
那么,什么時候該使用多對一的權限體系,什么時候又該使用多對多的權限體系呢?
如果系統功能比較單一,使用人員較少,崗位權限相對清晰且確保不會出現兼崗的情況,此時可以考慮用多對一的權限體系。其余情況盡量使用多對多的權限體系,保證系統的可擴展性。如:張三既是行政,也負責財務工作,那張三就同時擁有行政和財務兩個角色的權限。
2.2 RBAC1模型
相對于RBAC0模型,增加了子角色,引入了繼承概念,即子角色可以繼承父角色的所有權限。
使用場景:如某個業務部門,有經理、主管、專員。主管的權限不能大于經理,專員的權限不能大于主管,如果采用RBAC0模型做權限系統,極可能出現分配權限失誤,最終出現主管擁有經理都沒有的權限的情況。
而RBAC1模型就很好解決了這個問題,創建完經理角色并配置好權限后,主管角色的權限繼承經理角色的權限,并且支持在經理權限上刪減主管權限。
2.3 RBAC2模型
基于RBAC0模型,增加了對角色的一些限制:角色互斥、基數約束、先決條件角色等。
- 角色互斥:同一用戶不能分配到一組互斥角色集合中的多個角色,互斥角色是指權限互相制約的兩個角色。案例:財務系統中一個用戶不能同時被指派給會計角色和審計員角色。
- 基數約束:一個角色被分配的用戶數量受限,它指的是有多少用戶能擁有這個角色。例如:一個角色專門為公司CEO創建的,那這個角色的數量是有限的。
- 先決條件角色:指要想獲得較高的權限,要首先擁有低一級的權限。例如:先有副總經理權限,才能有總經理權限。
- 運行時互斥:例如,允許一個用戶具有兩個角色的成員資格,但在運行中不可同時激活這兩個角色。
2.4 RBAC3模型
????????稱為統一模型,它包含了RBAC1和RBAC2,利用傳遞性,也把RBAC0包括在內,綜合了RBAC0、RBAC1和RBAC2的所有特點。
這里結合我的見解,簡單的描述下。
RBAC0:是RBAC的核心思想。
RBAC1:是把RBAC的角色分層模型。
RBAC2:增加了RBAC的約束模型。
RBAC3:其實是RBAC2 + RBAC1。
三、怎么利用RBAC模型來進行權限體系的設計?
我們已經知道什么是RBAC模型了,在分析怎么來根據此模型來設計權限體系之前,我們再把這個模型要素進行拆分一下。
首先是:用戶、角色、權限。
而權限,具體到某個軟件來說,實際上包含兩個方面。一個是菜單權限,另一個是數據權限。
?不同的行業會有不同的使用場景,用戶角色權限模型也會有不同程度上的變化。
可以看看這個文章,有相關數據表的設計 :設計一個權限系統-RBAC - 簡書 (jianshu.com)
四、看看ABAC,暢想下未來的權限模式
至此,我們可以了解到:RBAC模型實際上能解決大部分的權限設計問題了。
那么,ABAC到底是什么呢?它存在的意義在哪里?關于未來的權限設計趨勢,它能帶給我們什么啟發呢?
帶著這些問題,我們先來看看到底什么是ABAC模型。
ABAC,Attribute-based Access Control. 基于屬性的訪問控制。而屬性,總的來說有三類:用戶屬性、系統或應用被訪問屬性(數據和操作)、環境屬性。
也就是說,系統根據一組或多組屬性是否滿足預設規則來動態的控制,誰可以訪問哪些功能數據和操作。RBAC模型,其實可以看成是靜態的、單組屬性的ABAC模型。
用例子來理解這個模型就是:只有當用戶角色為Admin,在工作時間內,且處在C棟大樓B實驗室,才可以訪問D文件。
實際上,ABAC是個可以以最細顆粒度來管理權限的模型。它可以讓設計者,利用任何一個用戶屬性、環境屬性,或者多個屬性之間的交集、并集等來組合出動態的權限判斷邏輯。
ABAC?復雜場景下訪問控制解決之道。
RBAC和ABAC的區別
RBAC與ABAC之間的主要區別在于方法授予訪問權限的方式。 RBAC按照角色授予訪問權限,ABAC可以根據用戶特征,對象特征,操作類型等屬性確定訪問權限。
RBAC優缺點:
優點:
RBAC 模型構建起來更加簡單,對于中小型組織,維護角色和授權關系的工作量不大,反而定制各種策略相對麻煩,更容易接受RBAC授權模型。
缺點:
對于大型組織,基于RBCA的控制模型需要維護大量的角色和授權關系,且無法做到對資源細粒度地授權。
ABAC優缺點:
優點:
對于大型組織,基于RBCA的控制模型需要維護大量的角色和授權關系,相比而言,ABAC更加靈活。
新增資源時,ABAC僅需要維護較少的資源,而RBAC需要維護所有相關的角色,ABAC可擴展性更強、更方便。
ABAC 有更加細粒度控制和根據上下文動態執行,RBAC只能基于靜態的參數進行判斷。
缺點
模型構建相對比較復雜。
參考文獻
- 什么是基于角色的訪問控制 (RBAC)?示例、優勢等:What is Role-Based Access Control (RBAC)? Examples, Benefits, and More | UpGuardThis is a complete overview of role-based access control (RBAC). Learn about common uses of RBAC, why it is used, and its benefits in this in post.https://www.upguard.com/blog/rbac
- 訪問控制的組件是什么?(DAC,MAC,RBAC,ABAC):What is Access Control? The Essential Cybersecurity Practice | UpGuardhttps://www.upguard.com/blog/access-control
- 基于屬性的訪問控制 (ABAC):What is Attribute-Based Access Control (ABAC)? - Definition from Techopediahttps://www.techopedia.com/definition/29706/attribute-based-access-control-abac
- ABAC - 基于屬性的訪問控制 - 復雜場景下訪問控制解決之道_Yuchen_HAARP的博客-CSDN博客_基于屬性的訪問控制https://blog.csdn.net/XiaoBeiTu/article/details/100773968
零信任架構_PolarDay.的博客-CSDN博客_零信任架構物理邊界曾經是可信網絡和不可信網絡之間的有效分割,防火墻通常位于網絡的邊緣,基于靜態策略來控制網絡流量。位于防火墻內部的用戶會被授予高信任等級來訪問企業的敏感資源,因為他們被默認是可信的。但隨著業務遷移到云端,APT攻擊的泛濫,以及移動辦公的趨勢,傳統的安全邊界變的模糊,既然網絡和威脅已經發生了變化,我們的防御模型也要跟著變化。零信任是一種安全模型。首先我們要拋棄傳統的邊界觀念,不再依據用戶所處的網絡位置而決定這個人是否可信。取而代之的是我們對每個請求都進行嚴格驗證信任建立起來之前,網絡上的任何資源都是https://blog.csdn.net/shn111/article/details/125195071?
總結
以上是生活随笔為你收集整理的权限设计,设计模型分析(DAC,MAC,RBAC,ABAC) 之 RBAC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABCD类地址
- 下一篇: mfc中socket字符接收不完整uni