許可權系統設計學習總結(1)——多租戶的RBAC許可權管理
一、公司(Company)
公司包含了體系結構集合與使用者集合。 公司可以存在上下級關係,這種關係僅限於展現形式,公司與公司之間沒有許可權繼承,也就是說在授權管理中公司之間全部是扁平關係。公司的屬性有以下內容:
屬性 | 型別 |
---|---|
公司編碼 | 字串 |
公司名稱 | 字串 |
上級公司 | 公司 |
在上級公司下的排序 | 數字 |
下級公司 | 公司列表 |
下屬體系結構 | 體系結構列表 |
其下使用者 | 使用者集合 |
二、體系結構(Architecture)
體系結構是由一系列組織機構通過層次關係組成的一個樹形結構。一個公司下可根據業務需求存在多個體系機構,如人事組織結構、辦公組織結構、財務組織結構、專案組織結構等。 體系結構可以存在上下級關係,這種關係僅限於展現形式,體系結構與體系結構之間沒有許可權繼承,也就是說在授權管理中同一公司下的體系結構之間全部是扁平關係。體系結構的屬性有以下內容:
屬性 | 型別 |
---|---|
體系結構編碼 | 字串 |
體系結構名稱 | 字串 |
所屬公司 | 公司 |
上級體系結構 | 體系結構 |
在上級體系結構下的排序 | 數字 |
下級體系結構 | 體系結構列表 |
組織結構根節點 | 組織機構 |
三、組織機構(Organization)
組織機構是體系結構上的一個節點,每個節點都有一個上級節點和若干個下級節點。組織機構是有級別的,其級別是其所在體系結構的層次深度,如在一個體繫結構下最根的組織機構節點是1級,1級下面的組織機構節點是2級,2級下面的組織機構節點是3級…… 組織機構有實機構與虛機構之分,實機構是真是存在的組織機構,而虛機構一般是為了收納一些零散的組織機構或使用者所建立的虛擬組織機構。實組織機構是有級別的,而且其下級組織機構的級別會加1;而虛機構是不佔用級別的,其下級組織機構(實機構)會在其上級組織機構(實機構)的基礎上加1。如1級的實機構“A”下有一個實機構“AA”和一個虛機構“Ab”,實機構“AA”的級別是2級,虛機構“Ab”是不佔級別的,其下如果也有一個實機構“AbA”和一個虛機構“Abb”,那麼實機構“AbA”是2級,而虛機構“Abb”不佔級別,“Abb”下的實機構“AbbA”級別是2級,因為其上的兩級都是虛機構都不佔級別。組織機構的屬性有以下內容:
屬性 | 型別 |
---|---|
組織機構編碼 | 字串 |
組織機構名稱 | 字串 |
組織機構型別 | 數字 |
所屬公司 | 公司 |
所屬體系結構 | 體系結構 |
上級組織機構 | 組織機構 |
在上級組織機構下的排序 | 數字 |
下級組織機構 | 組織機構列表 |
包含角色 | 角色列表 |
四、角色(Role)
角色是組織機構節點下的物件。角色也是可以有上下級關係的,一個角色下可以再拆分出多個角色,在許可權控制時下級角色是可以繼承上級角色的許可權的。角色可以掛接在某個組織機構下,也可以掛接在某個角色下,但角色下是不能再掛接組織機構節點的。角色的屬性有以下內容:
屬性 | 型別 |
---|---|
角色編碼 | 字串 |
角色名稱 | 字串 |
所屬公司 | 公司 |
所屬體系結構 | 體系結構 |
所屬組織機構 | 組織機構 |
它繼承的角色 | 角色 |
在所屬組織機構或它繼承的角色下的排序 | 數字 |
繼承它的角色 | 角色列表 |
被授予的使用者 | 使用者集合 |
五、使用者(User)
一個使用者有且僅屬於一個公司。如果兩個公司下存在對應相同賬號的使用者,那麼這是兩個使用者。一個使用者可以存在在多個體繫結構中,但在一個體繫結構中只能屬於一個組織機構。一個使用者可以擁有一個體繫結構下的多個角色。使用者的屬性有以下內容:
屬性 | 型別 |
---|---|
使用者賬號 | 帳號 |
顯示名稱 | 字串 |
所屬公司 | 公司 |
所直屬的組織結構 | (不同體系結構下)組織機構集合 |
所直接擁有的角色 | 角色集合 |
六、域(Domain)
域是用來區分不同賬號的一個集合。在一個域中是不允許存在相同的賬號的。不同域可以有重名的賬號,這些賬號只是名稱相同但不是同一賬號,因為其所屬不同的域。 域與公司是兩個概念。公司下有該公司獨立的組織機構與使用者群體,而域下包含的是一套系統賬號。我們常見的“網易通行證”、“Google帳號”、“QQ帳號”、“微博帳號”都屬於域帳號,其對應的域可以分別是“163.com或126.com”、“gmail.com”、“qq”、“weibo”。而“萬科”是個公司,其下有自己的組織架構與員工(使用者)集合。
七、帳號(Account)
帳號是使用者在應用系統中的標識。帳號是由賬號名稱和所在域構成,其表示方式可以用“[email protected]”來表示,有時也用“qq\12345678”這種方式表示。 帳號與使用者不是相同的概念。但是在我們要討論的許可權管理的場景下這兩者是有關係的。比如,“萬科”公司為了經營管理需要購置了一套XX管理系統,登入系統的使用者主要就是從事相關業務的員工,並要求其員工(使用者)都用郵箱帳號來作為XX管理系統的登入帳號。但是每個員工使用的郵箱都不相同,有用“163郵箱”的、有用“gmail郵箱”的、有用“qq郵箱”的…… 從功能角度來說,賬號是用來做登入認證的,而使用者是用來做授權的。帳號的屬性有以下內容:
屬性 | 型別 |
---|---|
帳號 | 字串 |
所屬域 | 域 |
顯示名稱 | 字串 |
密碼 | 字串 |
狀態 | 數字 |
八、帳號關聯(Relation)
帳號關聯是所屬不同域的賬號之間建立的關聯關係,這種關聯關係不是一對一的關聯,而是多個賬號間的關聯。不同域的賬號與賬號之間一般是存在關聯的。比如一個人的郵箱是“[email protected]”、QQ號碼是“12345678”、微博帳號是“zhang_san”、手機號碼是“13812345678”……這些都是所屬不同域的不同賬號。這些帳號都可以認證,其認證結果都可以驗證這個人的身份。現在有一個論壇,這個論壇支援163郵箱、QQ、微博或手機登入。這個論壇使用者可以繫結任何一類帳號,也可以同時繫結多種帳號,其中任一繫結的帳號認證通過都可以認證使用者身份。那麼“帳號關聯”就是描述這些賬號屬於論壇同一個使用者的這麼一種關係。可以把“帳號關聯”想象成一個“鏈”,這個“鏈”上把若干個賬號串接了起來,這些帳號是有關聯關係的。同一“鏈”中一個域只能存在一個賬號,不存在兩個賬號所屬同一個域的情況。“賬號關聯”的來源可能有多處,每一處來源都會形成一個“鏈”,比如在論壇A裡記錄了張三手機和郵箱的賬號關聯,社交平臺B中記錄了張三郵箱與QQ號的賬號關聯,這是兩個“鏈”。
九、應用(Application)
應用是為了實現某項業務的若干功能的集合,也是傳統意義上的應用系統的概念。應用系統由若干功能組合,我們把功能可以當作是一種資源。應用的屬性有以下內容:
屬性 | 型別 |
---|---|
應用ID | 字串 |
應用名稱 | 字串 |
應用金鑰 | 字串 |
功能集合 | 資源列表 |
十、資源(Resource)
應用下有若干資源,有些資源是使用者介面、有些資源是介面服務、有些資源是資料服務、有些資源是圖片等靜態資源……這些都是不同的資源型別。資源通過樹形結構的形式進行排列和組織,並掛接在應用下面可供索引和使用。資源的屬性有以下內容:
屬性 | 型別 |
---|---|
資源名稱 | 字串 |
資源路徑 | 字串 |
資源型別 | 字串 |
所屬應用 | 應用 |
上級資源 | 資源 |
上級資源路徑下排序 | 數字 |
下級資源 | 資源列表 |
許可權物件是許可權授予的記錄。許可權物件除了基本名稱等資訊外主要包括兩部分:許可權所有者和所有者被授予的許可權。 許可權所有者可以是若干個指定的使用者、可以是若干個指定的組織機構、還可以是若干個指定的角色。 所有者被授予的許可權一般是指定的資源的集合。許可權物件的屬性有以下內容:
屬性 | 型別 |
---|---|
許可權物件編碼 | 字串 |
許可權物件名稱 | 字串 |
許可權所有者 | 使用者集合&組織機構集合&角色集合 |
所擁有許可權 | 資源集合 |