用戶中心標準化能力設計(2):權限模型選擇
在用戶中心能力標準化的過程中,權限模型的選擇不僅影響系統(tǒng)的靈活性與可擴展性,更決定了未來業(yè)務協(xié)同與角色治理的邊界。本文將從產(chǎn)品視角出發(fā),拆解幾種主流權限模型的適配邏輯與演進路徑,幫助你在復雜業(yè)務場景中做出更具前瞻性的架構決策。
回顧上篇“用戶中心標準化能力設計(1):用戶類型定義”,提到權限管理是用戶中心重要的一個環(huán)節(jié)。
權限管理的本質(zhì)是,什么條件下,哪些用戶對于哪些數(shù)據(jù)具備哪些操作權限。從而保證在正確的情況下,允許正確的身份,對正確的資源執(zhí)行正確的操作。
再進一步拆分權限管理的維度,包括:
條件(When/Where)、身份(Who)、資源(What)、操作(How)。
權限模型概念定義
- 主體 (Subject)???????????? 發(fā)起訪問請求的實體(需唯一標識) 用戶ID、服務賬號、IoT設備MAC地址
- 資源/客體 (Object) ???? 被訪問的受保護實體(需明確邊界) API接口、數(shù)據(jù)庫表、文件
- 操作 (Action) ? ? ? ? ? ?? 主體對資源執(zhí)行的指令(需預定義枚舉值) 增刪改查
- 權限 (Permission)?????? 操作+資源的綁定組合(最小授權單元) 獲取訂單信息、刪除業(yè)務數(shù)據(jù)
- 策略 (Policy)?????????????? 授權規(guī)則的邏輯集合(靜態(tài)聲明或動態(tài)計算)
主流權限模型介紹
下述主要介紹B端通用權限模型RBAC(基于角色的訪問控制)、ABAC(基于屬性的訪問控制)。
其他模型如ACL(訪問控制列表)、ReBAC(基于關系的訪問控制)單一權限控制邏輯則不詳細介紹,可單獨了解。
RBAC(基于角色的訪問控制,Role-Based Access Control)
核心思路:
通過角色解耦用戶與權限,形成“用戶→角色→權限”三層結構。
特征:
角色抽象:權限綁定角色,用戶通過角色繼承權限。
擴展模型:
- RBAC1:支持角色繼承(如樹形層級,子角色自動獲得父角色權限)。
- RBAC2:支持約束(如角色互斥、基數(shù)限制)。
- RBAC3:融合繼承與約束。
適用場景:
企業(yè)后臺系統(tǒng)、組織結構清晰的場景。
ABAC(基于屬性的訪問控制,Attribute-Based Access Control)
核心思路:
通過動態(tài)計算屬性組合(用戶、資源、環(huán)境)決定權限,規(guī)則形如:
用戶類型=** and 所屬機構=當前用戶所屬機構 THEN 允許訪問。(規(guī)則內(nèi)容可配置動態(tài)計算)
特征:
- 動態(tài)策略:支持細粒度條件(時間、所屬機構/部門、業(yè)務數(shù)據(jù)屬性等)。
- 高靈活性:適應復雜場景,但需策略引擎支持。
適用場景:
云平臺(AWS IAM)、多租戶SaaS系統(tǒng)、高合規(guī)要求場景。
主流權限模型優(yōu)劣勢
權限模型RBAC(基于角色的訪問控制)、ABAC(基于屬性的訪問控制)的優(yōu)劣勢如下:
RBAC+ABAC
在實際B端的權限管理模塊設計時,通常需要根據(jù)管理需求、業(yè)務需求來決定,權限管理范圍是否包括功能權限、數(shù)據(jù)權限。
若同時具備功能和數(shù)據(jù)權限管理需求,且從綜合成本、優(yōu)先級等角度考慮,可采用RBAC+ABAC混合的方式來進行權限管理。結合此前文章“B端標準化能力如何識別和管理”標準化能力識別示例中對于B端系統(tǒng)的拆分,抽象用戶訪問數(shù)據(jù)進行操作時的判斷邏輯如下:
鑒權=身份認證通過后,判斷用戶是否具有功能權限(菜單/按鈕)+數(shù)據(jù)權限(字段/數(shù)據(jù))。
其中,“身份認證”、“RBAC是否具有功能權限(菜單/按鈕)”、“ABAC是否具有數(shù)據(jù)權限(字段/數(shù)據(jù))”在代碼編譯時可以拆分為單獨的微服務來執(zhí)行,這樣可以按需先實現(xiàn)RBAC → 再實現(xiàn)ABAC。
階段1:用RBAC快速搭建權限骨架,支撐業(yè)務從0到1先落地;
階段2:待場景復雜時,用ABAC實現(xiàn)動態(tài)管控,兩者接力;
這樣既可以避免早期資源浪費,又可以為未來預留彈性拓展空間。
注意點
設計
RBAC:若存在分級管理需求,可將角色管理權限下放,約定可管理數(shù)據(jù)范圍;
ABAC:可引用規(guī)則引擎進行落地,但是支持哪些數(shù)據(jù)項可配置動態(tài)權限規(guī)則,需要經(jīng)過詳細需求分析和優(yōu)先級識別后確定,對于不可自定義部分,需要考慮代碼等方式來拓展實現(xiàn);
對于RBAC、ABAC并存的情況,需要事先梳理可能存在的沖突情況,如RBAC僅約定角色可刪除數(shù)據(jù),但ABAC約定僅數(shù)據(jù)創(chuàng)建人可刪除數(shù)據(jù)。需要引入沖突策略,按需開放配置。
性能
因為“鑒權=身份認證通過后,判斷用戶是否具有功能權限(菜單/按鈕)+數(shù)據(jù)權限(字段/數(shù)據(jù))?!逼陂g權限需要實時計算,甚至疊加高并發(fā)的情況,需要采用預處理、緩存等策略來避免長時間加載和反饋延遲的情況。
安全
B端系統(tǒng)審計場景中,需要同時追蹤角色分配與屬性策略變更,日志結構復雜。
審計日志中主體、客體、操作等內(nèi)容,記錄信息需要包括角色-功能權限-數(shù)據(jù)權限等,再進一步按需細化至數(shù)據(jù)屬性。
后續(xù)
后續(xù)文章中將會對于B端系統(tǒng)構建中“用戶中心標準化能力設計(3):統(tǒng)一身份認證”進行介紹。
本文由 @西林 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
- 目前還沒評論,等你發(fā)揮!