簡(jiǎn)單了解常見的權(quán)限系統(tǒng)

1.? ACL(Access Control List)模型:列表控制訪問(wèn),常用于文件系統(tǒng),用戶訪問(wèn)某文件時(shí),通過(guò)文件來(lái)判斷用戶的權(quán)限,是讀、寫、禁止訪問(wèn) 這里可以把系統(tǒng)的對(duì)象,比如是某個(gè)文件擬人化,它作為一個(gè)文件處于一個(gè)固定的位置,有A、B、C,共3個(gè)人來(lái)訪問(wèn)這個(gè)文件;對(duì)于這個(gè)文件來(lái)說(shuō),它需要“記住”這個(gè)系統(tǒng)上所有用戶是否可以訪問(wèn)它,是否可以進(jìn)行讀寫操作;而對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō),可能有很多個(gè)文件,每個(gè)文件都需要記住所有的人能對(duì)自己進(jìn)行什么操作。


通過(guò)文件來(lái)查看所有用戶權(quán)限是可以的,反過(guò)來(lái),以用戶為一個(gè)列表來(lái)說(shuō)明這個(gè)人的文件權(quán)限也是可行的,如“文件權(quán)限矩陣表”里的“用戶A”,他目前可以看見的權(quán)限是文件2的查看權(quán)限+文件3的編輯權(quán)限,那么將上表按用戶進(jìn)行匯總也就是“用戶權(quán)限列表”

如果這里有一個(gè)僅使用了ACL模型的權(quán)限系統(tǒng),供100人的公司來(lái)使用,系統(tǒng)里又有100份文件,那么這100個(gè)文件都需要單獨(dú)對(duì)這100人進(jìn)行權(quán)限的設(shè)置,如果發(fā)生了人員的增減,那么所有的權(quán)限都需要重新再設(shè)置一遍。
所以ACL模型還有一個(gè)升級(jí)的版本,在用戶和權(quán)限之間增加一個(gè)用戶組,處于一個(gè)用戶組的人,有著相同的權(quán)限,一個(gè)用戶也可以處于多個(gè)用戶組內(nèi),這里的用戶組和權(quán)限之間有著較強(qiáng)的關(guān)聯(lián)性,與RBAC不同。
2.? DAC(Discretionary Access Control)模型:自主訪問(wèn)控制,基于ALC的優(yōu)化版本,可以理解為主要多了“分享權(quán)限“的權(quán)限和其他一些規(guī)則,如:用戶A可以把自己擁有的全部或一部分權(quán)限授權(quán)給另一用戶B。這里舉一個(gè)不太恰當(dāng)?shù)睦?,用戶A擁有在線文檔1的編輯、查看權(quán)限,他可以將在線文檔1分享給用戶B,并給用戶B查看+編輯權(quán)限(或僅查看權(quán)限),這在日常的協(xié)作中是很常見的。

3.? MAC(Mandatory Access Control)模型:強(qiáng)制訪問(wèn)控制,這是一個(gè)基于DAC模型的一個(gè)升級(jí)版本。 拿到文件系統(tǒng)里說(shuō),用戶和文件需要雙向驗(yàn)證是否有權(quán)限訪問(wèn),甚至可以嚴(yán)格到這個(gè)文件每次只允許1個(gè)用戶訪問(wèn);系統(tǒng)可以記錄某個(gè)用戶的擁有的權(quán)限,分別是由哪些用戶授權(quán)的,而且有些特定的權(quán)限,禁止用戶間的互相授權(quán);對(duì)于權(quán)限的發(fā)放,需要專門的管理員或擁有管理權(quán)限的人才能進(jìn)行分配。 一般存在于對(duì)于保密要求非常嚴(yán)格的系統(tǒng)里,可以理解為給用戶和文件分別打上各類級(jí)別的標(biāo)簽,不同標(biāo)簽的用戶可以看到的文件范圍是不同的,同時(shí)需要訪問(wèn)時(shí),還需要特定的密碼才能訪問(wèn)。
3.1.? 用戶:普通、低、中、高級(jí)別
3.2.? 對(duì)象:絕密、機(jī)密、保密、公開
但事無(wú)絕對(duì),目前很多系統(tǒng)里都由超級(jí)管理員或管理員來(lái)進(jìn)行分配權(quán)限,這里面有MAC模型的影子。
在ACL模型里,還可以直接將權(quán)限組成一個(gè)集合可以作為權(quán)限組,或?qū)⒁恍┯脩艚M成用戶組,權(quán)限組或用戶組就是充當(dāng)一個(gè)抽象的”角色“,和RBAC模型有些相似

4.? RBAC(Role-based Access Control)模型:基于角色的訪問(wèn)控制模型,這個(gè)是目前使用比較廣泛的一個(gè)權(quán)限模型,它在用戶和權(quán)限中間添加了一個(gè)對(duì)象,稱作“角色”,權(quán)限、角色和用戶是分別獨(dú)立存在的,我根據(jù)個(gè)人理解和查閱的資料做一個(gè)定義:
●?用戶:訪問(wèn)系統(tǒng)的人
●?角色:一些相關(guān)聯(lián)權(quán)限的集合
●?權(quán)限:能夠執(zhí)行某種操作的許可

按這三個(gè)概念舉一些例子:用戶可以是登錄用戶、未登錄用戶(游客)···;角色可以是管理員、超級(jí)管理員、某些模塊的管理員···;權(quán)限可以大致分為設(shè)備權(quán)限(攝像頭、麥克風(fēng)···)、應(yīng)用權(quán)限(訪問(wèn)、安裝、刪除···)、文件權(quán)限(增刪改查···),在這個(gè)概念下:
●?權(quán)限是有很多個(gè)的,不過(guò)權(quán)限是需要區(qū)分顆粒度的,有些簡(jiǎn)單的系統(tǒng)權(quán)限可以是粗粒度的,把一整個(gè)頁(yè)面作為一個(gè)權(quán)限;也可以是細(xì)粒度的,詳細(xì)到某個(gè)按鈕,某個(gè)數(shù)據(jù)的權(quán)限。
●?角色也是有很多個(gè)的,根據(jù)業(yè)務(wù)的需要,可以提前設(shè)置一些虛擬的人在系統(tǒng)里,這些虛擬人擁有一部分權(quán)限。
●?用戶也可能是多個(gè)的(作為系統(tǒng)的使用人員們)
然后將權(quán)限→角色→用戶,按照多對(duì)多的形式進(jìn)行授權(quán),RBAC經(jīng)過(guò)了多個(gè)版本的優(yōu)化,可以在NIST網(wǎng)站里查到描述
RBAC0:角色、權(quán)限、用戶分開,一個(gè)基本模型
RBAC1:支持子角色,角色權(quán)限繼承
RBAC2:各種關(guān)聯(lián)角色的限制
SSD(Static Separation of Duty)模型:靜態(tài)職責(zé)分離,賦予角色時(shí)限制(互斥角色:不能同時(shí)擁有某兩個(gè)角色;用戶擁有角色限制:一個(gè)用戶最多擁有幾個(gè)角色;先決條件限制:想要獲得某權(quán)限,需要先獲得某權(quán)限)
DSD(Dynamic Separation of Duty):動(dòng)態(tài)職責(zé)分離,用戶擁有多個(gè)角色,一次會(huì)話中,不能同時(shí)使用有沖突的角色。
RBAC3:包含了0、1、2所有規(guī)則,屬于RBAC模型的完全體
方便理解,這里需要舉一些例子
RBAC1里的角色權(quán)限繼承:相當(dāng)于用戶A是部門主管,他可以將自己系統(tǒng)內(nèi)擁有的權(quán)限分配給自己部門的其他人;又或者用戶B離職了,可以將用戶B擁有的權(quán)限直接都給用戶C,方便交接。
RBAC2里的角色限制:用戶A不能又有采購(gòu)模塊權(quán)限又有財(cái)務(wù)模塊權(quán)限;用戶B同時(shí)只能被賦予固定數(shù)量的角色;用戶C需要獲得某角色的權(quán)限,需要先申請(qǐng)普通角色,再申請(qǐng)高一級(jí)別的角色;用戶D擁有兩個(gè)互斥角色AB,登陸時(shí)選擇A,此時(shí)想要切換成B,需要“退出”,重新“登陸”為B。
5.? ABAC(Attribute-Based Access Control)模型:基于屬性的權(quán)限控制,用戶訪問(wèn)某對(duì)象時(shí),判斷多個(gè)屬性是否都匹配,僅從權(quán)限屬性的觀點(diǎn)來(lái)考慮,ACL和RBAC都是在考慮不同的屬性而已,所有ACL和RBAC都可以當(dāng)作ABAC的特殊情況 權(quán)限是屬性可以大致分為:環(huán)境屬性、用戶屬性、資源屬性、操作屬性

比如在一個(gè)系統(tǒng)里,有用戶A、B、C,一共3個(gè)人,需要對(duì)使用設(shè)備進(jìn)行限制,不同的部門的員工需要看見不同的頁(yè)面,對(duì)于各種列表或文件甚至按鈕權(quán)限也有單獨(dú)的要求。這時(shí)候可以使用ABAC的權(quán)限模型,不光對(duì)頁(yè)面或模塊可以設(shè)置權(quán)限,對(duì)于單獨(dú)的一些細(xì)顆粒的權(quán)限也可以靈活設(shè)置,這樣對(duì)于權(quán)限的變動(dòng)和修改來(lái)說(shuō)更為靈活。
6.? PBAC(Policy-Based Access Control)模型:基于策略的訪問(wèn)控制
PBAC和ABAC十分相似的,2者其實(shí)都是屬性+策略來(lái)控制權(quán)限,只是ABAC更注重權(quán)限,PBAC更注重于策略,下面按自然語(yǔ)言舉2個(gè)例子:
●?用戶A使用window設(shè)備,在連接公司網(wǎng)絡(luò)的情況下,可以在系統(tǒng)里某個(gè)模塊里,自己上傳的文件,進(jìn)行查看和編輯操作。
●?用戶B使用手機(jī),在早上8點(diǎn)到晚上22點(diǎn)的時(shí)間段,可以在某系統(tǒng)的某模塊進(jìn)行添加、編輯、刪除的操作
7.? RAdAC(Risk-Adaptive Access Control)模型:風(fēng)險(xiǎn)適應(yīng)性訪問(wèn)控制
它結(jié)合了有關(guān)個(gè)人或機(jī)器可信度的信息、有關(guān)公司It基礎(chǔ)設(shè)施的信息和環(huán)境風(fēng)險(xiǎn)因素,并使用所有這些信息來(lái)創(chuàng)建一個(gè)總體的可量化風(fēng)險(xiǎn)度量,這個(gè)判斷條件可以包括基于從其他來(lái)源收集的數(shù)據(jù),組織面臨的當(dāng)前威脅級(jí)別的信息等。
我個(gè)人理解:RAdAC是根據(jù)系統(tǒng)內(nèi)+系統(tǒng)外的情況靈活自動(dòng)的配置實(shí)時(shí)的權(quán)限,使整個(gè)系統(tǒng)看起來(lái)更加的智能,減少的權(quán)限分配的操作,但是對(duì)于系統(tǒng)的信息收集要求也很高,對(duì)于系統(tǒng)收集到信息的及時(shí)性和可信度要求也很高,這個(gè)模型在ai技術(shù)比較成熟后可能會(huì)實(shí)現(xiàn)的更好。

實(shí)際在使用的過(guò)程中,我們的各種系統(tǒng)都不太會(huì)嚴(yán)格要求各種模型來(lái)使用,都是根據(jù)業(yè)務(wù)的要求和發(fā)展進(jìn)行權(quán)限的設(shè)置,暫時(shí)還沒有一個(gè)完美的權(quán)限系統(tǒng),只有更適合當(dāng)前業(yè)務(wù)的權(quán)限系統(tǒng),我們?cè)诤芏嘞到y(tǒng)的權(quán)限設(shè)計(jì)里都可以看見上述一個(gè)或多個(gè)模型的影子。
