日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

权限管理中的RBAC与ABAC

發(fā)布時間:2024/3/12 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 权限管理中的RBAC与ABAC 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最早的模型

最早最基礎(chǔ)的權(quán)限管理模型是ACL,也就是Access Control List(訪問控制列表)。
它是用來描述用戶和權(quán)限之間關(guān)系的數(shù)據(jù)列表。它的原理非常簡單:每一項(xiàng)資源,都配有一個列表,這個列表記錄的就是哪些用戶可以對這項(xiàng)資源執(zhí)行CRUD等操作。當(dāng)試圖訪問這項(xiàng)資源時,會首先檢查這個列表中是否有關(guān)于當(dāng)前用戶的訪問權(quán)限,從而確定當(dāng)前用戶可否執(zhí)行相應(yīng)的操作。
ACL幾乎不需要任何基礎(chǔ)設(shè)施就可以完成訪問控制,這是他的簡單性,也是他的優(yōu)點(diǎn)。
但由于需要維護(hù)大量的訪問權(quán)限列表,ACL在性能上有明顯的缺陷。另外,對于擁有大量用戶與眾多資源的應(yīng)用,管理訪問控制列表本身就變成非常繁重的工作。

最開始的ACL定義中,用戶直接和權(quán)限掛鉤,數(shù)據(jù)存儲的是用戶與權(quán)限的關(guān)聯(lián)關(guān)系。如果兩個用戶的權(quán)限是一樣的,那么就需要分別存儲這兩個用戶與權(quán)限的關(guān)聯(lián)關(guān)系,也是上面所提到的ACL的缺陷。為了解決這些問題,便有了對ACL設(shè)計(jì)的改進(jìn),相同權(quán)限的用戶放到同一個分組里,分組與權(quán)限掛鉤,不再是用戶直接與權(quán)限掛鉤。以及后來出現(xiàn)的RBAC(基于角色的訪問控制),角色與分組也是差不多的概念,角色直接與權(quán)限掛鉤,用戶再與角色進(jìn)行關(guān)聯(lián)。

RBAC(Role-Based Access Control 基于角色的訪問控制)

ACL的訪問控制機(jī)制中,直接維護(hù)的是用戶與功能的關(guān)系,這一系列的關(guān)系就是一個權(quán)限列表。當(dāng)很多的用戶具有相同功能權(quán)限的時候,就要進(jìn)行繁瑣的關(guān)聯(lián)操作。RBAC就是在用戶與權(quán)限之間引入了角色的概念。用戶與角色之間做關(guān)聯(lián),權(quán)限列表維護(hù)的是角色與功能的關(guān)系。

一個用戶擁有若干個角色,每個角色擁有若干個權(quán)限,這樣就構(gòu)成了“用戶-角色-權(quán)限”的授權(quán)模型。這種授權(quán)模型的好處在于,不必每次創(chuàng)建用戶時都進(jìn)行權(quán)限分配的操作,只要分配用戶相應(yīng)的角色即可,而且角色的權(quán)限變更比用戶的權(quán)限變更要少得多,減少頻繁設(shè)置。

在RBAC模型中,“用戶-角色-權(quán)限”之間形成的關(guān)系是一個雙向的”一對多“的關(guān)系。
也就是說,一個用戶可以擁有多個角色,一個角色可以賦給不同的用戶;一個角色可以擁有多個權(quán)限,一個權(quán)限也可以被多個角色擁有

角色的引入,可以讓具有相同權(quán)限匯集到一起,再將不同角色分配給不同的用戶,以此來實(shí)現(xiàn)用戶對于權(quán)限的分配。這樣只需要在首次給不同的角色配上相應(yīng)的權(quán)限,后續(xù)添加的用戶就可直接賦予角色,便可添加上所需要的權(quán)限如此一來大大減少了操作的頻繁性。

在后續(xù)的發(fā)展中,我們發(fā)現(xiàn) 單單在用戶和權(quán)限中引入角色,對于大數(shù)據(jù)量的角色和權(quán)限的分配,還是具有相當(dāng)?shù)膹?fù)雜度。如果一個部門上萬人,那么我們就需要給這個部門上萬人分別設(shè)置角色,而這上萬其實(shí)是具有相同的權(quán)限的,如果直接采用基礎(chǔ)的RBAC權(quán)限模型的話,那么面對這樣的情況,無疑也是具有一個龐大的重復(fù)的工作量,并且也不利于后期用戶變更的維護(hù)管理。

于是我們可以再在用戶與角色之間引入”部門“的概念。
所謂”部門“就是將具有相同角色的用戶進(jìn)行分類,從而形成用戶組的概念。
如此一來,我們將具有相同角色的用戶歸到一起,形成一個用戶組,也就是一個”部門“,由此進(jìn)行批量的調(diào)度和權(quán)限的管理,可以大大提高分類的清晰程度和我們工作的效率。

給具有相同權(quán)限的用戶建立用戶組,將用戶組關(guān)聯(lián)到對應(yīng)的角色下,此用戶組就擁有了此角色下的所有權(quán)限,而用戶是屬于用戶組的,所以用戶組下的所有用戶也就同樣的擁有了此角色下的所有權(quán)限。一個用戶可以屬于多個用戶組,一個用戶組也可以包括多個用戶,所以用戶與用戶組是多對多的關(guān)系。

RBAC級別

RBAC0 用戶和角色是多對多,角色和權(quán)限是多對多。一個用戶擁有的權(quán)限,是他所有角色的集合。
RBAC1。基于RBAC0,并引入了角色分層的概念,即一個角色分為多個等級,每個等級對應(yīng)的權(quán)限是不一樣的。把權(quán)限分給用戶時,需要分到對應(yīng)的角色等級。角色等級低時擁有的權(quán)限少,角色等級高的權(quán)限是所有角色等級低的權(quán)限的集合。

RBAC2 基于RBAC1,對角色訪問進(jìn)行限制。如
互斥角色限制。同一個用戶分配到兩個角色,且角色互斥時,那么系統(tǒng)應(yīng)該提醒只能選擇其中一個角色。比如員工擁有商務(wù)這個角色,可以創(chuàng)建結(jié)算單并提交給財(cái)務(wù)審核,這時,就不能賦予這個員工財(cái)務(wù)角色,否則他就自己提交結(jié)算自己審核結(jié)算單了。
角色數(shù)量限制。一個用戶擁有的角色數(shù)量是有限的;一個角色被分配的用戶數(shù)量也是有限的。
先決條件限制。用戶想獲得某個上級角色,必須先獲得其下一級的角色。比如想獲得產(chǎn)品總監(jiān)的權(quán)限,那就需要從產(chǎn)品助理這一角色開始,再到產(chǎn)品經(jīng)理角色,最后到產(chǎn)品總監(jiān)角色。

RBAC3 基于RBAC0,對RBAC1和RBAC2進(jìn)行了整合,是最全面的權(quán)限管理。 用戶組
當(dāng)平臺用戶的基數(shù)增大,角色類型越來越多時,而且一部分人具有相同的屬性,比如財(cái)務(wù)部的所有員工。

ABAC(Attribute-Based Access Control 基于屬性的權(quán)限驗(yàn)證)

ABAC被稱為是權(quán)限系統(tǒng)設(shè)計(jì)的未來。

在結(jié)構(gòu)化語言中使用屬性作為構(gòu)建基石來定義并實(shí)施訪問控制,提供上下文相關(guān)的細(xì)粒度動態(tài)訪問控制服務(wù)。ABAC是一種為解決行業(yè)分布式應(yīng)用可信關(guān)系訪問控制模型,也表示詞語的一種構(gòu)成形式。

ABAC是一種為解決行業(yè)分布式應(yīng)用可信關(guān)系訪問控制模型,它利用相關(guān)實(shí)體(如主體、客體、環(huán)境)的屬性作為授權(quán)的基礎(chǔ)來研究如何進(jìn)行訪問控制。基于角色的訪問控制(RBAC)通過引入角色中間元素,使得權(quán)限先經(jīng)過角色進(jìn)行聚合,然后再將權(quán)限分配給主體,通過這種方式可以簡化授權(quán),可將角色信息看成是一種屬性,這樣 RBAC 就成為了ABAC 的一種單屬性特例。

在ABAC中,主體是對客體(資源)實(shí)施訪問行為的實(shí)體,如用戶、服務(wù)、通信實(shí)體等;

主體有定義其身份和特性的屬性,包括主體的身份、角色、職位、能力、位置、行政關(guān)系以及CA
證書等,如用戶這一主體,它可以以所處行業(yè)中用戶屬性特征為基礎(chǔ),將這些用戶的某些屬性進(jìn)行標(biāo)準(zhǔn)化定義,包括某用戶所屬的部門、職務(wù)、主管業(yè)務(wù)等;

客體是被主體操作的實(shí)體,如文件、數(shù)據(jù)、服務(wù)、系統(tǒng)設(shè)備等,客體屬性包括身份、位置(URL)
、大小、值,這些屬性可從客體的“元數(shù)據(jù)”中獲取,同樣也可以由對其操的主體來繼承。這就是說,客體屬性與主體屬性具有一定的相關(guān)性;
環(huán)境屬性是與事務(wù)(或業(yè)務(wù))處理關(guān)聯(lián)的屬性,它通常與身份無關(guān),但適用于授權(quán)決策,如時間、日期、系統(tǒng)狀態(tài)、安全級別等。

ABAC授權(quán)模型理論上能夠?qū)崿F(xiàn)非常靈活的權(quán)限控制,幾乎能滿足所有類型的需求。從使用場景來說比較適用于用戶數(shù)量多并且授權(quán)比較復(fù)雜的場景。

舉個例子:

P5(職級)的研發(fā)(職位)同學(xué)在公司內(nèi)網(wǎng)(環(huán)境)可以查看和下載(操作)代碼

這個例子中的”職級“”職位“”環(huán)境“”操作“,就是實(shí)體的屬性、操作類型、相關(guān)的環(huán)境,根據(jù)這四點(diǎn)來判斷,此時該用戶是否有某些權(quán)限。
比如同樣是在內(nèi)網(wǎng),這個開發(fā)同學(xué)有權(quán)限操作代碼,而運(yùn)營同學(xué)沒有這個權(quán)限;或者同樣是這個開發(fā)同學(xué),他在內(nèi)網(wǎng)有操作代碼的權(quán)限,而在公司外沒有這個權(quán)限。

通俗的講,就是對用戶實(shí)體的實(shí)體屬性(比如工號,職級,職位等)、環(huán)境屬性(IP、時間、地點(diǎn)等)、操作樹形(增加、刪除、修改、查看等),來計(jì)算出當(dāng)前用戶是否有權(quán)限。

如何選擇

在這里,組織的規(guī)模是至關(guān)重要的因素。由于ABAC最初的設(shè)計(jì)和實(shí)施的困難,對于小型企業(yè)而言,可能太過復(fù)雜了。

對于中小型企業(yè),RBAC是ABAC的簡單替代方案。每個用戶都有自己的角色,并具有相應(yīng)的權(quán)限和限制。當(dāng)用戶轉(zhuǎn)移到新角色時,其權(quán)限將更改為新職位的權(quán)限。這意味著,在明確定義角色的層次結(jié)構(gòu)中,可以輕松管理少量的內(nèi)部和外部用戶。

但是,當(dāng)必須手動建立新角色時,對于大型組織而言,效率并不高。一旦定義了屬性和規(guī)則,當(dāng)用戶和利益相關(guān)者眾多時,ABAC的策略就更容易應(yīng)用,同時還降低了安全風(fēng)險(xiǎn)。

簡而言之,如果滿足以下條件,就選擇ABAC:

  • 你在一個擁有眾多用戶的大型組織中;
  • 你需要深入的特定訪問控制功能;
  • 你有時間投資遠(yuǎn)距離的模型;
  • 你需要確保隱私和安全;

但是,如果滿足以下條件,請考慮RBAC:

  • 你所在的是中小型企業(yè);
  • 你的訪問控制策略廣泛;
  • 你的外部用戶很少,并且你的組織角色得到了明確定義;

參考文章:

https://baike.baidu.com/item/abac/3555041?fr=aladdin
https://blog.csdn.net/qq_31960623/article/details/120528589
https://blog.csdn.net/zl1zl2zl3/article/details/82968140?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-82968140-blog-120528589.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-82968140-blog-120528589.pc_relevant_default&utm_relevant_index=2
https://blog.csdn.net/hi_bigbai/article/details/120868485?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-2-120868485-blog-82968140.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-2-120868485-blog-82968140.pc_relevant_aa
https://www.jianshu.com/p/32e548fbba35
https://blog.csdn.net/qzw752890913/article/details/124461952
https://blog.csdn.net/qq_46311811/article/details/122444864?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6-122444864-blog-124461952.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6-122444864-blog-124461952.pc_relevant_default&utm_relevant_index=9
https://juejin.cn/post/6844904056876433416#heading-12

總結(jié)

以上是生活随笔為你收集整理的权限管理中的RBAC与ABAC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。