分布式系統中,權限設計實踐


一、權限控制

1、業務背景

在復雜的業務系統中,權限管理是最基礎的模塊,通過各種授權結構模型,管理用戶在產品中可訪問和可操作的邊界,以實現系統和數據安全管理的目的:

通常在系統的任何層面都會涉及到一定程度的權限管控:

  • 頁面層:菜單、組件、操作口;
  • 網關層:黑白名單管理、流量控制;
  • 控制層:平台、服務、API;
  • 數據層:數據庫、業務表、字段;

不同層面的權限管理,用來應對不同場景下的需求,例如:后台系統的頁面,開放平台中的白名單,常規API訪問限制,核心數據的字段維度。

采用合理的策略去管理資源的權限並不是一件簡單的事,通常隨着業務和系統的不斷擴展,對權限體系都會帶來直接的影響,所以在做結構設計時,需要相對復雜但又要避免過度復雜。分布式系統中,通常從系統層、組織架構、權限關系三個方面去考慮可行方案。

2、RBAC模型

在權限控制的模型中,基於角色的訪問控制Role-Based-Access-Control(簡稱RBAC),是普遍使用的一種模型:

  • 模型中三個核心要素:用戶、角色、權限;
  • 可以簡化模型,單從用戶層級去管理資源;
  • 升級模型結構,做繼承合並或選擇性責任分離;

圍繞RBAC的權限體系,可以精細化管理,相應的結構設計也會復雜,通常用在多業務多場景的分布式系統中,在用戶極少的輕量應用中,會精簡權限管理。

二、組織架構

1、組織模型

常見的組織架構體系如下:

2、角色管理

不同的組織節點對應不同的崗位角色:

在組織架構的層級中,帶來角色層級關系,進而會存在一個用戶具備多個角色的情況,處理策略通常有兩種:

  • 角色合並:把用戶所有角色對應的權限點做合並,統一開放;
  • 角色分離:即用戶登錄系統之后,根據角色的選擇切換,加載相應權限;

三、資源管理

1、資源層級

系統層級:大型復雜的架構中,會對系統做應用的划分,並且通過控制台做各種通用業務的管理,例如通過控制台管理各個業務應用的賬號開通、服務授權等,從而形成系統層級的結構;這樣可以避免多個應用對基礎功能的重復實現,從設計層面看也更加合理。

資源粒度:設計精細的權限體系,可以靈活的管理資源開放的范圍,大到應用平台的直接開放(平台管理員),小到應用中某個頁面的功能點開放(業務人員),甚至細化到庫表字段級的控制,可以極大的提升數據安全性。

操作類型:通常對資源的操作定義為:增刪改查四個基礎動作,進而產生對數據的影響,轉換到業務中權限的描述語義為:讀、寫、刪,通過對角色與資源的業務定義,從而給到不同的動作授權。

2、授權關聯

  • 圍繞組織架構,創建角色與用戶,並形成用戶與角色的綁定關系;
  • 定義資源的管理層級,以及相應的操作類型,並形成頁面到數據的鏈路;
  • 基於角色主體,綁定對應資源和可操作類型,構建角色的權限集合;

基於組織架構中用戶與角色的關系,角色與資源的操作權限,從而實現用戶對資源管理的控制,其核心原理就是RBAC模型,只是在不同的場景下對不同節點做復雜設計,以更好的適應業務。

在權限體系中,場景多是授權動作少,權限點查詢加載的過程多,所在實現的過程中,可以適當考慮做冗余的表關聯結構,從而簡化查詢的過程。

四、源代碼地址

應用倉庫:
https://gitee.com/cicadasmile/butte-flyer-parent

組件封裝:
https://gitee.com/cicadasmile/butte-frame-parent


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM