楠木軒

覆盤大集中模式下的角色許可權設計

由 淡圖強 釋出於 科技

RBAC模型是透過分離許可權與使用者的耦合關係,將許可權關聯在角色上,使用者透過扮演適當的角色獲得合適的許可權的許可權管理方式。本文在RBAC模型的基礎下,整理許可權設計過程中的客戶場景、總結設計思路。

本專案是一個關於OA系統升級改造的ToG專案,涉及3000+單位5萬用戶,橫跨市–區縣–鎮街3層行政區劃。各單位之間業務資訊交流頻繁,業務上經常需要跨單位、跨部門的協同運作。在系統層面,所有單位均在同一租戶下,由基礎平臺負責各業務子系統許可權的統一管理。

回顧整個專案,在進行許可權設計之前,必需先了解現場的組織架構。因為RBAC模型主要描述的只是使用者–角色–許可權之間的關係,而決定RBAC模型複雜程度的是業務上的組織架構。

當組織架構達到一定量級的複雜程度後,根據系統部署的方式或管理理念的不同,會分化出不同的許可權管理模式,不同的管理模式對系統許可權設計也會有不一樣的要求。

下面以全市組織架構為例進行說明:

圖1 組織架構層級

以上的組織架構主要分為5種層級:

1)基礎許可權模型

適用場景:場景一 、場景二

基礎許可權模型適用於單個單位或組織架構相對扁平的企業。系統完全交付後,透過系統管理員的管理即可滿足日常角色與許可權的維護,各模組業務資料需求明確,是基本的RBAC模型,其業務管理模式如下:

因此,在這種模式下,系統管理經常兼任單位管理員的管理工作,對許可權下放的設計要求不高,其角色樹如圖2所示。

圖2 系統管理員≥單位管理員>業務角色

RBAC模型已經定義了“使用者–角色–許可權”的授權模式,將系統功能拆分為操作許可權與資料許可權兩個維度進行設計。在此框架下設計的許可權模型,不管面向的企業物件如何變化,操作許可權的設計思路都是不變的,僅需要對資料許可權進行改造,即可滿足企業的業務使用。

2)多單位管理模型

適用場景:場景三 、場景四

多單位管理模型適用於大中型單位組織架構,單位之間存在上下級關係且業務交流頻繁。由於單位間的管理關係,需要橫向或縱向的跨單位資料管理,考驗許可權對資料靈活配置的能力。

因此,大型系統的RBAC管理過程更為複雜,此時簡單的RBAC已不能滿足系統的訪問控制分級管理的要求。尤其在資訊系統中儲存和管理大量企業單位的敏感資料,一旦這些資料被洩露或竊取,會給帶來難以彌補的損失。

另外在企業運營中經常需要對組織架構和人員工作進行調整,相應地需要修改系統中訪問控制主體和許可權的關係。而系統管理員由於不瞭解調整內容導致授權工作滯後,即使修改後也不一定能準確反映調整狀態,常需要多次補充修改,導致授權效率較低,影響正常的業務工作程序。

為了解決資訊系統中訪問控制管理的問題,適當簡化授權工作量,提高許可權管理效率,需要建立基於角色的多單位授權管理模型,其業務管理模式如下:

在此模式下,系統管理員不再兼任單位管理員工作,需要實現許可權的多級下放。

在場景四中,由於業務上對單位群進行劃分,需要系統管理員或特定區域管理員管理單位集合或超出單位管理員許可權的特殊角色,角色樹較場景三更加複雜,具體角色樹如圖3所示。

圖3 系統管理員≥區域管理員>單位管理員>業務角色

3)多區域管理模型

適用場景:場景五

多區域管理模式是多單位管理模型的拓展。

首先是對資料管理的要求更高,除了系統、單位、科室、個人的層級外,需要新增區域層級以管理某一範圍內的資料資訊。

其次,由於涉及多層級的許可權管理,在滿足多級許可權下放需求,需要充分考慮不同層級角色對某一角色的管理問題、小許可權角色對大許可權角色的管理問題等。例如:區域管理與單位管理對某業務角色進行管理時,由於自身許可權不同,可下放給此角色的許可權也不相同。

如何避免小許可權角色對大許可權角色造成影響,需要我們結合業務實際使用情況進行設計。

業務管理模式如下:

在此模式下,系統管理員也不再兼任區域管理員工作,角色樹如圖4所示。其中角色1-3為區域管理員,角色4-8為單位管理員。

圖4 系統管理員>區域管理員>單位管理員>業務角色

在我們使用者資訊管理中,需要填寫使用者的職位或職務,在定義角色、職位與職務的關係之前,需要先明確職位與職務之間的關係。

職位:指企業的某個員工需要完成的一個或一組任務;例如:銷售總監 、銷售經理、財務/出納員、司機、倉庫管理員等。

職務:職員所具有的頭銜稱謂,包括職權和職責兩方面內容,隨著語義的拓展職位亦有此意思;例如:科員,主任,經理,總經理。

因此,職位包含職務的意義,職務基本也與職位相對應。而系統中的許可權,是使用者在現實工作中的許可權或工作範疇在系統中的對映。為了簡化角色與職位之間的關係,定義現實中使用者職位或職務中包含的許可權,在系統上均透過角色進行管理設定。

角色設計主要分為角色管理、分配使用者及分配許可權3個模組,透過對這3個模組的控制,實現多區域管理模型下的許可權設計。

在多區域管理模型下,需要支援許可權統一管理與多層級許可權下放兩種場景。

分離角色的管理與使用許可權,由建立單位對角色許可權進行管理,建立單位與使用單位共同分配使用者,可滿足許可權統一管理要求的同時,兼具各單位自行調整使用者的需求。

圖5 系統角色管理

分配使用者的頁面,需要根據使用者當前管理的許可權範圍進行控制,僅支援檢視和分配管轄範圍內的使用者。例如單位管理員僅支援檢視和分配自己單位的使用者,系統管理員可檢視並分配系統內的所有使用者。

由於同一角色可能支援多個管理員分配使用者,為了系統安全與方便追溯,可透過操作人欄位記錄此使用者是由誰進行分配的。

圖6 分配使用者

為了實現對系統各模組的許可權管理,將每個模組劃分為3個部分:選單、頁面資料、按鈕。其中將選單及按鈕納入操作許可權,將頁面資料歸為資料許可權。

由於各功能模組都是根據業務具體場景進行設計開發的,因此許可權也需要根據業務具體要求而進行劃分與設計。但為了系統的統一管理,可以建立統一的設計規範,以維持系統架構統一甚至減少開發工作量。

1)操作許可權

操作許可權用於控制此角色在系統中可對哪些模組做哪種操作。

透過控制選單,實現管理使用者控制特定模組的需求;透過頁面按鈕,實現控制使用者在此模組下可以進行的操作。

以角色管理頁面為例,分配角色管理選單的使用者,即可檢視對應的角色資料,再透過對“新增”“刪除”“啟用”“禁用”等按鈕的控制,限制使用者在此模組下的操作。

部分頁面的欄位還需要區分“只讀”“可改”,以實現各角色在相同頁面中不同的管理需求。

圖7 操作許可權

2)資料許可權

資料許可權是許可權管理中最核心的部分,隨著組織架構的複雜,資料許可權的設計也逐漸複雜甚至需要個性化開發。但從通用性上可以將資料許可權劃為兩種型別:管理範圍、列表欄位。

管理範圍用於管理當前模組的資料範圍,在多區域管理模式下,主要將資料分為個人、部門、單位、區域及自定義五個維度。

為了支援業務中個性化的資料管理要求,可以透過自定義實現資料的個性化管理;另外區域維度需要組織架構支援,如果區域較少時,可以直接考慮透過自定義來實現。

列表欄位用於同一列表同一資料範圍下繼續細分的資料許可權管理,以實現同一資料下對部分敏感資訊的隱藏。

圖8 資料許可權

從產品角度出發,在RBAC許可權模型下,對業務資料的靈活配置,支援資料、操作許可權的多層級下放,是滿足最多管理場景的設計模式。

但在專案角度,需要做好產品現狀及改造的成本評估,結合現場培訓、推廣及後續維護的工作難度,選擇合適的許可權管理方式,才能儘快滿足專案驗收。

以本次專案為例,由於涉及單位較多,大型單位有頻繁的角色調整需求,部分一級單位需要檢視附屬單位業務資料,但鎮街級單位或部分附屬單位人員較少,對系統使用要求不高。如果所有單位都自行管理系統角色,不僅增加了小型單位人員的工作量,還提高了前期推廣的培訓成本。

因此,對系統進行許可權設計時,需要最大化場景考慮,以支援現場根據管理模式進行靈活調整。但現場也需要從實際業務出發,從自身成本與客戶利益角度選擇最優的管理方案。

我們規劃大型系統平臺時,除了關注系統功能之外,還需要了解客戶的管理模式,從更宏觀的角度觀察整個業務的佈局。因此在本次覆盤中,除了對許可權設計的總結外,還嘗試歸納不同組織架構下許可權的管理方式。

希望與各位一同進步,在ToB領域乘風破浪一往無前!

本文由 @龐龐 原創釋出於人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基於CC0協議