此篇主要對權(quán)限系統(tǒng)設(shè)計所涉的一些專業(yè)術(shù)語重點梳理。從我們windows的文件系統(tǒng)?自主訪問控制 到基于角色訪問控制。
權(quán)限設(shè)計基本術(shù)語
對后面會用到的詞匯做一個簡要說明
什么是權(quán)限(許可)
權(quán)限(Privilege/Permission)是指為了保證職責(zé)的有效履行,任職者必須具備的胆胰,對某事項進行決策的范圍和程度。它常常用“具有批準(zhǔn)……事項的權(quán)限”來進行表達。例如荷憋,具有批準(zhǔn)預(yù)算外5000元以內(nèi)的禮品費支出的權(quán)限。
在計算機系統(tǒng)中褐望,權(quán)限是指某個特定的用戶具有特定的系統(tǒng)資源使用權(quán)力勒庄。而在我們做的后臺管理系統(tǒng)串前,資源指的是系統(tǒng)中所有的內(nèi)容,包括模塊实蔽、菜單荡碾、頁面、字段局装、操作功能(增刪改查)等等玩荠。大致可以將權(quán)限分為:
功能級權(quán)限管理,在操作系統(tǒng)中的任何動作贼邓、交互都是功能權(quán)限阶冈,如增刪改查等。
數(shù)據(jù)級權(quán)限管理塑径。一般業(yè)務(wù)管理系統(tǒng)女坑,都有數(shù)據(jù)私密性的要求:哪些人可以看到哪些數(shù)據(jù),不可以看到哪些數(shù)據(jù)统舀。
從控制方向來看匆骗,也可以將權(quán)限管理分為兩大類:
從系統(tǒng)獲取數(shù)據(jù),比如查詢訂單誉简、查詢客戶資料
向系統(tǒng)提交數(shù)據(jù)碉就,比如刪除訂單、修改客戶資料
權(quán)限管理闷串,一般指根據(jù)系統(tǒng)設(shè)置的安全規(guī)則或者安全策略瓮钥,用戶可以訪問而且只能訪問自己被授權(quán)的資源。
權(quán)限管理幾乎出現(xiàn)在任何系統(tǒng)里面烹吵,只要有用戶和密碼的系統(tǒng)碉熄。 很多人常將“用戶身份認證”、“密碼加密”肋拔、“系統(tǒng)管理”等概念與權(quán)限管理概念混淆锈津。
功能權(quán)限管理技術(shù),一般就使用基于角色訪問控制技術(shù)RBAC(Role Based Access Control)凉蜂。該技術(shù)被廣泛運用于各個系統(tǒng)琼梆。
權(quán)限控制表 (ACL: Access Control List)
用來描述權(quán)限規(guī)則或用戶和權(quán)限之間關(guān)系的數(shù)據(jù)表。
權(quán)限標(biāo)識
權(quán)限的代號窿吩,例如用“ARTICLE_ADD”來指代“添加文章的操作”權(quán)限茎杂。如linux文件淺析 rwx代表讀寫執(zhí)行權(quán)限。
角色
角色是一定數(shù)量的許可的集合爆存,許可的載體蛉顽,一個角色可以包含多個用戶蝗砾,一個用戶同樣的也可以屬于多個角色先较,所以角色與用戶的關(guān)系為多對多的關(guān)系携冤。同樣的一個角色可以包含多個用戶組,一個用戶組也可以屬于多個角色闲勺,所以角色和用戶組也是多對多的關(guān)系曾棕;
一個用戶一個角色:用戶/角色/權(quán)限關(guān)系總結(jié)
個用戶有一個角色
一個角色有多個操作(菜單)權(quán)限
一個操作權(quán)限可以屬于多個角色
在實際的團體業(yè)務(wù)中,都可以將用戶分類菜循。比如對于薪水管理系統(tǒng)翘地,通常按照級別分類:經(jīng)理、高級工程師癌幕、中級工程師衙耕、初級工程師。也就是按照一定的角色分類勺远,通常具有同一角色的用戶具有相同的權(quán)限橙喘。這樣改變之后,就可以將針對用戶賦權(quán)轉(zhuǎn)換為針對角色賦權(quán)胶逢。
我們可以用下圖中的數(shù)據(jù)庫設(shè)計模型厅瞎,描述這樣的關(guān)系。
一個用戶一個或多個角色:用戶/角色/權(quán)限關(guān)系總結(jié)
但是在實際的應(yīng)用系統(tǒng)中初坠,一個用戶一個角色遠遠滿足不了需求和簸。如果我們希望一個用戶既擔(dān)任銷售角色、又暫時擔(dān)任副總角色碟刺。該怎么做呢锁保?為了增加系統(tǒng)設(shè)計的適用性,我們通常設(shè)計:
一個用戶有一個或多個角色
一個角色包含多個用戶
一個角色有多種權(quán)限
一個權(quán)限屬于多個角色
我們可以用下圖中的數(shù)據(jù)庫設(shè)計模型半沽,描述這樣的關(guān)系身诺。
用戶組
當(dāng)平臺用戶基數(shù)增大,角色類型增多時抄囚,如果直接給用戶配角色霉赡,管理員的工作量就會很大。如果有一類的用戶都要屬于某個角色幔托,我們一個個給用戶授予角色穴亏,重復(fù)工作特別多,所以我們把這么一些用戶進行分類重挑,這時候我們可以引入一個概念“用戶組”嗓化,就是將相同屬性的用戶歸類到一起。也就是用戶組谬哀,這樣的話刺覆,我們直接對用戶組賦予角色,減少重復(fù)的工作量史煎。
例如:加入用戶組的概念后谦屑,可以將部門看做一個用戶組驳糯,再給這個部門直接賦予角色(1萬員工部門可能就幾十個),使部門擁有部門權(quán)限氢橙,這樣這個部門的所有用戶都有了部門權(quán)限酝枢,而不需要為每一個用戶再單獨指定角色,極大的減少了分配權(quán)限的工作量悍手。
同時帘睦,也可以為特定的用戶指定角色,這樣用戶除了擁有所屬用戶組的所有權(quán)限外坦康,還擁有自身特定的權(quán)限竣付。
用戶組的優(yōu)點,除了減少工作量滞欠,還有更便于理解卑笨、增加多級管理關(guān)系等。如:我們在進行組織機構(gòu)配置的時候仑撞,除了加入部門赤兴,還可以加入科室、崗位等層級隧哮,來為用戶組內(nèi)部成員的權(quán)限進行等級111111上的區(qū)分桶良。
關(guān)于用戶組的詳細疑難解答,請查看https://wen.woshipm.com/question/detail/88fues.html沮翔。在這里也十分感謝為我解答疑惑的朋友們陨帆!
常見設(shè)計模式
自主訪問控制(DAC: Discretionary Access Control)
系統(tǒng)會識別用戶,然后根據(jù)被操作對象(Subject)的權(quán)限控制列表(ACL: Access Control List)或者權(quán)限控制矩陣(ACL: Access Control Matrix)的信息來決定用戶的是否能對其進行哪些操作采蚀,例如讀取或修改疲牵。
而擁有對象權(quán)限的用戶,又可以將該對象的權(quán)限分配給其他用戶榆鼠,所以稱之為“自主(Discretionary)”控制纲爸。
這種設(shè)計最常見的應(yīng)用就是文件系統(tǒng)的權(quán)限設(shè)計,如微軟的NTFS妆够。
DAC最大缺陷就是對權(quán)限控制比較分散识啦,不便于管理,比如無法簡單地將一組文件設(shè)置統(tǒng)一的權(quán)限開放給指定的一群用戶神妹。
強制訪問控制(MAC: Mandatory Access Control)
MAC是為了彌補DAC權(quán)限控制過于分散的問題而誕生的颓哮。
在MAC的設(shè)計中,每一個對象都都有一些權(quán)限標(biāo)識鸵荠,每個用戶同樣也會有一些權(quán)限標(biāo)識冕茅,而用戶能否對該對象進行操作取決于雙方的權(quán)限標(biāo)識的關(guān)系调违,這個限制判斷通常是由系統(tǒng)硬性限制的穿撮。比如在影視作品中我們經(jīng)常能看到特工在查詢機密文件時签赃,屏幕提示需要“無法訪問忽妒,需要一級安全許可”,這個例子中姜挺,文件上就有“一級安全許可”的權(quán)限標(biāo)識齿税,而用戶并不具有彼硫。
MAC非常適合機密機構(gòu)或者其他等級觀念強烈的行業(yè)炊豪,但對于類似商業(yè)服務(wù)系統(tǒng),則因為不夠靈活而不能適用拧篮。
因為DAC和MAC的諸多限制词渤,于是誕生了RBAC,并且成為了迄今為止最為普及的權(quán)限設(shè)計模型串绩。
RBAC是什么缺虐?
RBAC,Role-based access control礁凡,基于角色的訪問控制高氮,通過角色關(guān)聯(lián)用戶,角色關(guān)聯(lián)權(quán)限的方式間接賦予用戶權(quán)限顷牌。
是資訊安全領(lǐng)域中剪芍,一種較新且廣為使用的訪問控制機制,其不同于強制訪問控制以及自由選定訪問控制直接賦予使用者權(quán)限窟蓝,而是將權(quán)限賦予角色罪裹。
1996年,萊威·桑度(Ravi Sandhu)等人在前人的理論基礎(chǔ)上运挫,提出以角色為基礎(chǔ)的訪問控制模型状共,故該模型又被稱為RBAC96。之后谁帕,美國國家標(biāo)準(zhǔn)局重新定義了以角色為基礎(chǔ)的訪問控制模型峡继,并將之納為一種標(biāo)準(zhǔn),稱之為NIST RBAC匈挖。
RBAC認為權(quán)限授權(quán)實際上是Who鬓椭、What、How的問題关划。在RBAC模型中小染,who、what贮折、how構(gòu)成了訪問權(quán)限三元組裤翩,也就是“Who對What(Which)進行How的操作,也就是“主體”對“客體”的操作,其中who——是權(quán)限的擁有者或主體(如:User踊赠、Role)呵扛,what——是資源或?qū)ο螅≧esource、Class)
為什么選擇RBAC進行權(quán)限控制
通常一個系統(tǒng)會存在不同權(quán)限的用戶筐带,而根據(jù)業(yè)務(wù)要求的不同今穿,每個用戶能使用的功能、查看的內(nèi)容是不同的伦籍。舉個最簡單的例子:釘釘后臺蓝晒,普通員工和行政能看到的菜單、使用的功能是不同的帖鸦,行政可以查看所有員工的出勤記錄而普通員工則不行芝薇。
其實是可以直接給用戶分配權(quán)限,只是直接給用戶分配權(quán)限作儿,少了一層關(guān)系洛二,擴展性弱了許多,適合那些用戶數(shù)量攻锰、角色類型少的平臺晾嘶。
對于通常的系統(tǒng),比如:存在多個用戶擁有相同的權(quán)限娶吞,在分配的時候就要分別為這幾個用戶指定相同的權(quán)限垒迂,修改時也要為這幾個用戶的權(quán)限進行一一修改。有了角色后寝志,我們只需要為該角色制定好權(quán)限后娇斑,將相同權(quán)限的用戶都指定為同一個角色即可,便于權(quán)限管理材部。
對于批量的用戶權(quán)限調(diào)整毫缆,只需調(diào)整用戶關(guān)聯(lián)的角色權(quán)限,無需對每一個用戶都進行權(quán)限調(diào)整乐导,既大幅提升權(quán)限調(diào)整的效率苦丁,又降低了漏調(diào)權(quán)限的概率。
RBAC定義
在一個組織中物臂,會因為不同的作業(yè)功能產(chǎn)生不同的角色旺拉,執(zhí)行某項操作的權(quán)限會被賦予特定的角色。組織成員或者工作人員(抑或其它系統(tǒng)用戶)則被賦予不同的角色棵磷,這些用戶通過被賦予角色來取得執(zhí)行某項計算機系統(tǒng)功能的權(quán)限蛾狗。
S = 主體 = 一名使用者或自動代理人
R = 角色 = 被定義為一個授權(quán)等級的工作職位或職稱
P = 權(quán)限 = 一種存取資源的方式
SE = 會期 = S,R或P之間的映射關(guān)系
SA = 主體指派
PA = 權(quán)限指派
RH = 角色階層仪媒。能被表示為:≥(x ≥ y 代表 x 繼承 y 的權(quán)限)
一個主體可對應(yīng)多個角色沉桌。
一個角色可對應(yīng)多個主體。
一個角色可擁有多個權(quán)限。
一種權(quán)限可被分配給許多個角色留凭。
一個角色可以有專屬于自己的權(quán)限佃扼。
所以,用集合論的符號:
PA?P×R 是一個多對多的權(quán)限分配方式蔼夜。
SA?S×R 是一個多對多的主體指派方式兼耀。
RH?R×R
參考文章:
RBAC模型:基于用戶-角色-權(quán)限控制的一些思考www.woshipm.com/pd/1150093.html/comment-page-1
RBAC權(quán)限模型——項目實戰(zhàn)https://blog.csdn.net/zwk626542417/article/details/46726491
權(quán)限系統(tǒng)設(shè)計模型分析(DAC,MAC求冷,RBAC瘤运,ABAC) http://www.reibang.com/p/ce0944b4a903
圖文詳解基于角色的權(quán)限控制模型RBAC?https://www.bbsmax.com/A/kvJ3Yl8Ddg/
轉(zhuǎn)載本站文章《權(quán)限系統(tǒng)設(shè)計(0):權(quán)限系統(tǒng)設(shè)計基本概念改需-MAC/RBAC引子》,
請注明出處:https://www.zhoulujun.cn/html/Operation/PM/2020_0505_8401.html