熱知識 | 數(shù)字化系統(tǒng)中的權(quán)限設(shè)計思路
作者:PanPass 發(fā)布時間:2023.03.20 來源:www.buy08.cn
企業(yè)的數(shù)字化建設(shè)中,重要的一項是管理好人與資源的匹配,對應(yīng)到應(yīng)用系統(tǒng)中,就是不同的人由于擁有不同權(quán)限,他所看到的(數(shù)據(jù)權(quán)限)、能使用的(操作權(quán)限)資源不一樣。今天我們就來聊聊權(quán)限設(shè)計的思路。
什么是權(quán)限管理?
權(quán)限管理一般指根據(jù)系統(tǒng)設(shè)置的安全規(guī)則或者安全策略,用戶可以訪問而且只能訪問自己被授權(quán)的資源。通俗解釋就是,誰是否具有對某資源實施某個動作(增/刪/改/查)的權(quán)限。
權(quán)限如何設(shè)計
目前比較成熟的技術(shù)模型就是RBAC技術(shù)模型(Role Based Access Control),主要通過用戶、角色、資源三方面進行權(quán)限的分配。具體來說,就是賦予用戶某個角色,角色能訪問及操作不同范圍的資源。通過建立角色系統(tǒng),將用戶和資源進行分離,來保證權(quán)限分配的實施。這一模型被廣泛運用于各個系統(tǒng),較易掌握,其技術(shù)模型如下圖:

權(quán)限設(shè)計-用戶
用戶定義:從系統(tǒng)層面來說,就是登錄并使用系統(tǒng)的賬號。
用戶來源:本系統(tǒng)新增、批量導(dǎo)入、第三方接口同步。
用戶分類:
系統(tǒng)管理員:超級管理員、企業(yè)用戶管理員(租戶)、渠道用戶管理員。
用戶:企業(yè)用戶、供應(yīng)商用戶、渠道伙伴用戶。
用戶組:本質(zhì)上是用戶的集合。是基于用戶的共有屬性歸納出的組,目的是減少用戶授權(quán)的工作量。這里的屬性,可能是公司、部門、崗位、公司職級等等。

權(quán)限設(shè)計-角色
角色是權(quán)限的集合,基于業(yè)務(wù)需求創(chuàng)建。在用戶和權(quán)限之間起到橋梁連接的作用,方便大用戶量下的權(quán)限分配效率,簡化了用戶與權(quán)限的管理。
按照角色類型劃分:
普通角色:面向成員公司業(yè)務(wù)人員,可定義權(quán)限數(shù)據(jù),也可繼承通用根角色的權(quán)限數(shù)據(jù),普通角色需指定相關(guān)的組織級別(銷售組織、工廠等)。
復(fù)合角色:面向工作崗位,是業(yè)務(wù)角色的集合。體現(xiàn)角色的包含關(guān)系。
通用根角色:是某類工作職能的權(quán)限集合,如采購員、銷售員等,主要用于企業(yè)抽象及固化崗位職權(quán),便于日常權(quán)限管理及用戶授權(quán),同時可快速派生出業(yè)務(wù)角色,體現(xiàn)角色的繼承派生關(guān)系。
按照所屬對象劃分:
超級管理員角色:SYS_ALL,用于定義系統(tǒng)全部權(quán)限,系統(tǒng)預(yù)置角色。
企業(yè)管理員角色:企業(yè)管理員在創(chuàng)建其下的角色時,只能選擇該租戶所購范圍的功能,功能范圍可配置。
外部渠道伙伴管理員角色:可創(chuàng)建維護對應(yīng)渠道伙伴自己的用戶及角色,減少企業(yè)管理員的權(quán)限維護工作量。

角色及授權(quán):
一個用戶可以擁有多個角色,一個角色擁有多個權(quán)限對象的權(quán)限,用戶的權(quán)限是多個角色權(quán)限的并集。

權(quán)限設(shè)計-資源
從訪問的資源角度來說,權(quán)限資源管理主要包括如下兩類:功能權(quán)限管理、數(shù)據(jù)權(quán)限管理。
功能權(quán)限設(shè)計實現(xiàn)方案:
功能權(quán)限的設(shè)計及校驗邏輯相對比較標準和統(tǒng)一:查看該當前登錄用戶的角色是否包含該功能的權(quán)限。如果有,則表示有權(quán)訪問,否則表示無權(quán)訪問。本次設(shè)計的方向和思路主要是聚焦于資源的統(tǒng)一管理及自定義,以及資源管理平臺工具的實現(xiàn)。
數(shù)據(jù)權(quán)限設(shè)計實現(xiàn)方案:
數(shù)據(jù)權(quán)限管理領(lǐng)域,一直沒有統(tǒng)一的技術(shù),大體有如下幾種方式:
程序編碼:硬編碼將權(quán)限邏輯與業(yè)務(wù)代碼耦合在一起。此辦法缺乏靈活性,難維護且擴展性差,缺點較明顯。
人員組織架構(gòu)樹:通過人員所在的組織架構(gòu)樹層級來實現(xiàn)數(shù)據(jù)權(quán)限的控制,此辦法實現(xiàn)簡單、單一的組織樹還可以,但是滿足的權(quán)限控制場景有限,無法實現(xiàn)非組織類型限制的數(shù)據(jù)權(quán)限管理要求,比如,只能查看國內(nèi)/某類型的銷售訂單,無法查看國外/其它類型的銷售訂單。
數(shù)據(jù)規(guī)則:通過各種表字段、表達式和字段的值等查詢條件規(guī)則來實現(xiàn)特定范圍的數(shù)據(jù)獲取。此辦法可以滿足絕大部分需求場景,但是大量的查詢數(shù)據(jù)庫表勢必會影響系統(tǒng)的性能。
不管是功能權(quán)限資源還是數(shù)據(jù)權(quán)限資源,都稱之為權(quán)限資源對象。從系統(tǒng)產(chǎn)品角度,我們將權(quán)限資源對象劃分為兩種類型:標準資源對象,自定義資源對象。
標準權(quán)限資源對象:
系統(tǒng)預(yù)置部分最常用的權(quán)限資源對象,可以滿足絕大部分的權(quán)限控制需求。未來系統(tǒng)產(chǎn)品可根據(jù)實際交付項目需求經(jīng)驗不斷迭代累積完善。主要包括如下幾類:
功能菜單類:此資源對象主要用于承載和控制功能菜單級權(quán)限。
功能按鈕類:此資源對象主要用于承載和控制功能按鈕級權(quán)限。
業(yè)務(wù)對象類:系統(tǒng)預(yù)置相應(yīng)權(quán)限資源對象,常對應(yīng)數(shù)據(jù)庫中的表,如產(chǎn)品檔案、生產(chǎn)任務(wù)單等。通過其包含的權(quán)限字段參數(shù)值來實現(xiàn)數(shù)據(jù)權(quán)限的控制。
API等其它類:系統(tǒng)可擴展其它類對象,滿足更多對象的權(quán)限控制需求。
自定義權(quán)限對象:
交付項目自定義的權(quán)限對象,用于滿足項目二開功能程序的權(quán)限檢查與控制,并且可增刪改查。
權(quán)限校驗邏輯
簡化和統(tǒng)一權(quán)限校驗邏輯,降低權(quán)限檢查的復(fù)雜度,提高性能,同時減少交付項目的權(quán)限二開工作量。

簡化和統(tǒng)一權(quán)限檢查邏輯
不管是菜單類權(quán)限、按鈕類權(quán)限,還是數(shù)據(jù)權(quán)限,只需要校驗用戶所具備的權(quán)限資源對象下字段參數(shù)的值和所要訪問的資源對象的值是否一致即可。根據(jù)返回的結(jié)果值,來判定具體權(quán)限情況。
“權(quán)限清則企業(yè)治,權(quán)限弛則企業(yè)亂”,權(quán)限管理不是一套簡單的系統(tǒng)配置,而是企業(yè)對業(yè)務(wù)效能的清晰梳理,這本身就是數(shù)字化變革。
