前言
許可權模型是企業管理軟體最基本,也是最重要的功能之一,它屬於系統的基礎架構,涉及到對資料、操作功能的許可權控制。它的難點在於如何將企業的日常管理合理地對映到系統的業務功能,使使用者在使用系統的時候就跟日常辦公一樣自然,同時又能享受到辦公自動化帶來的效率提公升。
在這次qone online的產品開發過程中,關於許可權模型的方案討論所花費的時間甚巨,演變出了很多種思路,本系列主要記錄方案討論的過程,一方面作為寶貴的經驗財富,另一方面,也便於以後再回顧的時候看是否會有更加完美的方案。
分析
企業管理系統五花八門,這裡我以軟體企業的專案管理系統作為切入點進行分析。專案管理系統顧名思義主要是用於企業對專案進行管理,包括專案的立項、計畫、跟蹤、進度管理、成本管理、成員報工管理、績效統計等業務功能。作為乙個企業,會涉及到企業的部門組織結構以及人員職責的劃分;而作為乙個專案,它也可能處在乙個複雜的專案組織結構中,典型的專案群組織是由專案組合、專案集、專案三類節點組成(關於三者的概念,可閱讀我另一篇博文專案,專案集以及專案組合),所以專案也會涉及到專案組織結構以及人員職責劃分的問題。
對於部門組織這個維度來說,涉及到的業務實體有哪些呢?聯想現實的部門場景,首先我們能很容易識別出部門,其次部門裡面肯定會有人員,人員一般會有職位,比如某某是部門經理,某某是財務助理;而對於專案組織這個維度來說,我們很容易識別出專案,人員等實體。
接著我們需要把現實的場景與系統關聯起來,在系統裡面,人員我們一般叫使用者,對使用者來說他需要作業系統中的功能,使用者能操作什麼功能,我們叫做許可權,具有什麼樣的許可權就能操作什麼樣的功能。許可權需要分配給使用者,一般來說一組使用者可能具備相同的許可權,比如各個部門的部門經理操作許可權都差不多,這時候為了方便,我們把一組許可權打包賦給各個成員,而這個打包的許可權就叫做角色。乙個角色對應多個使用者,而乙個使用者可以具備多個角色,兩者之間是多對多的關係。
方案一
這樣,我們就把許可權和使用者通過角色關聯了起來,這就形成了典型的使用者-許可權-角色許可權模型。如下圖所示:
圖一使用者-許可權-角色關係圖
其中,角色與許可權,使用者與角色,均是多對多的關係,即乙個角色包括多個許可權,而乙個許可權可以屬於多個角色共有;使用者與角色的關係與此類似。
而對於部門組織結構這個維度來說,前面提到,還涉及到部門和職位兩個業務實體。乙個部門包括多個使用者,而乙個使用者可以同時屬於多個部門(兼職的情況),故兩者的關係是多對多。乙個部門通常會包含多個職位,而每個部門的職位一般來說是不一樣的,比如開發部和行政部的人員,職位肯定是不一樣的,乙個是軟體工程師,另乙個可能是行政助理,故兩者之間的關係是一對多,即乙個部門包含多個職位,而乙個職位只屬於乙個部門;由於使用者可以同時隸屬於多個部門,故可能會同時兼任多個職位,而乙個職位下面通常也會有多個使用者,故兩者之間是多對多的關係。由此,形成了如下的關係圖,其中雙向箭頭代表多對多關係,單項箭頭代表一對多關係:
圖二部門組織許可權模型
以上只是從部門組織維度描述許可權模型,在專案組織的維度,同樣也需要關聯使用者、許可權和角色。三者的關聯與圖一所示的完全一致,但是這裡需要考慮乙個問題:比如有乙個叫做專案經理的角色,他具備一系列操作許可權,把這個角色分別賦給了張三和李四,張三在專案一,李四在專案二,那麼張三是否能去操作李四的專案二呢?當然不能!這裡就涉及到乙個領域的概念,專案經理這個角色只有在與具體專案繫結了以後才有意義,並且繫結後,專案經理就只能操作本專案的資料,而不能去操作其它專案的資料。這個繫結的專案就是專案經理所能操作的領域。部門經理與此類似,雖然各個部門的部門經理操作功能差不多,但是能操作的資料範圍僅限於本部門。
為了清晰,我們對角色進行了分類,分成了三類:專案級角色、部門級角色、系統級角色,它們針對的領域分別是專案、部門、系統。
總結
在本方案中,職位只是作為組織結構中人員的乙個標籤,在系統中沒有特殊的含義,也不與操作許可權相關,只有角色才與操作許可權相關。使用者通過賦予其角色,間接賦予了其作業系統中相應功能的許可權。
組織結構與許可權模型設計(二)
前言 上篇文章組織結構與許可權模型設計 一 中,介紹了許可權模型的第一種實現方案,即使用者與角色關聯 角色與許可權關聯,職位作為使用者的乙個標籤顯示,不涉及許可權。這種方案存在乙個問題,通常我們說的許可權,其實是包含兩個維度 操作功能和資料範圍。比如學校班級的班長有檢查同學作業 布置任務的權利,這是...
專案 RBAC模型與許可權設計
一.rbac模型 什麼是rbac rbac 全稱 role based access control 基於角色的許可權訪問控制,作為傳統訪問控制 自主訪問,強制訪問 的有前景的代替受到廣泛的關注。在rbac中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許...
系統設計 許可權模型設計
該許可權資料模型設計依據spring security框架,針對賬號 角色 許可權 資源 模組 選單 等物件做了簡單設計 指系統登陸賬號,系統使用者物件身份標識。只使用者的身份象徵標識,乙個登陸賬號,可同時擁有多個系統使用角色 身份 比如在網購 當中,使用者同時擁有a資源管理員角色 b資源管理員角色...