權(quán)限的游戲:淺談產(chǎn)品權(quán)限分析與設(shè)計(jì)
合理的權(quán)限管理方案將有利于處理更多事務(wù),提升操作效率,也降低風(fēng)險(xiǎn)發(fā)生的可能性。使用者能夠在有限范圍內(nèi)使用資源,管理者基于系統(tǒng)進(jìn)行資源分配。本篇文章講解了4種訪問(wèn)控制授權(quán)方案,一起來(lái)看一下。
目前我們使用的訪問(wèn)控制授權(quán)方案,主要有以下4種:
- DAC自主訪問(wèn)控制
- ACL 訪問(wèn)控制列表
- MAC強(qiáng)制訪問(wèn)控制
- RBAC 基于角色的訪問(wèn)控制
筆者將拆解和分析這4種權(quán)限管理方案的邏輯,并告訴你,這4種權(quán)限分別可以運(yùn)用在什么樣的場(chǎng)景中,以及它們應(yīng)該怎么設(shè)計(jì)。
一、DAC自主訪問(wèn)控制
DAC(DiscretionaryAccess Control)自主訪問(wèn)控制方式:該模型針對(duì)每個(gè)用戶指明能夠訪問(wèn)的資源,對(duì)于不在指定的資源列表中的對(duì)象不允許訪問(wèn)。
《信息系統(tǒng)系項(xiàng)目管理師教程》(第3版)P656
如上圖所示,我們假設(shè)有兩名用戶(用戶1、用戶2)和4個(gè)權(quán)限(權(quán)限1~4),用戶1指明能夠訪問(wèn)權(quán)限1和權(quán)限2,用戶2指明能夠訪問(wèn)權(quán)限3和權(quán)限4,授權(quán)成立之后就會(huì)出現(xiàn)如下的情況:
用戶1可以正常訪問(wèn)權(quán)限1和權(quán)限2,但是如果想訪問(wèn)權(quán)限3或權(quán)限4,由于自身權(quán)限列表中沒(méi)有這2個(gè)權(quán)限,所以不允許訪問(wèn);用戶2也是相同道理,可以訪問(wèn)權(quán)限3和權(quán)限4,但無(wú)法訪問(wèn)權(quán)限1和權(quán)限2。
這種授權(quán)方式適用于用戶少權(quán)限多的場(chǎng)景,常見(jiàn)于網(wǎng)盤的資源分享中.
用過(guò)網(wǎng)盤的人都知道,網(wǎng)盤的分享功能就是選擇想要分享的文件,點(diǎn)擊分享,這個(gè)時(shí)候會(huì)生成分享鏈接,而這個(gè)分享鏈接,其實(shí)就是一個(gè)“用戶對(duì)象”,這個(gè)“用戶對(duì)象”指定了可以訪問(wèn)我們所選取的文件,這樣當(dāng)我們把鏈接分享出去的時(shí)候,打開(kāi)鏈接的人就可以看到我們所選取的文件,但對(duì)于我們沒(méi)有選取的網(wǎng)盤內(nèi)的其他文件,是無(wú)法看到的。
同理,這個(gè)時(shí)候如果我選取另外的文件并創(chuàng)建新的分享鏈接,則等同于創(chuàng)建了一個(gè)新的“用戶對(duì)象”,雖然新的分享鏈接中的文件可能與之前的分享鏈接中的文件重疊甚至完全相同,但是訪問(wèn)的時(shí)候,本質(zhì)上還是根據(jù)不同的“用戶對(duì)象”訪問(wèn)他們被指定允許訪問(wèn)的資源。
二、ACL 訪問(wèn)控制列表
ACL(AccessControlList)訪問(wèn)控制列表方式:該模型是目前應(yīng)用最多的方式。目標(biāo)資源擁有訪問(wèn)權(quán)限列表,指明允許哪些用戶訪問(wèn)。如果某個(gè)用戶不在訪問(wèn)控制列表中,則不允許該用戶訪問(wèn)這個(gè)資源。
《信息系統(tǒng)系項(xiàng)目管理師教程》(第3版)P656
從定義上來(lái)看,這種授權(quán)方式跟上一種授權(quán)方式本質(zhì)是一樣的,但是授權(quán)的邏輯相反。
如上圖,權(quán)限1和權(quán)限2分別指明允許用戶1訪問(wèn),權(quán)限3和權(quán)限4分別指明允許用戶2訪問(wèn)。同樣的,如果用戶1想要訪問(wèn)沒(méi)有被授權(quán)的權(quán)限3和權(quán)限4的時(shí)候,便訪問(wèn)不了。
這種授權(quán)方式與上一種授權(quán)方式適用的場(chǎng)景相反,更適用于權(quán)限少用戶多的場(chǎng)景,常用于“抄送”功能中,比如發(fā)郵件時(shí)候的抄送功能,或者 OA 系統(tǒng)審批后的抄送功能,添加抄送人的過(guò)程其實(shí)就是針對(duì)當(dāng)前的這個(gè)權(quán)限(郵件或?qū)徟鷨危┲该髟试S哪些用戶訪問(wèn)的過(guò)程。
三、MAC 強(qiáng)制訪問(wèn)控制
MAC(MandatoryAccess Control)強(qiáng)制訪問(wèn)控制方式,該模型在軍事和安全部門中應(yīng)用較多,?目標(biāo)具有一個(gè)包含等級(jí)的安全標(biāo)簽(如:不保密、限制、秘密、機(jī)密、絕密);訪問(wèn)者擁有包含等級(jí)列表的許可,其中定義了可以訪問(wèn)哪個(gè)級(jí)別的目標(biāo):例如允許訪問(wèn)秘密級(jí)信息,這時(shí),秘密級(jí)、限制級(jí)和不保密級(jí)的信息是允許訪問(wèn)的,但機(jī)密和絕密級(jí)信息不允許訪問(wèn)。
《信息系統(tǒng)系項(xiàng)目管理師教程》(第3版)P656
如上圖,假設(shè)有4個(gè)標(biāo)簽,標(biāo)簽1~4分別對(duì)應(yīng)權(quán)限1~4(實(shí)際設(shè)計(jì)中,一個(gè)標(biāo)簽可能對(duì)應(yīng)多個(gè)權(quán)限),標(biāo)簽等級(jí)為:標(biāo)簽1 > 標(biāo)簽2 >標(biāo)簽3 > 標(biāo)簽4,如果定義了用戶1為標(biāo)簽2,用戶2為標(biāo)簽3,如下:
則有:
如上,用戶1可以訪問(wèn)標(biāo)簽2及其等級(jí)以下的權(quán)限(權(quán)限2、3、4),用戶2可以訪問(wèn)標(biāo)簽3及其等級(jí)以下的權(quán)限(權(quán)限3、4)。
如上文所述,“該模型在軍事和安全部門中應(yīng)用較多”,因此在我們平時(shí)的產(chǎn)品中比較少接觸到,接下來(lái)我隨便畫(huà)畫(huà),根據(jù)上文的定義嘗試分析一下這個(gè)權(quán)限在做產(chǎn)品時(shí)可以怎么設(shè)計(jì)。
首先需要有設(shè)計(jì)一個(gè)“標(biāo)簽管理”頁(yè)面:
標(biāo)簽需要有等級(jí)關(guān)系,等級(jí)可以手動(dòng)輸入,但注意等級(jí)不能相同,保存后如需調(diào)整等級(jí),注意調(diào)整前需做好二次確認(rèn),一旦標(biāo)簽等級(jí)調(diào)整,意味著權(quán)限也會(huì)跟著變化,當(dāng)標(biāo)簽從低等級(jí)往高等級(jí)調(diào)整時(shí),會(huì)給已關(guān)聯(lián)的用戶釋放更多的權(quán)限;刪除標(biāo)簽時(shí),如果標(biāo)簽已關(guān)聯(lián)了用戶,需要求取消用戶關(guān)聯(lián),否則刪除后,所關(guān)聯(lián)的用戶將失去所有權(quán)限,無(wú)法正常訪問(wèn)。
接著需要一個(gè)“標(biāo)簽編輯”頁(yè):
注意這里的等級(jí)不能與其他已添加的標(biāo)簽等級(jí)相同,標(biāo)簽名稱原則上也不能相同,權(quán)限中,已經(jīng)被其他標(biāo)簽關(guān)聯(lián)的權(quán)限需要隱藏或不允許選擇,否則如果一個(gè)高級(jí)別的標(biāo)簽跟一個(gè)低級(jí)別的標(biāo)簽都關(guān)聯(lián)了同一個(gè)權(quán)限,這樣根據(jù)等級(jí)授權(quán)就沒(méi)有意義了;
把關(guān)聯(lián)用戶也放在標(biāo)簽管理頁(yè),是因?yàn)闃?biāo)簽與用戶是一對(duì)多的關(guān)系,這樣配置起來(lái)效率更高,同樣需要注意,已關(guān)聯(lián)了標(biāo)簽的用戶這里需要隱藏或不允許選擇,也可以在用戶管理頁(yè)面增加關(guān)聯(lián)用戶標(biāo)簽的設(shè)計(jì)。
四、RBAC 基于角色的訪問(wèn)控制
RBAC(Role-BasedAccess Control)基于角色的訪問(wèn)控制方式:該模型首先定義一些組織內(nèi)的角色,如局長(zhǎng)、科長(zhǎng)、職員;再根據(jù)管理規(guī)定給這些角色分配相應(yīng)的權(quán)限,最后對(duì)組織內(nèi)的每個(gè)人根據(jù)具體業(yè)務(wù)和職位分配一個(gè)或多個(gè)角色。
《信息系統(tǒng)系項(xiàng)目管理師教程》(第3版)P656
這種可以說(shuō)是目前絕大多數(shù)系統(tǒng)都在用的一種權(quán)限管理方式。
如上圖,假設(shè)有兩個(gè)角色,角色1分配權(quán)限1和權(quán)限2,角色2分配權(quán)限3和權(quán)限4,用戶1、2分別屬于角色1、2:
則:
用戶1可以訪問(wèn)角色1所擁有的權(quán)限1、2。
這種權(quán)限管理方式相對(duì)于另外3種,更具靈活性,在常規(guī)的產(chǎn)品設(shè)計(jì)中,用戶與角色一般是一對(duì)一關(guān)系,即一個(gè)用戶只能對(duì)應(yīng)一個(gè)角色,但為了增加靈活度,也有系統(tǒng)會(huì)設(shè)計(jì)成一對(duì)多關(guān)系,即一個(gè)用戶可以對(duì)應(yīng)多個(gè)角色,用戶的權(quán)限等于所對(duì)應(yīng)的角色權(quán)限的總和,甚至還發(fā)展出給用戶單獨(dú)授權(quán)的設(shè)計(jì),就是在用戶繼承了角色所有權(quán)限的基礎(chǔ)上,還可以額外再給指定的用戶單獨(dú)授權(quán),這樣這個(gè)用戶就比其他同角色的用戶擁有更多權(quán)限。
還是隨便畫(huà)畫(huà),說(shuō)說(shuō)這種權(quán)限管理怎么設(shè)計(jì)。
首先需要一個(gè)“角色管理”頁(yè)面:
系統(tǒng)初始提供一個(gè)“超級(jí)管理員”角色,該角色擁有所有權(quán)限,不可修改,不可刪除。
接著是添加角色并授權(quán):
然后是添加用戶,除了常規(guī)的賬號(hào)信息,還需要給用戶指定一個(gè)角色,由此獲得相應(yīng)權(quán)限:
在用戶列表可以給用戶單獨(dú)授權(quán):
好了,以上便是4種權(quán)限管理方式的分析和設(shè)計(jì),希望對(duì)還沒(méi)做過(guò)權(quán)限設(shè)計(jì)的你有參考價(jià)值,感謝閱讀!
公眾號(hào):產(chǎn)品錦李(ID:IMPM996)
本文由 @產(chǎn)品錦李 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
講得很好,對(duì)新手有很大啟發(fā)
在用戶列表給用戶單獨(dú)授權(quán),這個(gè)以前沒(méi)有考慮過(guò)
有所啟迪,說(shuō)的比較完善啦!感謝。
目前正在有一個(gè)權(quán)限的規(guī)劃等著做,打算用RBAC的方式來(lái)做,再學(xué)習(xí)幾次,然后開(kāi)始動(dòng)手!