分布式系统中,权限设计实践
一、權(quán)限控制
1、業(yè)務(wù)背景
在復(fù)雜的業(yè)務(wù)系統(tǒng)中,權(quán)限管理是最基礎(chǔ)的模塊,通過(guò)各種授權(quán)結(jié)構(gòu)模型,管理用戶(hù)在產(chǎn)品中可訪問(wèn)和可操作的邊界,以實(shí)現(xiàn)系統(tǒng)和數(shù)據(jù)安全管理的目的:
通常在系統(tǒng)的任何層面都會(huì)涉及到一定程度的權(quán)限管控:
- 頁(yè)面層:菜單、組件、操作口;
- 網(wǎng)關(guān)層:黑白名單管理、流量控制;
- 控制層:平臺(tái)、服務(wù)、API;
- 數(shù)據(jù)層:數(shù)據(jù)庫(kù)、業(yè)務(wù)表、字段;
不同層面的權(quán)限管理,用來(lái)應(yīng)對(duì)不同場(chǎng)景下的需求,例如:后臺(tái)系統(tǒng)的頁(yè)面,開(kāi)放平臺(tái)中的白名單,常規(guī)API訪問(wèn)限制,核心數(shù)據(jù)的字段維度。
采用合理的策略去管理資源的權(quán)限并不是一件簡(jiǎn)單的事,通常隨著業(yè)務(wù)和系統(tǒng)的不斷擴(kuò)展,對(duì)權(quán)限體系都會(huì)帶來(lái)直接的影響,所以在做結(jié)構(gòu)設(shè)計(jì)時(shí),需要相對(duì)復(fù)雜但又要避免過(guò)度復(fù)雜。分布式系統(tǒng)中,通常從系統(tǒng)層、組織架構(gòu)、權(quán)限關(guān)系三個(gè)方面去考慮可行方案。
2、RBAC模型
在權(quán)限控制的模型中,基于角色的訪問(wèn)控制Role-Based-Access-Control(簡(jiǎn)稱(chēng)RBAC),是普遍使用的一種模型:
- 模型中三個(gè)核心要素:用戶(hù)、角色、權(quán)限;
- 可以簡(jiǎn)化模型,單從用戶(hù)層級(jí)去管理資源;
- 升級(jí)模型結(jié)構(gòu),做繼承合并或選擇性責(zé)任分離;
圍繞RBAC的權(quán)限體系,可以精細(xì)化管理,相應(yīng)的結(jié)構(gòu)設(shè)計(jì)也會(huì)復(fù)雜,通常用在多業(yè)務(wù)多場(chǎng)景的分布式系統(tǒng)中,在用戶(hù)極少的輕量應(yīng)用中,會(huì)精簡(jiǎn)權(quán)限管理。
二、組織架構(gòu)
1、組織模型
常見(jiàn)的組織架構(gòu)體系如下:
2、角色管理
不同的組織節(jié)點(diǎn)對(duì)應(yīng)不同的崗位角色:
在組織架構(gòu)的層級(jí)中,帶來(lái)角色層級(jí)關(guān)系,進(jìn)而會(huì)存在一個(gè)用戶(hù)具備多個(gè)角色的情況,處理策略通常有兩種:
- 角色合并:把用戶(hù)所有角色對(duì)應(yīng)的權(quán)限點(diǎn)做合并,統(tǒng)一開(kāi)放;
- 角色分離:即用戶(hù)登錄系統(tǒng)之后,根據(jù)角色的選擇切換,加載相應(yīng)權(quán)限;
三、資源管理
1、資源層級(jí)
系統(tǒng)層級(jí):大型復(fù)雜的架構(gòu)中,會(huì)對(duì)系統(tǒng)做應(yīng)用的劃分,并且通過(guò)控制臺(tái)做各種通用業(yè)務(wù)的管理,例如通過(guò)控制臺(tái)管理各個(gè)業(yè)務(wù)應(yīng)用的賬號(hào)開(kāi)通、服務(wù)授權(quán)等,從而形成系統(tǒng)層級(jí)的結(jié)構(gòu);這樣可以避免多個(gè)應(yīng)用對(duì)基礎(chǔ)功能的重復(fù)實(shí)現(xiàn),從設(shè)計(jì)層面看也更加合理。
資源粒度:設(shè)計(jì)精細(xì)的權(quán)限體系,可以靈活的管理資源開(kāi)放的范圍,大到應(yīng)用平臺(tái)的直接開(kāi)放(平臺(tái)管理員),小到應(yīng)用中某個(gè)頁(yè)面的功能點(diǎn)開(kāi)放(業(yè)務(wù)人員),甚至細(xì)化到庫(kù)表字段級(jí)的控制,可以極大的提升數(shù)據(jù)安全性。
操作類(lèi)型:通常對(duì)資源的操作定義為:增刪改查四個(gè)基礎(chǔ)動(dòng)作,進(jìn)而產(chǎn)生對(duì)數(shù)據(jù)的影響,轉(zhuǎn)換到業(yè)務(wù)中權(quán)限的描述語(yǔ)義為:讀、寫(xiě)、刪,通過(guò)對(duì)角色與資源的業(yè)務(wù)定義,從而給到不同的動(dòng)作授權(quán)。
2、授權(quán)關(guān)聯(lián)
- 圍繞組織架構(gòu),創(chuàng)建角色與用戶(hù),并形成用戶(hù)與角色的綁定關(guān)系;
- 定義資源的管理層級(jí),以及相應(yīng)的操作類(lèi)型,并形成頁(yè)面到數(shù)據(jù)的鏈路;
- 基于角色主體,綁定對(duì)應(yīng)資源和可操作類(lèi)型,構(gòu)建角色的權(quán)限集合;
基于組織架構(gòu)中用戶(hù)與角色的關(guān)系,角色與資源的操作權(quán)限,從而實(shí)現(xiàn)用戶(hù)對(duì)資源管理的控制,其核心原理就是RBAC模型,只是在不同的場(chǎng)景下對(duì)不同節(jié)點(diǎn)做復(fù)雜設(shè)計(jì),以更好的適應(yīng)業(yè)務(wù)。
在權(quán)限體系中,場(chǎng)景多是授權(quán)動(dòng)作少,權(quán)限點(diǎn)查詢(xún)加載的過(guò)程多,所在實(shí)現(xiàn)的過(guò)程中,可以適當(dāng)考慮做冗余的表關(guān)聯(lián)結(jié)構(gòu),從而簡(jiǎn)化查詢(xún)的過(guò)程。
- 同系列-架構(gòu):┃ 微服務(wù)組件淺封裝 ┃ Shiro權(quán)限組件 ┃ Security安全組件 ┃ OAuth2授權(quán)組件 ┃ JWT令牌組件 ┃
四、源代碼地址
應(yīng)用倉(cāng)庫(kù): https://gitee.com/cicadasmile/butte-flyer-parent組件封裝: https://gitee.com/cicadasmile/butte-frame-parent總結(jié)
以上是生活随笔為你收集整理的分布式系统中,权限设计实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: NYOJ 5177 疯牛(最大化最小值
- 下一篇: maven--私服的搭建(Nexus的使