AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

權(quán)限管理——多系統(tǒng)下的數(shù)據(jù)權(quán)限通用控制

來(lái)源: 責(zé)編: 時(shí)間:2023-11-02 09:08:18 329觀看
導(dǎo)讀大家好:常見(jiàn)的,在項(xiàng)目實(shí)際開(kāi)發(fā)中我們不光要控制一個(gè)用戶能訪問(wèn)哪些資源,還需要控制用戶只能訪問(wèn)資源中的某部分?jǐn)?shù)據(jù)。這就是所謂的數(shù)據(jù)權(quán)限。典型的如列表數(shù)據(jù)權(quán)限,主要通過(guò)數(shù)據(jù)權(quán)限控制行數(shù)據(jù),讓不同的人有不同的查看數(shù)據(jù)

大家好:

常見(jiàn)的,在項(xiàng)目實(shí)際開(kāi)發(fā)中我們不光要控制一個(gè)用戶能訪問(wèn)哪些資源,還需要控制用戶只能訪問(wèn)資源中的某部分?jǐn)?shù)據(jù)。這就是所謂的數(shù)據(jù)權(quán)限。典型的如列表數(shù)據(jù)權(quán)限,主要通過(guò)數(shù)據(jù)權(quán)限控制行數(shù)據(jù),讓不同的人有不同的查看數(shù)據(jù)規(guī)則。OcP28資訊網(wǎng)——每日最新資訊28at.com

行業(yè)背景

在互聯(lián)網(wǎng)系統(tǒng)中,權(quán)限一般分為功能權(quán)限和數(shù)據(jù)權(quán)限,功能權(quán)限比較常見(jiàn),因?yàn)橥ㄓ眯院蛷?fù)用性,業(yè)內(nèi)有很多的通用框架和設(shè)計(jì)。但對(duì)應(yīng)數(shù)據(jù)權(quán)限來(lái)說(shuō),由于數(shù)據(jù)權(quán)限強(qiáng)依賴客戶組織架構(gòu)和具體業(yè)務(wù)的關(guān)系,往往實(shí)現(xiàn)起來(lái)會(huì)比較復(fù)雜,很少有一個(gè)設(shè)計(jì)架構(gòu)能完全覆蓋住,所以大部分的系統(tǒng)都一致性的遵循此策略:如非必要的盡量不使用數(shù)據(jù)權(quán)限,必須要的則單獨(dú)控制。OcP28資訊網(wǎng)——每日最新資訊28at.com

目前常見(jiàn)數(shù)據(jù)權(quán)限方案基本為硬編碼,具體分為如下兩種:一是拆分功能頁(yè)面,即根據(jù)不同數(shù)據(jù)權(quán)限用戶,通過(guò)復(fù)制拷貝的方式,增加多個(gè)類似的菜單,再通過(guò)功能權(quán)限配置來(lái)給不同用戶設(shè)置不同的菜單,從而實(shí)現(xiàn)數(shù)據(jù)權(quán)限的控制;二是在功能對(duì)應(yīng)的后端接口里做判斷,對(duì)不同數(shù)據(jù)權(quán)限的用戶,過(guò)濾不同的數(shù)據(jù)列表透出給用戶。硬編碼的方式顯而易見(jiàn)的優(yōu)點(diǎn)是技術(shù)難度低,實(shí)現(xiàn)簡(jiǎn)單。OcP28資訊網(wǎng)——每日最新資訊28at.com

但以上硬編碼的方式,無(wú)論選擇用哪一種,都無(wú)法解決系統(tǒng)靈活性的問(wèn)題,每當(dāng)系統(tǒng)有老的需求要變更或者新的需求要新增,對(duì)應(yīng)的開(kāi)發(fā)人員就不得不去調(diào)整編碼,修改菜單和頁(yè)面,由此可見(jiàn),硬編碼對(duì)開(kāi)發(fā)的成本和運(yùn)維的成本都比較高。與此同時(shí),行業(yè)內(nèi)常見(jiàn)的通用數(shù)據(jù)權(quán)限控制,大都是給單一業(yè)務(wù)使用,和業(yè)務(wù)耦合度較高,可能在當(dāng)前業(yè)務(wù)客戶端是通用可擴(kuò)展的,但是在另一個(gè)業(yè)務(wù)客戶端就無(wú)法做到無(wú)縫接入了。OcP28資訊網(wǎng)——每日最新資訊28at.com

因此,如何提高數(shù)據(jù)權(quán)限設(shè)置的靈活性,降低耦合性,是本領(lǐng)域技術(shù)人員需要解決的問(wèn)題。OcP28資訊網(wǎng)——每日最新資訊28at.com

建設(shè)價(jià)值

首先來(lái)說(shuō)一下,為什么我們要做這樣一個(gè)多系統(tǒng)的數(shù)據(jù)權(quán)限控制裝置?OcP28資訊網(wǎng)——每日最新資訊28at.com

大背景是我司當(dāng)前有多個(gè)業(yè)務(wù)系統(tǒng)需要通過(guò)數(shù)據(jù)權(quán)限控制業(yè)務(wù)數(shù)據(jù),它們的用戶體系或相同或不同,控制維度各有定制。OcP28資訊網(wǎng)——每日最新資訊28at.com

于是產(chǎn)生諸如以下需求:OcP28資訊網(wǎng)——每日最新資訊28at.com

  • 權(quán)限可配置化
  • 支持業(yè)務(wù)快速接入
  • 模型統(tǒng)一

為了支持以上需求,于是理所當(dāng)然的出現(xiàn)了如下一套多系統(tǒng)的通用數(shù)據(jù)權(quán)限控制系統(tǒng)。OcP28資訊網(wǎng)——每日最新資訊28at.com

系統(tǒng)介紹

本系統(tǒng)底層使用統(tǒng)一的一套模型,支持權(quán)限配置化,業(yè)務(wù)方可自定義權(quán)限維度,用戶體系解耦,滿足不同系統(tǒng)快速接入數(shù)據(jù)權(quán)限的業(yè)務(wù)場(chǎng)景。OcP28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)權(quán)限

RBAC是經(jīng)典的功能權(quán)限模型,它是 Role-BasedAccess Control 的英文縮寫,意思是基于角色的訪問(wèn)控制。OcP28資訊網(wǎng)——每日最新資訊28at.com

運(yùn)營(yíng)事先會(huì)在系統(tǒng)中定義出各種不同的角色,不同的角色擁有不同的權(quán)限,一個(gè)角色實(shí)際上就是一組權(quán)限的集合。而系統(tǒng)的所有用戶都會(huì)被分配到不同的角色中,一個(gè)用戶可能擁有多個(gè)角色。使用這種模型可以極大地簡(jiǎn)化權(quán)限的管理。OcP28資訊網(wǎng)——每日最新資訊28at.com

但是,在該模型下,系統(tǒng)只會(huì)驗(yàn)證用戶甲是否屬于角色A,而不會(huì)判斷用戶甲是否能訪問(wèn)只屬于用戶乙的數(shù)據(jù) Data。這種問(wèn)題我們稱之為“水平權(quán)限管理問(wèn)題”。OcP28資訊網(wǎng)——每日最新資訊28at.com

所以,為了解決這個(gè)問(wèn)題,我們基于 RBAC 模型下,又?jǐn)U展了功能和維度的概念,使系統(tǒng)能基于角色控制用戶的數(shù)據(jù)權(quán)限。如下:OcP28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OcP28資訊網(wǎng)——每日最新資訊28at.com

同時(shí),為了做到多系統(tǒng)通用,我們又對(duì)系統(tǒng)、功能、權(quán)限做了如下抽象:OcP28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OcP28資訊網(wǎng)——每日最新資訊28at.com

模型把每個(gè)系統(tǒng)抽象成由一個(gè)個(gè)業(yè)務(wù)組成,業(yè)務(wù)下分解成多個(gè)功能,功能對(duì)應(yīng)多個(gè)維度:OcP28資訊網(wǎng)——每日最新資訊28at.com

  • 數(shù)據(jù)權(quán)限的顆粒度為到功能,一個(gè)功能可包含多個(gè) Rest 接口。
  • 功能下分多個(gè)維度,所謂的數(shù)據(jù)權(quán)限實(shí)際就是控制每個(gè)維度,維度最終對(duì)應(yīng)的是每個(gè)功能業(yè)務(wù)數(shù)據(jù)的篩選字段。
  • 最終當(dāng)所有都配置完成后,每個(gè)角色對(duì)應(yīng)每個(gè)功能下就掛著多個(gè)數(shù)據(jù)規(guī)則。當(dāng)用戶訪問(wèn)具體功能時(shí),根據(jù)用戶角色的數(shù)據(jù)規(guī)則,返回對(duì)應(yīng)數(shù)據(jù)。
  • 當(dāng)固定值不滿足業(yè)務(wù)需求時(shí),提供開(kāi)放端口給業(yè)務(wù)方,業(yè)務(wù)方可實(shí)現(xiàn)對(duì)應(yīng)維度的選擇項(xiàng)端口,來(lái)達(dá)到自定義維度對(duì)應(yīng)值的目的。

數(shù)據(jù)規(guī)則

根據(jù)以上描述,顯而易見(jiàn)的,要實(shí)現(xiàn)數(shù)據(jù)權(quán)限,最重要的是需要抽象出數(shù)據(jù)規(guī)則。OcP28資訊網(wǎng)——每日最新資訊28at.com

比如我們營(yíng)銷系統(tǒng)的訂單列表,需要從下面幾個(gè)維度來(lái)控制數(shù)據(jù)訪問(wèn)權(quán)限。OcP28資訊網(wǎng)——每日最新資訊28at.com

銷售人員只能看自己的數(shù)據(jù);OcP28資訊網(wǎng)——每日最新資訊28at.com

a 部門的人只能看自己部門的數(shù)據(jù);OcP28資訊網(wǎng)——每日最新資訊28at.com

a 部門的上級(jí)部門 A 的人能看自己部門的數(shù)據(jù)和下級(jí) b 部門的人;OcP28資訊網(wǎng)——每日最新資訊28at.com

上面的這些維度就是數(shù)據(jù)規(guī)則。OcP28資訊網(wǎng)——每日最新資訊28at.com

這樣數(shù)據(jù)規(guī)則的幾個(gè)重點(diǎn)要素我們也明晰了,就是規(guī)則字段,規(guī)則表達(dá)式,規(guī)則值,上面三個(gè)場(chǎng)景對(duì)應(yīng)的規(guī)則分別如下:OcP28資訊網(wǎng)——每日最新資訊28at.com

規(guī)則字段:創(chuàng)建人,規(guī)則表達(dá)式:= ,規(guī)則值:當(dāng)前登錄人OcP28資訊網(wǎng)——每日最新資訊28at.com

規(guī)則字段:所屬部門,規(guī)則表達(dá)式:= ,規(guī)則值:aOcP28資訊網(wǎng)——每日最新資訊28at.com

規(guī)則字段:所屬部門,規(guī)則表達(dá)式:in ,規(guī)則值:A,aOcP28資訊網(wǎng)——每日最新資訊28at.com

即數(shù)據(jù)規(guī)則由【維度+條件表達(dá)式+維度對(duì)應(yīng)值】組成,業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)權(quán)限就是由多個(gè)數(shù)據(jù)規(guī)則組成的范圍控制。具體模型如下:OcP28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OcP28資訊網(wǎng)——每日最新資訊28at.com

接入流程

那么,本套多系統(tǒng)權(quán)限控制系統(tǒng),到底該如何接入呢?大致流程如下:OcP28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OcP28資訊網(wǎng)——每日最新資訊28at.com

按照此通用方案,數(shù)據(jù)控制整體接入過(guò)程如下:OcP28資訊網(wǎng)——每日最新資訊28at.com

1.業(yè)務(wù)確定需要數(shù)據(jù)權(quán)限接入的功能。OcP28資訊網(wǎng)——每日最新資訊28at.com

2.產(chǎn)品、開(kāi)發(fā)、業(yè)務(wù)確認(rèn)功能的維度。OcP28資訊網(wǎng)——每日最新資訊28at.com

3.運(yùn)營(yíng)在開(kāi)發(fā)的支持下在運(yùn)營(yíng)管理端配置數(shù)據(jù)權(quán)限,包括支持的維度、表達(dá)式、固定值等等。如需自定義維度對(duì)應(yīng)值,實(shí)現(xiàn)對(duì)應(yīng)端口。OcP28資訊網(wǎng)——每日最新資訊28at.com

4.各系統(tǒng)管理員登錄各自的數(shù)據(jù)權(quán)限配置端,設(shè)置每個(gè)角色的數(shù)據(jù)規(guī)則。OcP28資訊網(wǎng)——每日最新資訊28at.com

5.客戶訪問(wèn)系統(tǒng)的具體功能,根據(jù)客戶的角色,獲得數(shù)據(jù)規(guī)則,根據(jù)數(shù)據(jù)規(guī)則組裝業(yè)務(wù)數(shù)據(jù)返回。OcP28資訊網(wǎng)——每日最新資訊28at.com

接入案例-訂單列表

訂單是很常見(jiàn)的系統(tǒng)功能,當(dāng)前,需要對(duì)不同員工查看訂單的數(shù)據(jù)范圍做控制,根據(jù)員工所屬的部門不同,查看對(duì)應(yīng)部門的訂單列表。OcP28資訊網(wǎng)——每日最新資訊28at.com

步驟一:確定系統(tǒng)、功能、維度OcP28資訊網(wǎng)——每日最新資訊28at.com

系統(tǒng):xxx系統(tǒng) 功能:訂單列表 維度:部門OcP28資訊網(wǎng)——每日最新資訊28at.com

步驟二:管理端配置數(shù)據(jù)權(quán)限OcP28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OcP28資訊網(wǎng)——每日最新資訊28at.com

步驟三:業(yè)務(wù)方接入 Sdk,實(shí)現(xiàn)自定義維度(部門)選擇項(xiàng)配置端口OcP28資訊網(wǎng)——每日最新資訊28at.com

示意代碼OcP28資訊網(wǎng)——每日最新資訊28at.com

/** * 獲取維度選擇項(xiàng)  */List<DimensionOption> getDimensionOptionList(List<String> dimensionCodes);

步驟四: 對(duì)應(yīng)api查詢數(shù)據(jù)接口接入 Sdk,完成數(shù)據(jù)過(guò)濾OcP28資訊網(wǎng)——每日最新資訊28at.com

步驟五: 系統(tǒng)管理員配置角色數(shù)據(jù)權(quán)限OcP28資訊網(wǎng)——每日最新資訊28at.com

只要完成以上5步,就實(shí)現(xiàn)了接入數(shù)據(jù)權(quán)限的功能。整個(gè)流程只有接入 Sdk 的成本,1天內(nèi)即可完成,快速、高效,極大的降低了成本。同時(shí)公司內(nèi)所有系統(tǒng)都擁有了一套完整統(tǒng)一的權(quán)限控制系統(tǒng)。OcP28資訊網(wǎng)——每日最新資訊28at.com

Sdk 如何進(jìn)行數(shù)據(jù)權(quán)限控制

那么,底層究竟是如何實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的?OcP28資訊網(wǎng)——每日最新資訊28at.com

以下是一個(gè)請(qǐng)求的控制鏈路:OcP28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OcP28資訊網(wǎng)——每日最新資訊28at.com

權(quán)限 Sdk 是真正實(shí)現(xiàn)權(quán)限控制的核心組件。OcP28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OcP28資訊網(wǎng)——每日最新資訊28at.com

Sdk 中的基石是一個(gè)個(gè)對(duì)外開(kāi)放的端口,其中最底層的是上下文端口。接入方需實(shí)現(xiàn)這個(gè)端口接口,根據(jù)當(dāng)前緩存用戶封裝數(shù)據(jù)權(quán)限上下文。如有自定義維度,需實(shí)現(xiàn)自定義維度選擇項(xiàng)端口,返回業(yè)務(wù)自定義的維度選擇項(xiàng)。OcP28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)權(quán)限生效實(shí)現(xiàn)過(guò)程如下:OcP28資訊網(wǎng)——每日最新資訊28at.com

1.請(qǐng)求 Path 被 Sdk 攔截,通過(guò)正則匹配配置的權(quán)限 Api,匹配到說(shuō)明需要被控制。OcP28資訊網(wǎng)——每日最新資訊28at.com

2.在功能接口中,Sdk 根據(jù)上下文端口獲取當(dāng)前請(qǐng)求上下文,根據(jù)上下文獲取對(duì)應(yīng)用戶所有角色的數(shù)據(jù)權(quán)限。OcP28資訊網(wǎng)——每日最新資訊28at.com

3.根據(jù)數(shù)據(jù)權(quán)限設(shè)置的配置,組裝權(quán)限控制的條件。OcP28資訊網(wǎng)——每日最新資訊28at.com

4.業(yè)務(wù)方查詢時(shí)加上權(quán)限控制條件,得到的數(shù)據(jù),就是控制了數(shù)據(jù)權(quán)限后的數(shù)據(jù)。OcP28資訊網(wǎng)——每日最新資訊28at.com

ps:本sdk只針對(duì)java語(yǔ)言的后端OcP28資訊網(wǎng)——每日最新資訊28at.com

如果業(yè)務(wù)方使用的是 MyBatis 的 Xml 原生語(yǔ)句, Sdk 會(huì)把所有的數(shù)據(jù)權(quán)限組裝成對(duì)應(yīng)的 Sql 片段,自動(dòng)對(duì)XML查詢注入該 Sql 片段;如果使用的是 MyBatis-plus 的 QueryWrapper 方式,Sdk 會(huì)把所有的數(shù)據(jù)權(quán)限自動(dòng)注入到生成的 QueryWrapper 條件中。OcP28資訊網(wǎng)——每日最新資訊28at.com

業(yè)務(wù)方也可以自主使用權(quán)限控制配置查詢數(shù)據(jù),關(guān)閉 Sdk 的自動(dòng)注入。OcP28資訊網(wǎng)——每日最新資訊28at.com

問(wèn)題
  • 當(dāng)前只能直接對(duì)數(shù)據(jù)庫(kù)存在的字段進(jìn)行控制,如果是間接條件,無(wú)法控制數(shù)據(jù)權(quán)限
  • 自動(dòng)注入當(dāng)前只支持 MyBatis 的 Xml 原生語(yǔ)句和 MyBatis-plus 的 QueryWrapper 方式,其他如 Jpa 等不支持
思考

還有更多的類似問(wèn)題,都是多系統(tǒng)數(shù)據(jù)權(quán)限控制需要解決的。雖然具體到每個(gè)小點(diǎn),單從技術(shù)的角度來(lái)說(shuō),可能未必很難,但要支持更多系統(tǒng),具備更好的通用化,還有很長(zhǎng)的一段路可走。這是一個(gè)會(huì)隨著業(yè)務(wù)的發(fā)展,需要持續(xù)改進(jìn)的工作。OcP28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-16497-0.html權(quán)限管理——多系統(tǒng)下的數(shù)據(jù)權(quán)限通用控制

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Spring Boot如何優(yōu)雅提高接口數(shù)據(jù)安全性

下一篇: 輕松掌握J(rèn)ava的設(shè)計(jì)模式,寫出優(yōu)雅的代碼

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 6月iOS設(shè)備好評(píng)榜:第一蟬聯(lián)榜首近一年

    作為安兔兔各種榜單里變化最小的那個(gè),2023年6月的iOS好評(píng)榜和上個(gè)月相比沒(méi)有任何排名上的變化,僅僅是部分設(shè)備好評(píng)率的下降,長(zhǎng)年累月的用戶評(píng)價(jià)和逐漸退出市場(chǎng)的老款機(jī)器讓這
  • 摸魚心法第一章——和配置文件說(shuō)拜拜

    為了能摸魚我們團(tuán)隊(duì)做了容器化,但是帶來(lái)的問(wèn)題是服務(wù)配置文件很麻煩,然后大家在群里進(jìn)行了“親切友好”的溝通圖片圖片圖片圖片對(duì)比就對(duì)比,簡(jiǎn)單對(duì)比下獨(dú)立配置中心和k8s作為配
  • CSS單標(biāo)簽實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)logo

    轉(zhuǎn)轉(zhuǎn)品牌升級(jí)后更新了全新的Logo,今天我們用純CSS來(lái)實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)的新Logo,為了有一定的挑戰(zhàn)性,這里我們只使用一個(gè)標(biāo)簽實(shí)現(xiàn),將最大化的使用CSS能力完成Logo的繪制與動(dòng)畫效果。新logo
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對(duì)Reader和Writer接口的組合,
  • 一篇聊聊Go錯(cuò)誤封裝機(jī)制

    %w 是用于錯(cuò)誤包裝(Error Wrapping)的格式化動(dòng)詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數(shù)中的一個(gè)特殊格式化動(dòng)詞,用于將一個(gè)錯(cuò)誤(或其他可打印的值)包裝在一個(gè)新的錯(cuò)誤中。使
  • Java NIO內(nèi)存映射文件:提高文件讀寫效率的優(yōu)秀實(shí)踐!

    Java的NIO庫(kù)提供了內(nèi)存映射文件的支持,它可以將文件映射到內(nèi)存中,從而可以更快地讀取和寫入文件數(shù)據(jù)。本文將對(duì)Java內(nèi)存映射文件進(jìn)行詳細(xì)的介紹和演示。內(nèi)存映射文件概述內(nèi)存
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個(gè)月我寫過(guò)一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當(dāng)時(shí)用的是 GDIView + WinDbg 把問(wèn)題搞定,前者用來(lái)定位泄露資源,后者用來(lái)定位泄露代碼,后面有朋友反
  • 簽約井川里予、何丹彤,單視頻點(diǎn)贊近千萬(wàn),MCN黑馬永恒文希快速崛起!

    來(lái)源:視聽(tīng)觀察永恒文希傳媒作為一家MCN公司,說(shuō)起它的名字來(lái),可能大家會(huì)覺(jué)得有點(diǎn)兒陌生,但是說(shuō)出來(lái)下面一串的名字之后,或許大家就會(huì)感到震驚,原來(lái)這么多網(wǎng)紅,都簽約這家公司了。根
  • 認(rèn)真聊聊東方甄選:如何告別低垂的果實(shí)

    來(lái)源:山核桃作者:財(cái)經(jīng)無(wú)忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關(guān)心的&ldquo;網(wǎng)紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內(nèi)直播,
Top