您的位置:首頁>正文

基於RBAC的許可權管理模型,搭建個性化的許可權管理系統

發佈於1天前閱讀2166評論0喜歡2

閱讀2166

標籤:

產品經理許可權管理系統

對於許可權管理系統的個人理解, 希望對你有所幫助

有沒有發現,

我們使用任何一個產品, 或多或少都會涉及許可權管理系統, 比如使用微信, 我們設置【查看朋友圈的範圍】, 直接影響我們的好友能查看我們的朋友圈動態的範圍;又如我們日常使用的企業類軟體, 不用部門可能使用的功能不一樣;產品的收費使用者與免費用戶能使用的功能是不一樣;在社區裡, 版主和普通社員的許可權也是不一樣的。 沒錯, 這些就是許可權帶來的好處, 讓使用用同一個產品的使用者看到、使用的功能不同, 甚至實現專人定制化的許可權設置。

今天我要介紹的就是基於RBAC的許可權管理模型, 來搭建個性化的許可權管理系統。

首先我來介紹一下用戶、角色、許可權

用戶:其實就是相當於帳號,

我們登錄一個網站、一個平臺都需要有帳號, 帳號是登錄進行操作的前提。

角色:角色有點類似於職位, 每一個職位都有一定範圍內的工作內容, 就像你是前臺接待員, 那你的工作就是接待, 不可能讓你去做財務的工作, 除非說你是前臺接待員又是財務部門的人員。

許可權:第一層面是控制我們網站、平臺、應用需要控制的頁面的顯示或者說是功能表是否顯示;第二個層面是控制頁面按鈕的顯示, 即操作的許可權控制, 第三個層面是更為精准化資料控制, 比如一些人可以看到頁面清單的所有資料, 而一些人只能看到部分資料。

現在開始步入正題, 先介紹一下傳統的許可權管理系統, 在傳統的許可權管理系統中,

是直接把許可權賦值給用戶, 使用傳統許可權管理系統, 在初期使用人員比較少的時候還是很方便的, 但是當使用人員增多, 系統功能也日益複雜, 就會發現對每個人的許可權進行管理維護真的需要花很長時間。 由此也產生了RBAC許可權模型, 這是一套完整成熟的系統, 他在“使用者”和“許可權”中間增加了”角色“的概念, 把許可權賦值給角色, 再把角色賦值給用戶, 這樣做的好處就是授權更加靈活, 支持批量化修改用戶的許可權。 同時根據許可權系統的複雜程度, RBAC又分為RBAC0、RBAC1、RBAC2、RBAC3。

一、RBAC0——基礎模型

RBAC0是基礎模型, 可以滿足大多數的許可權管理系統, 在這個模型中, 我們把許可權賦值給角色, 再把角色賦值給用戶, 其中使用者與角色的分配方式有兩種,

一種是用戶與角色是一對一的關係, 即一個用戶對應一種角色;另一種就是用戶與角色是多對多的關係, 即一個用戶可有多個角色。

一般而言我們用的都是用戶與角色是多對多的關係, 一個用戶被賦值為多個角色, 同時一個角色可以賦值給多個用戶。

就拿我做的第一個許可權管理來說, 這是一個為原創內容中心量身製作的系統, 有總編, 統稿, 責編, 編輯, 美編等角色, 比如張三他是責編, 同時他又兼顧了統稿的角色, 那這就是一個用戶擁有兩個角色;同時因為公司人員原創內容中心部門人數有好幾十人, 多個統稿負責人是每天輪流值班的。 那就是統稿的角色被多個用戶擁有了。

二、RBAC1——角色分層模型

這個模型是在RBAC0的升級, 在角色中引入了子角色的概念, 就相當於給一個角色分了多個擁有不同許可權的子角色, 從而實現更細細微性的許可權控制。

這種情況我用部門來舉例吧, 比如銷售部門, 部門有負責人:銷售總監, 管理整個部門, 也就是銷售部門所有的許可權都有, 像分配任務,統計部門KPI,有時候遇到非常重要的客戶需要自己來跟進,招聘部門人員等等;銷售部門還有銷售經理:主要是負責銷售總監分配的任務,統計部分銷售的KPI;還有普通的銷售人員,主要就是負責接待客戶。那這樣就是銷售總監擁有整個部門所有的許可權,而銷售經理,普通銷售則擁有銷售總監的部分許可權,但是銷售總監、銷售經理、普通銷售其實都是銷售角色。所以就產生了角色分組模型。

三、RBAC2——角色限制模型

該模型也是在RBAC0的基礎上演變而來的,但是新增了對用戶、角色以及許可權的限制控制。

這些限制可以分成兩類,即靜態職責分離SSD(Static Separation of Duty)和動態職責分離DSD(Dynamic Separation of Duty)。具體限制如下圖:

角色限制模型更為嚴謹,對邏輯性要求更高,同時對業務也需要有深入的瞭解。

靜態職責分離,我就拿互斥角色的限制來說,比如財務部,負責提交財務報銷的人員不能同時擁有報銷審核的許可權,如果報銷的人同時擁有審核的許可權,那會產生非常大的風險;再比如編輯人員不能同時具有發稿的許可權,一篇文章最終呈現在我們用戶面前其實經過了編輯、美編、責編、統稿等多個步驟,如果編輯擁有發稿的許可權,那編輯寫完稿直接發出去了,一方面沒有美編的排版、樣式等的優化,也沒有責編的複查,最終很有可能就會產生出品質不高的內容。

動態職責分離:如用戶擁有多個角色,當用戶登錄時,是採用啟動其中一個角色?還是說採用所有角色擁有的許可權中和?一般而言是採用啟動其中一個角色,分工更為清晰。但具體採用哪種方案,那需要根據系統複雜性以及產品的思維來確定。

三、RBAC3——統一模型

統一模型是RBAC1以及RBAC2的結合

四、實戰案例

案例一:我設計的第一個許可權管理系統用的就是RBAC0基礎模型,因為這個系統是對公司內部部門使用的,使用人數在50-100人,相應的功能也不算很複雜,許可權的控制在頁面+操作及按鈕的層面上,因為這是一個針對我們編輯部門以及運營部門使用,而且功能結構不複雜,所以不需要對角色進行分組,因為當時是第一次做許可權系統,考慮不周,沒有加角色互斥的限制,但因為使用人數不多,人工維護所需花的時間也不多。

案例二:不久公司另一個系統由於功能隨著反覆運算越來越複雜,之前的許可權管理都是後臺自己控制,沒有視覺化管理,發現人工運營維護需要耗費大量的時間,由此許可權管理系統提上日程,也由於我之前有搭建許可權管理系統的經驗,這個任務自然安排給了我。首先簡要說一個要設計的大概吧,因為這個許可權系統涉及了兩個後臺平臺簡稱後臺A、後臺B。使用後臺A的主要是部門負責人,使用後臺B的主要是部門員工;所以你也看出來了,這裡就需要對角色進行分組,對於使用後臺A的是部門負責人擁有該部門所有的許可權,而使用後臺B的是部門人員,所擁有的許可權是負責人許可權的子集。而且部門負責人可以創建新的角色用於管理部門許可權,並把相應角色賦值給部門的員工。所以這就是許可權系統中又有一個子許可權系統。這樣許可權管理系統就搭建起來了。

其次就要進行角色的限制了,這個我主要的針對的是在資料層面上的控制,就拿銷售線索來舉例吧,銷售總監可查看並分配銷售線索給銷售,也就是銷售總監可以查看所有的銷售線索;而對於普通銷售就只能查看並根據自己負責的銷售線索,這就是根據角色來控制資料的下發顯示。

五、總結

基於兩次的許可權系統的搭建,積累了一下有關許可權管理的知識,還記得第一次做許可權管理系統時,有很多都不知道,對於用戶管理,角色管理入手很快,但對於許可權管理,對於具體要控制到什麼程度,其中的邏輯關係,限制條件的制定,這些涉及邊緣化的東西想得越清楚,會更好的推進產品開發實現。所以在做產品前,需要瞭解產品背後的業務邏輯,熟悉使用場景,瞭解這些對於任何一個產品經理,都是必修的課程。而我自知現在能力尚弱,仍需不斷努力。路漫漫其修遠兮,吾將上下而求索。

文/Sunny_小柒 一個年輕的產品經理,目前就職於全國第一的汽車垂直新媒體--有車以後.

轉載請聯繫,學習交流請加微信(sunnyoneleaf)

像分配任務,統計部門KPI,有時候遇到非常重要的客戶需要自己來跟進,招聘部門人員等等;銷售部門還有銷售經理:主要是負責銷售總監分配的任務,統計部分銷售的KPI;還有普通的銷售人員,主要就是負責接待客戶。那這樣就是銷售總監擁有整個部門所有的許可權,而銷售經理,普通銷售則擁有銷售總監的部分許可權,但是銷售總監、銷售經理、普通銷售其實都是銷售角色。所以就產生了角色分組模型。

三、RBAC2——角色限制模型

該模型也是在RBAC0的基礎上演變而來的,但是新增了對用戶、角色以及許可權的限制控制。

這些限制可以分成兩類,即靜態職責分離SSD(Static Separation of Duty)和動態職責分離DSD(Dynamic Separation of Duty)。具體限制如下圖:

角色限制模型更為嚴謹,對邏輯性要求更高,同時對業務也需要有深入的瞭解。

靜態職責分離,我就拿互斥角色的限制來說,比如財務部,負責提交財務報銷的人員不能同時擁有報銷審核的許可權,如果報銷的人同時擁有審核的許可權,那會產生非常大的風險;再比如編輯人員不能同時具有發稿的許可權,一篇文章最終呈現在我們用戶面前其實經過了編輯、美編、責編、統稿等多個步驟,如果編輯擁有發稿的許可權,那編輯寫完稿直接發出去了,一方面沒有美編的排版、樣式等的優化,也沒有責編的複查,最終很有可能就會產生出品質不高的內容。

動態職責分離:如用戶擁有多個角色,當用戶登錄時,是採用啟動其中一個角色?還是說採用所有角色擁有的許可權中和?一般而言是採用啟動其中一個角色,分工更為清晰。但具體採用哪種方案,那需要根據系統複雜性以及產品的思維來確定。

三、RBAC3——統一模型

統一模型是RBAC1以及RBAC2的結合

四、實戰案例

案例一:我設計的第一個許可權管理系統用的就是RBAC0基礎模型,因為這個系統是對公司內部部門使用的,使用人數在50-100人,相應的功能也不算很複雜,許可權的控制在頁面+操作及按鈕的層面上,因為這是一個針對我們編輯部門以及運營部門使用,而且功能結構不複雜,所以不需要對角色進行分組,因為當時是第一次做許可權系統,考慮不周,沒有加角色互斥的限制,但因為使用人數不多,人工維護所需花的時間也不多。

案例二:不久公司另一個系統由於功能隨著反覆運算越來越複雜,之前的許可權管理都是後臺自己控制,沒有視覺化管理,發現人工運營維護需要耗費大量的時間,由此許可權管理系統提上日程,也由於我之前有搭建許可權管理系統的經驗,這個任務自然安排給了我。首先簡要說一個要設計的大概吧,因為這個許可權系統涉及了兩個後臺平臺簡稱後臺A、後臺B。使用後臺A的主要是部門負責人,使用後臺B的主要是部門員工;所以你也看出來了,這裡就需要對角色進行分組,對於使用後臺A的是部門負責人擁有該部門所有的許可權,而使用後臺B的是部門人員,所擁有的許可權是負責人許可權的子集。而且部門負責人可以創建新的角色用於管理部門許可權,並把相應角色賦值給部門的員工。所以這就是許可權系統中又有一個子許可權系統。這樣許可權管理系統就搭建起來了。

其次就要進行角色的限制了,這個我主要的針對的是在資料層面上的控制,就拿銷售線索來舉例吧,銷售總監可查看並分配銷售線索給銷售,也就是銷售總監可以查看所有的銷售線索;而對於普通銷售就只能查看並根據自己負責的銷售線索,這就是根據角色來控制資料的下發顯示。

五、總結

基於兩次的許可權系統的搭建,積累了一下有關許可權管理的知識,還記得第一次做許可權管理系統時,有很多都不知道,對於用戶管理,角色管理入手很快,但對於許可權管理,對於具體要控制到什麼程度,其中的邏輯關係,限制條件的制定,這些涉及邊緣化的東西想得越清楚,會更好的推進產品開發實現。所以在做產品前,需要瞭解產品背後的業務邏輯,熟悉使用場景,瞭解這些對於任何一個產品經理,都是必修的課程。而我自知現在能力尚弱,仍需不斷努力。路漫漫其修遠兮,吾將上下而求索。

文/Sunny_小柒 一個年輕的產品經理,目前就職於全國第一的汽車垂直新媒體--有車以後.

轉載請聯繫,學習交流請加微信(sunnyoneleaf)

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示