功能、资源权限管理的设计
一、目的
管理系統(tǒng)用戶的功能菜單權(quán)限,物理資源(文件、數(shù)據(jù))權(quán)限。
二、RBAC模型設(shè)計
RBAC簡介
BAC模型(Role-Based Access Control:基于角色的訪問控制)模型是一種權(quán)限實現(xiàn)模型,是系統(tǒng)權(quán)限設(shè)計中的一套方法論。
RBAC認(rèn)為權(quán)限授權(quán)的過程可以抽象地概括為:Who是否可以對What進(jìn)行How的訪問操作,并對這個邏輯表達(dá)式進(jìn)行判斷是否為True的求解過程,也即是將權(quán)限問題轉(zhuǎn)換為Who、What、How的問題,Who、What、How構(gòu)成了訪問權(quán)限三元組。
RBAC模型的核心對象為:用戶、角色、權(quán)限
資源管理簡介
系統(tǒng)資源可分為邏輯資源和物理資源。邏輯資源如軟件系統(tǒng)的菜單、頁面、按鈕等等;物理資源如視頻文件、音頻文件、pdf文件等等。
其中邏輯資源可以通過權(quán)限來控制,物理資源可通過在角色下設(shè)置資源列表,通過角色關(guān)聯(lián)資源列表實現(xiàn),也可直接將用戶和資源列表關(guān)聯(lián)實現(xiàn)。
權(quán)限管理模型設(shè)計
所有的權(quán)限管理最終都要落到用戶身上。
功能權(quán)限E-R設(shè)計
- 以RBAC0模型為基礎(chǔ)建立核心業(yè)務(wù)實體:單位(公司/部委/組織機(jī)構(gòu))、部門(科室)、用戶、角色、權(quán)限
- 使用關(guān)聯(lián)實體為核心業(yè)務(wù)實體建立映射關(guān)系:用戶角色、角色權(quán)限等
- 為方便數(shù)據(jù)查詢和業(yè)務(wù)拓展,增加單位權(quán)限、單位角色映射關(guān)系。此兩項非必須。
- 可按照RBAC1模型的設(shè)計思路,增加角色組,用戶關(guān)聯(lián)角色組、角色組關(guān)聯(lián)角色,角色關(guān)聯(lián)權(quán)限。從而實現(xiàn)更細(xì)粒度的權(quán)限管理。
- 可按照RBAC1模型的思想,將部門和用戶的映射關(guān)系修改為m:n,將能夠?qū)崿F(xiàn)一個用戶歸屬多個組織的權(quán)限管理。如分公司的董事長同時兼任集團(tuán)公司部門領(lǐng)導(dǎo)的情況。其中隱含了單位和部門關(guān)系為多對多,部門和用戶關(guān)系為多對多。當(dāng)用戶登錄的時候,讓用戶自己選擇需要在哪個組織下工作。鑒于這種情況的項目相對而言為少數(shù),大部分項目沒有那么復(fù)雜的組織架構(gòu),可以對外提供兩套解決方案。
資源權(quán)限E-R設(shè)計
業(yè)務(wù)弱關(guān)聯(lián)性設(shè)計
建立如下資源和業(yè)務(wù)實體的映射關(guān)系:
- 資源本身作為一個業(yè)務(wù)實體,為資源劃分類型
- 資源和單位建立映射關(guān)系,用戶隸屬于單位
- 資源和部門建立映射關(guān)系,用戶隸屬于部門
- 資源和角色建立映射關(guān)系,用戶關(guān)聯(lián)角色
- 資源和行政區(qū)劃建立映射關(guān)系,用戶關(guān)聯(lián)行政區(qū)劃或部門關(guān)聯(lián)行政區(qū)劃或單位關(guān)聯(lián)行政區(qū)劃
- 拓展:資源和XXX業(yè)務(wù)實體建立映射關(guān)系,用戶關(guān)聯(lián)XXX業(yè)務(wù)實體
優(yōu)點:資源和業(yè)務(wù)實體為弱關(guān)聯(lián)性,可封裝成微服務(wù)組件對外賦能
缺點:關(guān)系模式更加復(fù)雜,開發(fā)、運維成本高
業(yè)務(wù)強關(guān)聯(lián)性設(shè)計
基于組織架構(gòu)、職權(quán)(角色)、業(yè)務(wù)歸屬、區(qū)域、坐標(biāo)等的業(yè)務(wù)實體建立如下映射關(guān)系:
- 數(shù)據(jù)權(quán)限的管理最簡單的維度就是基于功能權(quán)限的管理
- 根據(jù)業(yè)務(wù)數(shù)據(jù)歸屬分別建立用戶和數(shù)據(jù)的映射關(guān)系
- 根據(jù)業(yè)務(wù)數(shù)據(jù)所屬業(yè)務(wù)閘口、區(qū)域(行政區(qū)域,地緣,自定義劃區(qū))和業(yè)務(wù)實體建立映射關(guān)系,業(yè)務(wù)實體最終落到用戶上
- 根據(jù)業(yè)務(wù)數(shù)據(jù)治理出來的坐標(biāo)體系建立映射管理
- 其他維度的數(shù)據(jù)權(quán)限管理
優(yōu)點:方便和業(yè)務(wù)集成、遷移順滑
缺點:和業(yè)務(wù)強綁定
三、緩存設(shè)計
可能出現(xiàn)的問題:
1:用戶權(quán)限信息龐大,往redis中存儲大數(shù)據(jù)塊
2:用戶權(quán)限信息龐大,Mysql數(shù)據(jù)庫查詢效率低
四、認(rèn)證服務(wù)設(shè)計
認(rèn)證服務(wù)負(fù)責(zé)用戶登錄狀態(tài)的維護(hù),對請求方簽發(fā)令牌;管理權(quán)限信息。
基于具體的業(yè)務(wù)形態(tài),認(rèn)證服務(wù)可劃分為兩類:內(nèi)部系統(tǒng)用戶認(rèn)證和權(quán)限管理;自建開放平臺用戶認(rèn)證和權(quán)限管理。
//TODO 后續(xù)抽時間設(shè)計
總結(jié)
以上是生活随笔為你收集整理的功能、资源权限管理的设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java程序员必须知道的Java10特性
- 下一篇: Spring Boot 中使用 Hika