自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

四種常用的權(quán)限模型,你都了解嗎?

開(kāi)發(fā) 前端
本文一共介紹了四種常見(jiàn)權(quán)限模型:基于角色的訪問(wèn)控制(Role-based access control,簡(jiǎn)稱 RBAC)、基于屬性的訪問(wèn)控制(Attribute-Based Access Control,簡(jiǎn)稱 ABAC)、自主訪問(wèn)控制(Discretionary Access Control,簡(jiǎn)稱DAC)、強(qiáng)制訪問(wèn)控制(MAC: Mandatory Access Control)。

今天咱們一起聊聊權(quán)限系統(tǒng)。

以大家熟知的電商場(chǎng)景舉例:

  • 用戶可以分為普通用戶、VIP用戶:我們需要控制不同角色用戶的訪問(wèn)范圍。比如,京東的PLUS會(huì)員,可以進(jìn)入會(huì)員專區(qū),而且能夠使用禮金領(lǐng)取優(yōu)惠券,但是普通會(huì)員沒(méi)有這項(xiàng)功能;
  • 用戶還可以范圍顧客、商家:顧客可以從APP下單,可以查看自己所有的訂單,這些訂單屬于不同的商家;商家可以從后臺(tái)看到自己店鋪的所有訂單,這些訂單分屬不同的顧客。

對(duì)于一個(gè)閉環(huán)的系統(tǒng)來(lái)說(shuō),無(wú)論是ToC還是ToB,權(quán)限系統(tǒng)都是基礎(chǔ)組件,用于保障用戶在權(quán)限范圍內(nèi)操作有權(quán)限的數(shù)據(jù)。

如何控制權(quán)限

既然要控制權(quán)限,那我首先需要清楚需要控制的因素有哪些?

第一是控制維度,用戶可以做什么(Operation),在哪些對(duì)象(Object)操作:

  • 比如:對(duì)某個(gè)數(shù)據(jù)的查詢、編輯、刪除。我們可以將之稱為功能權(quán)限。功能權(quán)限又可以細(xì)化為,看到菜單、打開(kāi)頁(yè)面、頁(yè)面中有哪些按鈕、可以訪問(wèn)哪些請(qǐng)求等。
  • 比如:A可以管理甲乙丙三個(gè)店鋪;B可以管理丁一個(gè)店鋪。我們可以稱之為數(shù)據(jù)權(quán)限。數(shù)據(jù)權(quán)限可以細(xì)化為:?jiǎn)吸c(diǎn)、級(jí)聯(lián)、遞歸等。

控制維度控制維度

第二是控制粒度,我們的權(quán)限可以控制到一組人員,還是控制到一類人員:

  • 按組區(qū)分:按照人員的角色進(jìn)行劃分,比如,A、B、C是同一個(gè)部門,具備的權(quán)限都是一樣的,相同的功能權(quán)限、數(shù)據(jù)權(quán)限;
  • 按類區(qū)分:按照用戶的特征進(jìn)行劃分,比如,A、B、C是同一個(gè)部門,數(shù)據(jù)權(quán)限相同。但是A是正式員工,可以有刪除權(quán)限;B是正式員工,但是上個(gè)月績(jī)效太低,刪除權(quán)限被收回;C是實(shí)習(xí)生,只能有查詢權(quán)限,而且只能看到一個(gè)店鋪的數(shù)據(jù)。

兩種方式正好對(duì)應(yīng)的業(yè)界常用的兩種權(quán)限模型:基于角色的訪問(wèn)控制(Role-based access control,簡(jiǎn)稱 RBAC)、基于屬性的訪問(wèn)控制(Attribute-Based Access Control,簡(jiǎn)稱 ABAC)。

什么是 RBAC

顧名思義,基于角色的訪問(wèn)控制,就是給用戶定義角色,通過(guò)角色來(lái)控制權(quán)限。目前來(lái)說(shuō),基于角色權(quán)限控制模型是應(yīng)用較廣的一個(gè)。

在RBAC中,包含用戶(User)、角色(Role)、權(quán)限(Permission),權(quán)限又分為對(duì)象(Object)、操作(Operation),總共五個(gè)基本元素??紤]到多種系統(tǒng)集合或者不同場(chǎng)景,還引入了會(huì)話(Session)。

用戶與角色之間是多對(duì)多,一個(gè)用戶有多個(gè)角色,比如既可以員工也可以是小組長(zhǎng);一個(gè)角色可以有多個(gè)用戶,比如公司所有人都是員工。

一個(gè)角色可以多種權(quán)限,這個(gè)很好理解。每個(gè)角色可以有查看、編輯等多種權(quán)限。

權(quán)限分為操作權(quán)限和對(duì)象權(quán)限,有的地方也稱為功能權(quán)限和數(shù)據(jù)權(quán)限。一個(gè)對(duì)應(yīng)著可以執(zhí)行的動(dòng)作,一個(gè)對(duì)應(yīng)著動(dòng)作的數(shù)據(jù)范圍。

在這個(gè)模型中,還會(huì)細(xì)分為4個(gè)等級(jí):

RBAC0

RBAC0RBAC0

RBAC0包含了RBAC的所有元素,是RBAC的基本模型。幾個(gè)元素之間,就是簡(jiǎn)單的多對(duì)多的關(guān)系。我們?cè)谑忻嫔弦?jiàn)到的大多數(shù)RBAC模型都是處于這個(gè)階段。

用戶根據(jù)會(huì)話選擇對(duì)應(yīng)的角色,然后根據(jù)角色配置的操作權(quán)限,可以在系統(tǒng)中看到菜單、頁(yè)面、按鈕等,根據(jù)角色對(duì)應(yīng)的數(shù)據(jù)權(quán)限,可以從對(duì)應(yīng)的頁(yè)面看到對(duì)應(yīng)的數(shù)據(jù)。

RBAC1

RBAC1RBAC1

RBAC1是基于RBAC0,引入了角色繼承能力。比如有員工角色,可以瀏覽內(nèi)部系統(tǒng)的公開(kāi)信息,然后有老板角色,可以繼承員工角色,也就具備瀏覽內(nèi)部系統(tǒng)的公開(kāi)信息的能力。從用戶體驗(yàn)上沒(méi)有差別,但是從事物認(rèn)知上,更加符合我們的習(xí)慣。

RBAC2

RBAC2RBAC2

RBAC2也是基于RBAC0,與RBAC1不同,RBAC2是增加了對(duì)角色的控制:

  • 靜態(tài)職責(zé)分離(Static Separation of Duty,簡(jiǎn)稱SSD):

互斥角色:用戶只能分配一組互斥角色集合中的一種,比如會(huì)計(jì)和出納;

基數(shù)約束:一個(gè)角色可以被分配給有限的用戶,一個(gè)用戶可擁有有限的角色,一個(gè)角色對(duì)應(yīng)有限的權(quán)限;

先決條件角色:想獲得較高的權(quán)限,要首先擁有低一級(jí)的權(quán)限。

  • 動(dòng)態(tài)職責(zé)分離(Dynamic Separation of Duty,簡(jiǎn)稱DSD)
  • 運(yùn)行時(shí)互斥:一個(gè)用戶可以具備兩個(gè)角色,但是這兩個(gè)角色不能同時(shí)激活。

RBAC3

RBAC3RBAC3

RBAC1和RBAC2具備兩種不同的思想,我們都想要,于是有了RBAC3。

實(shí)踐中的使用

一般來(lái)說(shuō),上面幾種模型可以覆蓋我們大多數(shù)的場(chǎng)景。有時(shí)候,我們還可以針對(duì)自己系統(tǒng)特點(diǎn),還可以做一些擴(kuò)展。

對(duì)于用戶比較多的系統(tǒng),相同角色的用戶可能比較多,比如有100個(gè)用戶都有角色1和角色2,某一天系統(tǒng)升級(jí),增加了新功能,創(chuàng)建了角色3,于是需要給這100個(gè)人都增加角色3,操作起來(lái)不太方便。我們可以增加用戶組的概念,擁有相同角色的用戶添加到一個(gè)用戶組中,用戶組與角色綁定,當(dāng)需要給一部分用戶增加或減少角色的時(shí)候,只需要修改用戶組與角色的關(guān)系即可。

用戶組用戶組

權(quán)限分為操作和對(duì)象,一般在實(shí)踐中中,也會(huì)將角色分為操作角色和對(duì)象角色,兩者彼此分離。

角色角色

還有一種場(chǎng)景是,針對(duì)某些對(duì)象,可以有查看和編輯的權(quán)限,針對(duì)另外的對(duì)象,只有查看權(quán)限。這個(gè)時(shí)候,我們需要建立三者關(guān)系,角色、操作權(quán)限、數(shù)據(jù)權(quán)限。用戶具備角色一,角色一可以操作對(duì)象一、對(duì)象二,對(duì)對(duì)象一可以查看和編輯,對(duì)對(duì)象二可以查看。這種場(chǎng)景是更加細(xì)粒度的控制。只有在管控非常嚴(yán)格的系統(tǒng)中才會(huì)看到,比如,財(cái)務(wù)系統(tǒng)。

角色/操作/對(duì)象角色/操作/對(duì)象

什么是 ABAC

上面提到的最后一種場(chǎng)景中,我們能夠看到用戶在對(duì)象權(quán)限和操作權(quán)限上的靈活配置。本節(jié)我們介紹一種更加靈活的模型:基于屬性的訪問(wèn)控制(Attribute-Based Access Control,簡(jiǎn)稱 ABAC),它的原理是通過(guò)屬性組合動(dòng)態(tài)判斷一個(gè)操作是否可以被允許。

考慮ABAC的模型時(shí),我們需要一個(gè)更加復(fù)雜的場(chǎng)景:OA系統(tǒng)中的文檔系統(tǒng)(下面例子靈感來(lái)源于Authing官網(wǎng))。

  1. 授權(quán)員工張三有《xxx公告》的編輯權(quán)限;
  2. 當(dāng)《xxx公告》的所屬部門跟李四的部門相同時(shí),李四可以訪問(wèn)這個(gè)文檔;
  3. 當(dāng)王五是《xxx公告》的擁有者并且《xxx公告》的狀態(tài)是草稿時(shí),王五可以編輯這個(gè)文檔;
  4. 早上九點(diǎn)前禁止 A 部門的人訪問(wèn)《xxx公告》;
  5. 在除了上海以外的地方禁止以管理員身份訪問(wèn) A 系統(tǒng)。

從上面這個(gè)例子中,我們可以看到ABAC模型與RBAC模型的區(qū)別:RBAC是靜態(tài)的,用戶具備的權(quán)限只與關(guān)聯(lián)角色相關(guān),不隨自身特征變化而改變;ABAC是動(dòng)態(tài)的,時(shí)移世易,隨著用戶特征值的變化,權(quán)限也隨之變化。如果將角色看做一種特征值,那RBAC就是一維的ABAC。

ABACABAC

在 ABAC 模型中,一個(gè)操作是否被允許是基于對(duì)象、資源、操作和環(huán)境信息共同動(dòng)態(tài)計(jì)算決定的:

  • 對(duì)象是當(dāng)前請(qǐng)求訪問(wèn)資源的用戶,用戶的屬性包括ID、員工性質(zhì)(正式、實(shí)習(xí)、外包等)、員工類型(普通、銷售、一線等)、崗位角色、所在部門、辦公地點(diǎn)、組織成員身份等;
  • 資源是當(dāng)前用戶要訪問(wèn)的資產(chǎn)或?qū)ο?,例如文件、?shù)據(jù)、服務(wù)器、API等;
  • 操作是用戶試圖對(duì)資源進(jìn)行的操作,常見(jiàn)的操作包括查詢、編輯(新增、修改)、復(fù)制、刪除、導(dǎo)出等;
  • 環(huán)境是每個(gè)訪問(wèn)請(qǐng)求的上下文,環(huán)境屬性包含訪問(wèn)的時(shí)間、位置,對(duì)象的設(shè)備,通信協(xié)議和加密強(qiáng)度等。

在 ABAC模型 的決策語(yǔ)句的執(zhí)行過(guò)程中,決策引擎會(huì)根據(jù)定義好的決策語(yǔ)句,結(jié)合對(duì)象、資源、操作、環(huán)境等因素動(dòng)態(tài)計(jì)算出決策結(jié)果。每當(dāng)發(fā)生訪問(wèn)請(qǐng)求時(shí),ABAC模型決策系統(tǒng)都會(huì)分析屬性值是否與已建立的策略匹配。如果有匹配的策略,訪問(wèn)請(qǐng)求就會(huì)被通過(guò)。

DAC與MAC

為了本文的完整,這里在介紹一下常見(jiàn)但是不常用的兩個(gè)模型:

  • 自主訪問(wèn)控制(Discretionary Access Control,簡(jiǎn)稱DAC):被操作對(duì)象,根據(jù)訪問(wèn)控制規(guī)則(權(quán)限控制列表(ACL: Access Control List)或者權(quán)限控制矩陣(ACL: Access Control Matrix)),來(lái)判斷操作主體可對(duì)操作對(duì)象做哪些操作,比如只讀或者是可寫的權(quán)限。而自主的含義,則是擁有某種權(quán)限的用戶,可以把權(quán)限賦予其他用戶。
  • 強(qiáng)制訪問(wèn)控制(MAC: Mandatory Access Control):被操作對(duì)象及用戶兩方均有各自的權(quán)限標(biāo)識(shí),用戶能否對(duì)對(duì)象進(jìn)行操作,取決于雙方的權(quán)限標(biāo)識(shí)的關(guān)系,這個(gè)限制判斷通常是由系統(tǒng)硬性限制的。這種模型多用于等級(jí)制度明顯,信息訪問(wèn)安全性要求高的場(chǎng)景,比如軍事。

文末總結(jié)

本文一共介紹了四種常見(jiàn)權(quán)限模型:基于角色的訪問(wèn)控制(Role-based access control,簡(jiǎn)稱 RBAC)、基于屬性的訪問(wèn)控制(Attribute-Based Access Control,簡(jiǎn)稱 ABAC)、自主訪問(wèn)控制(Discretionary Access Control,簡(jiǎn)稱DAC)、強(qiáng)制訪問(wèn)控制(MAC: Mandatory Access Control)。模型是死的,業(yè)務(wù)是活的。在實(shí)踐過(guò)程中,還會(huì)有很多的變體,萬(wàn)變不離其宗,只要掌握了這幾種模型的核心,任何變體都可以隨心所欲。

責(zé)任編輯:武曉燕 來(lái)源: 看山的小屋
相關(guān)推薦

2024-12-02 08:29:57

2019-05-08 10:50:37

交換機(jī)組網(wǎng)網(wǎng)絡(luò)

2024-11-05 14:00:56

2024-10-09 23:27:08

語(yǔ)言模型LLM機(jī)器學(xué)習(xí)

2021-08-11 20:17:22

推薦算法系統(tǒng)

2025-02-18 16:27:01

2022-07-04 12:07:57

智慧城市智能建筑物聯(lián)網(wǎng)

2018-11-05 09:31:11

服務(wù)器推送方式

2019-05-12 14:35:03

惡意軟件網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2021-03-28 09:26:30

HttpHttp協(xié)議網(wǎng)絡(luò)協(xié)議

2019-08-13 09:00:24

REST API身份認(rèn)證密鑰

2015-05-08 12:24:10

惡意軟件逃避技術(shù)

2024-12-26 08:42:37

2022-01-05 08:30:31

BIONIO AIO

2020-06-17 08:31:10

權(quán)限控制Spring Secu

2021-07-27 10:49:10

SpringSecurity權(quán)限

2010-11-04 09:31:21

DB2循環(huán)語(yǔ)句

2023-09-22 08:01:10

2024-11-28 09:06:52

2019-09-04 08:13:31

數(shù)據(jù)庫(kù)緩存存儲(chǔ)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)