標籤:

關於產品許可權管理系統

許可權管理是做B端後台管理系統比較常見也繞不開的一個模塊,這個模塊保證不同類型使用者能夠合理使用管理後台,相對來說是後台系統一個比較複雜的模塊;在我們平日使用的C端產品中,許可權管理也是無處不在的,只是相對管理系統來說會簡單得多;

許可權管理的業務使用場景是:某一個組織內部的不同類型的人員,需要在一個系統裡面協同完成某些業務操作;同時這些不同類型的人員需要有不同的使用模塊,操作不同的模塊資源;

在後台系統中,許可權的表現方式是,控制某個用戶對系統某個功能模塊的操作、對系統中存在文件的增刪改查、對某個菜單的訪問、對頁面上某個按鈕某個圖片的可見性、對某些數據的可見性等;

通過許可權的表現方式,我們可以歸納許可權管理包含兩個部分:控制用戶訪問某些功能、控制用戶訪問某些數據;系統功能、系統數據都是系統資源的表現形式,實則許可權控制的本質就是就是用戶與系統資源的配置;

我們通過一個例子來說明;

在論壇時代,進入某個論壇,有很多用戶在某個討論互聯網的版塊發帖、跟帖、評論等;但是不同用戶可操作的內容是不同的;有的用戶可對版塊內的帖子進行刪除操作,甚至可以禁止某些用戶評論跟帖,而有的用戶只能發帖、評論;我們都知道,可以刪帖、禁止跟帖評論操作的一般都是版主、管理員之類的,發帖、評論的都是一些普通用戶;

這個例子中,發帖、跟帖評論、刪帖、禁止發言都是一些操作的許可權,而有的用戶有著數個許可權,有的用戶只有區區一個許可權;

到這裡,我們就需要引入一個基於用戶的新的概念:用戶角色;

用戶角色是什麼;用戶角色是一定數量的許可權的集合,一定操作許可權的載體;說直白點,角色就是不同許可權組合的載體;

例子中版主、管理員就是角,發帖、跟帖評論、刪帖、禁止發言就是許可權;對於論壇來說,不論是版主還是普通成員,他們都是用戶,只不過各自的許可權不同;但系統設計不可能根據不同的類型的用戶單獨去配置功能許可權,如果後期增添功能,就需要分別對不同類型的用戶配置不同的功能許可權;這個操作不論是通過誰來操作,都無法做到靈活配置;

用戶通過角色與許可權進行關聯,構造成「用戶-角色-許可權」的授權模型;在這個模型中,用戶與角色之間,角色與許可權之間,一般是多對多的關係;一個用戶擁有若干角色,一個角色擁有若干許可權;

要給某個用戶授予不同的許可權,不需要直接將許可權授予用戶,將不同角色賦予給用戶即可;授予用戶不同角色,即是授予用戶不同許可權;

說到這裡,基本對用戶許可權做了一個完整的梳理,我們在控制用戶操作功能許可權的時候,可以通過授予不同角色不同的功能許可權,然後通過對不同類型用戶授予不同的用戶角色,這樣,就控制了不同用戶之間的不同功能操作許可權,形成一個功能許可權的完整閉環;

那麼在實際設計與操作中是如何表現的;

系統在初始化時會賦予某些用戶管理員角色,管理員有著系統所有模塊的功能操作許可權;管理員通過創建不同用戶角色,給不同用戶角色授予不同功能許可權;同時創建子賬號用戶,給這些子賬號用戶授予不同用戶角色,那麼不同用戶即可擁有不同操作許可權;

即流程就是:1)、管理員創建用戶角色;2)、管理員創建子賬號;3)、授予不同用戶不同用戶角色;4)、不同用戶擁有不同功能操作許可權;

前面我們說到,通過許可權的表現方式,我們可以歸納許可權管理包含兩個部分:控制用戶訪問某些功能、控制用戶訪問某些數據;實則系統許可權應該包含兩個模塊:功能模塊、數據模塊;

我們再來通過一個例子說明;

某個管理系統,有財務、銷售、客服等不同角色;

在銷售部門,有不同級別的職位,不同職位的員工都能查看銷售額這個模塊的數據;但是由於數據的重要性與商業價值,需要不同級別的員工能夠看到不同的數據;

例如總監可以看到全國的銷售額,該總監下屬某個負責華東業務的總經理只能看到華東地區的銷售額,該總監下屬某個負責華北業務的總經理只能看到華北地區的銷售額;總監、區域經理,都能看到銷售額這個模塊的數據,但由於職位不同,能夠看到的數據範圍也就不同;

在財務部門、客服部門,同樣有著相同的問題存在;財務總監、審計員能夠看到的數據範圍是不一樣的,客服主管、客服經理能夠看到的數據範圍也是不一樣的;

產生這種不同職位看到不同數據範圍的需求,是公司內部組織架構的職能結構決定的;

上面的兩個例子可以看到,對於業務不複雜的產品,僅從功能去設計是足夠的;當系統變得複雜的時候,就需要在功能限制的基礎上,加上數據範圍的限制;可以理解為,數據許可權是對功能許可權的補充,兩者並不是獨立的分類,而是許可權管理中相輔相成的兩個部分;

所以在涉及到管理系統的許可權管理模塊時,其實是包含兩個模塊的:功能許可權模塊、數據許可權模塊;

那麼我們在設計許可權管理模塊時,應該怎麼來劃分功能許可權和數據許可權呢;可以從兩個維度來做劃分:橫向與縱向;橫向劃分對應功能許可權,縱向劃分對應數據許可權;

橫向按組織內部組織架構業務結構類型來劃分,前提是公司在實際業務運轉中對內部不同類型、結構已經作了分割,例如運營部、銷售部、客服部,不同部門看到的功能模塊不同;

縱向按照不同角色的等級關係進行劃分,數據許可權的劃分往往基於公司內部組織架構的職能結構進行劃分,從而滿足管理的需求;例如銷售總監和銷售經理在某些重疊功能模塊上看到的數據範圍不同;

處理好功能許可權和數據許可權對系統資源的分配,不同用戶角色的劃分及用戶角色之間的關聯就有較為清晰的界限,為後期的產品迭代提供足夠可擴展空間;

說到這裡,那麼問題來了,功能許可權和數據許可權的區別到底是什麼,兩者的邊界到底在哪裡,如何做兩者之間的界限劃分;

我的理解是,其實功能許可權和數據許可權很難做到非常清晰的界限劃分,不同公司內部不同業務類型,會決定不同功能許可權、數據許可權的界限劃分,我們只有在具體問題時做具體分析;有一點需要明確的是,兩者並不是相互獨立的關係,而是一種相輔相成的關係,是為了能夠更好地管理內部寫作與提升內部的協作效率;
推薦閱讀:

TAG:許可權管理 |