當前位置:吉日网官网 - 黃道吉日 - 系統權限功能設計

系統權限功能設計

幾乎所有的管理後臺都會涉及到權限的設計。權限控制是管理後臺的重要功能,可以有效提高系統的安全性,減少誤操作、數據泄露等風險的發生。但是,很多產品經理都有點害怕權限功能。壹方面是因為可供參考的例子很少,權限管理是壹個“系統級”的基礎功能。壹般只有管理員才能操作,不像其他功能可以在其他系統試用。另壹方面,普通用戶無法操作權限功能,存在感低。他們做好了不會出彩,但是做不好,整個過程會被封殺,產品會崩潰。

RBAC模型

目前,RBAC(Role-Based Access Control)模型是壹種被廣泛接受的功能權限模型。在RBAC中,權限與角色相關聯,用戶通過成為適當角色的成員來獲得這些角色的權限。這大大簡化了權限的管理。在組織中,角色是為完成各種任務而創建的,用戶根據其職責和資格被分配相應的角色。用戶可以輕松地從壹個角色分配到另壹個角色。可以根據新的需求和系統合並賦予角色新的權限,也可以根據需要從壹個角色中回收權限。

1.角色的角色

如果沒有角色的概念,用戶直接對應權限會更靈活,但是後臺的數據表設計會變得復雜,運行成本高,容錯性變差。

引入“角色”概念後,用戶與角色的關系可以是多對壹,也可以是多對多。當用戶的角色是多對多時,當前用戶的權限是多個角色的聯合。這時候只需要給角色賦予權限,可以大大減輕管理負擔,同時將用戶與權限解耦,提供更大的靈活性,提高整個設計的容錯性。

2.介紹用戶組

在壹些大型平臺上,如果用戶數量較多,在添加角色時,需要給大量用戶分配新的角色,工作量巨大。這時候我們可以引入用戶組的概念,把這些用戶拉到同壹個用戶組中,然後給整個用戶組分配角色,這樣就大大減少了角色分配的工作量。

同樣,權限多了也會有同樣的問題,給角色設置權限的時候需要大量的操作。這時可以考慮引入權限組的概念,將與角色關聯性強的權限進行分組,從而減少賦值時的工作量。在現實中,權限組的使用相對較少,因為系統中的權限壹般都是有限的。需要註意的是,即使存在用戶組或權限組,也可以允許用戶或權限與角色直接關聯,這可能取決於具體的業務情況。

下圖顯示了添加壹個在mac系統中運行的用戶組,並按用戶組配置權限。

3.角色繼承的RBAC模型

在壹個業務場景中,如果需要區分角色:設計主管、設計團隊領導和設計成員,並且管理模式是向後兼容的,那麽應該使用角色繼承的RBAC模型。上級角色繼承下級角色的所有權利,並且可以被賦予額外的權利。

這時,除了定義角色,還需要管理角色之間的關系,通過關系來體現角色的層級關系,從而達到繼承權限的效果。角色的繼承關系主要有兩種:樹形圖和有向無環圖。

傳承往往來自於公司團隊的組織結構。此時,角色往往與組織結構相關聯,以達到繼承角色模型的效果。如下圖所示,趙的角色是“三級組長”,與他並列的組中有幾個“三級組長”,但都依附於左邊的組織結構樹,各級領導只有查看和操作下屬子節點的權限。

4.受限RBAC模型

在壹個產品或系統中,有些角色可能需要隔離,不允許同時給壹個人。眾所周知,“不能既當運動員又當裁判”。

因此,對於壹組多個角色來說,只能存在單選關系,但多組角色可以共存。如下圖所示,壹個用戶既可以是設計師,也可以是管理員,但是只能被賦予設計師角色組中的壹個角色和管理員角色組中的壹個角色。

此外,這些限制可能是數量上的。例如,壹個產品組中必須只有壹個管理員,並且不允許刪除或重新分配管理員角色,只能更改負責人的角色。

受限模型不僅影響分配過程,有時即使有多個角色,也需要限制使用,因為不同的角色會與同壹函數或數據的使用發生沖突。如下圖所示,壹次只允許壹次登錄。

根據不同的業務需求,有多種形式的限制。需要註意的是,我們不應該僅僅依賴後端的限制,而應該在前端顯示清晰的規則和適當的限制,以避免用戶的錯誤和沮喪。

第三,權限的劃分和設計

通過RBAC模型很好地建立了用戶、角色和權限之間的關系。但到底是壹種什麽樣的關系,如何規劃“權威”這個抽象的概念?

這些都需要分析清楚,才能進壹步設計出完善的權限體系。

首先妳要知道壹般產品的權限是由頁面、操作和數據組成的。頁面和操作是相互關聯的,必須有頁面權限才能在該頁面下分配相應的操作權限。可以添加、刪除和檢查數據。

總體關系如下圖所示:

所以在設計之初就需要考慮未來可能區分角色的地方,盡量去解耦,模塊化。對於技術來說,每個頁面模塊和每個操作最好使用獨立的接口。對於設計來說,需要保證所有角色因為權限的原因,屏蔽了壹些操作和數據後,仍然能夠體驗流暢。

確保初始設計支持後,在配置權限時應註意以下幾點:

(1)確定是否支持前端配置。

如果角色和權限相對固定,壹般可以在後臺寫角色和權限的關系,需要在後端修改,重新上線。這種情況適用於只有壹個用戶的系統,例如公司內部系統。

如果需要自定義角色或者每個角色在不同的用戶場景下有不同的權限,需要在“前端用戶配置頁面”中體現角色的定義以及角色與權限之間的配置。這種情況適用於用戶自定義角色權限經常變化的系統和租戶系統。

(2)按基本單元拆分,按業務邏輯配置。

壹般每個對象的“增加、刪除、修改、查詢”都可以看作是壹個基本的權限單元。比如在“人事管理”中,查看人員列表、增加人員、刪除人員、編輯人員信息,要分為四個權限單元。在技術和設計上,我們希望盡可能的去耦合和模塊化。

但是在業務層面,有些運營是整合的。這些不可分割的權限建議在“前端用戶配置頁面”打包成壹個整體來提供配置。比如我們確定在系統現有和未來的業務中,只有普通會員有查看人事管理的權限,管理員有操作的權限,我們就可以把增加、刪除、修改這三個基本權限公司合並到權限中進行配置。

(3)頁面權限優先於操作和數據權限。

必須配置頁面模塊權限,才能配置當前頁面模塊下的具體操作權限和頁面模塊的數據顯示權限。

(4)查看權限優先於添加、刪除和修改權限。

壹般情況下,首先要能查看某個模塊或操作,其他的添加、刪除、修改操作才有意義。所以在設計的時候,應該在獲得查看權限之前限制其他權限的配置,或者在配置其他權限的時候默認給查看權限。

(5)角色和權限之間的各種關系

角色和權限的關系不僅僅是簡單的“是/否關系”,還包括有壹定限制的操作和壹定程度的數據訪問。

例如,在人員管理中:

數據範圍:用戶有權查看人員列表,但只能查看自己的團隊;數據邊界限制(上限等。):不能超過20人。數據字段:HR可以查看人員列表中的職級、薪資等字段,其他角色只能查看姓名、郵箱等字段;

(6)角色和權限的設計表達

在傳達壹個系統的權限設計規則時,設計者往往習慣用最直接、最主觀的方式表達自己的想法,比如“當……”這句話。但是壹個平臺涉及到很多權限規則,當整篇文章都用這種形式描述時,表達對象會很難理解。

正確描述:更明確地說,它是基於開發的語言和技術模型的結果來表達的。將每個角色和權限單元繪制成壹個網格,每個交集網格描述了角色和權限的數據關系和限制。

如下圖所示:

四、需要註意的小技巧

1.隱形管理員

在角色和權限可定制的系統中,壹般需要為系統的初始配置預留壹個管理員角色,用於添加第壹批業務人員和配置基本角色。

在某些系統中,上帝視角的admin角色是允許的,因此可以在角色配置列表中顯示為“超級管理員”。在某些系統中,這個角色是不允許存在的,所以可以將這個角色設置為不可見狀態,只授予維護系統的工作人員。

2.授予初始權限

對於壹個允許用戶自己加入的系統,需要設置壹個或多個默認角色,有時可以是“遊客”角色,只有最基本的權限。

初始許可也可以與用戶的壹些現有數據字段相關聯。例如,添加用戶時,如果用戶的職位是“設計師”,則直接給出“設計師”角色的權限。

3.在人事管理中把握自己

在人事管理中,管理員角色在與自己打交道時需要格外註意。因為如果修改或刪除自己的角色,可能會導致系統沒有管理角色,無法添加其他成員,無法正常運行。設計時可以添加判斷,只有管理角色時禁止編輯刪除。

4.無頁面權限提示

雖然可以通過頁面權限限制直接隱藏當前用戶沒有權限的頁面,但是不能排除用戶獲取權限之外的url地址。當用戶不小心訪問了壹個沒有權限的頁面,壹定要提供“沒有權限”的提示,避免用戶認為系統是bug。

最後

綜上所述,整個權限系統設計就是定義各個節點以及節點之間關系的過程。

節點包括:

用戶;用戶群;角色;角色組;權限(頁面、操作、數據);權限組(頁面、操作、數據);

關系包括:

是/否關系;繼承關系;限制關系(互斥、範圍限制、邊界限制、領域限制...)

  • 上一篇:疫情下給顧客的中秋祝福亮點
  • 下一篇:婚禮感謝信怎麽寫
  • copyright 2024吉日网官网