後臺系統:基於RBAC模型的權限設計

對於業務複雜或數據龐大的系統,爲了方便管理,一定要做權限設計。

權限設計是後臺系統要考慮的一個授權策略問題。直白的說,權限設計就是根據公司的業務規則,對權限管理系統設置的安全策略。

權限一般分爲功能權限,數據權限與菜單權限。

功能權限控制當前賬號可以操作的功能按妞,比如風控只能審覈標的登記,但不能發起進件申請。

數據權限控制當前賬號可以看到的數據範圍,比如客服A只能看到分配到她名下的出借人的投資數據。

菜單權限控制當前賬號可以看到的頁面內容,比如催收人員只能看到案件逾期後流轉到催收頁面的內容。

對於權限設計,關鍵是理清用戶、權限、角色三者的關係。即給誰創建賬戶,分配什麼角色,賦予何種權限。

需求背景

權限設計的首要問題是明確需求。權限設計牽涉到後臺系統底層架構的業務邏輯,在做後臺系統之前,一定要對現有的權限控制和業務情況瞭解清楚,才能避免在權限設計的問題上踩坑。

以某車貸風控系統爲例,我們通過相關業務部門的反饋和當前權限系統的調研,發現它存在的問題有以下幾點:

用戶的權限歸屬不明確,導致進件的申請和審覈操作爲同一個人;

敏感數據沒有做權限控制和脫敏處理,導致用戶隱私數據被泄露;

角色的分類不合理,每個用戶只能配置一個角色,導致工作組和流程節點比較複雜;

對所屬團隊的客戶經理、團隊經理和城市經理做了三級維護關係,但人員調動和離職率較大,導致管理成本高。

瞭解完現有需求背景後,我們借鑑釘釘的那套權限維護方式,改進了管理系統的權限設計。

一方面收集權限需求,根據部門需求列一份權限清單,並做好CheckList。在模塊的功能頁面要放置哪些權限,完全可以根據《操作權限申請表》的業務需求,進行靈活的權限配置。

另一方面藉助UML建模的用例圖,將角色按功能Uc級細分到增刪改查導,方便確認相關人員的操作權限。

設計過程

明確需求後,就要選擇合適的權限設計模型。做後臺系統權限設計,我們可以借鑑一些控制模型。

常見的權限設計控制模型有:自主訪問控制(DAC)、強制訪問控制(MAC)、訪問控制列表(ACL)、基於角色的訪問控制(RBAC) 、基於任務和工作流的訪問控制(TBAC) 、基於任務和角色的訪問控制(T-RBAC)、基於對象的訪問控制(OBAC)、使用控制模型( UCON)、基於屬性的訪問控制(ABAC)等。

最常見的權限設計控制模型是RBAC模型。像業務複雜且功能龐大的某車貸風控系統,權限設計選擇的就是RBAC模型,主要是方便後續的擴展。

RBAC即基於角色的權限訪問控制(Role-Based Access Control),在RBAC模型中,權限與角色相關聯,用戶通過成爲對應角色的成員,從而得到這些角色的權限。即用戶關聯角色,角色關聯權限,可實現系統權限的靈活配置。

訪問控制的核心是授權策略。在RBAC模型中,Who、What、How構成了權限控制三要素,也就是Who對What(Which)進行How的操作。

RBAC的權限授權其實就是Who、What、How的問題。Who:權限的擁用者,What:權限針對的資源,How:具體的權限。在RBAC中,根據權限設計的複雜程度,可分爲RBAC0、RBAC1、RBAC2、RBAC3。

RBAC模型包含用戶(User)、資源(Resource)、操作(Operation)三個關鍵要素。通過將資源以及資源操作授權給用戶,而使用戶獲得對資源進行操作的權限,保證了權限分配的實施。

此外,RBAC模型遵循三條安全原則:最小權限原則,責任分離原則和數據抽象原則,從而簡化了權限管理。

實施過程

選擇RBAC模型後,就要從賬戶、角色、權限三方面考慮實施過程,並滿足不同的用戶在使用過程中的不同權限需求。

其中賬戶和角色關聯、角色和權限關聯,且都是多對多的關係。我們可以藉助UML建模的類圖瞭解三者之間的關係。

以某車貸風控系統爲案例,我們要爲某風控A創建一個管理賬戶,並分配對應的風控人員角色,且在系統擁有訪問標的詳情權限和操作標的登記權限。

賬戶管理

賬戶管理的入口在系統管理模塊,包括基本的新增賬戶,編輯賬戶,刪除賬戶、查看賬戶、查詢賬戶,以及給賬戶分配角色。

賬號管理是管理員最常用到的功能,相應字段一般是常用字段和特定字段。常用字段比如用戶ID,手機號,姓名,角色,狀態和註冊時間等,特定字段是公司業務需求,比如分配角色,登錄時間,登錄次數,訪問IP,訪問設備等。

管理員在新增賬戶時,通過給該賬戶分配風控人員的角色,從而擁有該角色的相關權限。RBAC模型就是通過給用戶分配角色,而取得角色的權限,這樣就簡化了用戶權限分配流程。

角色管理

角色管理的入口在系統管理模塊,包括基本的新增角色,編輯角色,刪除角色、查看角色、查詢角色,以及給角色分配權限。

角色管理是用來管理公司內部用戶的角色信息。一個複雜的後臺會被分割成很多角色,比如管理員、運營人員、客服人員、財務人員、催收人員等。我們可把具有共同特徵的某一類人羣的身份進行歸納,從而爲不同的用戶賦予對應的角色權限。

管理員會根據公司業務需要,新增對應的角色,並給該角色賦予對應的頁面權限和操作權限。角色是關聯用戶和權限的紐帶,可以爲用戶賦予該角色所集成的相關權限。我們在權限攔截流程設計時,就會限制菜單要根據給用戶分配的角色填充,只顯示該角色可展示的菜單。

權限管理

權限管理的入口在系統管理模塊,包括基本的新增權限,編輯權限,刪除權限、查看權限,以及給權限狀態進行開關。

任何一個B/S系統或C/S系統都會做權限管理。權限管理限制用戶可以訪問而且只能訪問自己被授權的內容或數據。

管理員在新增權限時,會限定權限性質爲基本權限或操作權限。比如用戶沒有操作權限時,點擊按鈕會提示無權限,或者按鈕置灰不可點擊,或者隱藏該操作按鈕。

權限設計是後臺系統必不可少的一個環節。基於RBAC模型的權限設計,能支持業務複雜的權限控制,也能滿足平臺運營的安全策略,增加了權限管理的靈活性與簡便化。



本文首發於微信公衆號 產品經理朱學敏(ID:pm_zhuxuemin),如需轉載,請聯繫原作者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章