單點系統(tǒng)中如何防止超級權(quán)限泛濫
導(dǎo)語:權(quán)限管理在一個單點管理系統(tǒng)中是不可或缺的重要組成部分,權(quán)限控制可以實現(xiàn)不同身份登錄驗證后所擁有資源的不同,一旦用戶權(quán)限分配或管理不適當,必將給系統(tǒng)帶來潛在的威脅,甚至造成不可預(yù)計的損失。本文作者從單點系統(tǒng)介紹出發(fā),對權(quán)限設(shè)計需要注意的問題進行了分析說明,供大家一同參考和學(xué)習(xí)。
一、單點系統(tǒng)目的
單點登錄(Single Sign On),簡稱為 SSO,是比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。
單點登錄及統(tǒng)一授權(quán)管理實現(xiàn)了統(tǒng)一的用戶管理、應(yīng)用系統(tǒng)單點登錄、集中的應(yīng)用管理、統(tǒng)一的授權(quán)管理。用戶采用單點登錄方式后,實現(xiàn)用戶訪問系統(tǒng)時,能夠一次登錄,多次使用,全網(wǎng)通行,不再需要每次輸入用戶名稱和用戶密碼,也不需要牢記多套用戶名稱和用戶密碼,能夠很好的改善用戶對系統(tǒng)的使用體驗,同時也大大地降低了安全的風(fēng)險和管理的消耗。
同時,提供唯一的用戶身份授權(quán)服務(wù),各應(yīng)用只需遵循統(tǒng)一授權(quán)服務(wù)調(diào)用接口即可實現(xiàn)用戶身份的授權(quán)驗證過程,從而避免在各個應(yīng)用系統(tǒng)的身份信息數(shù)據(jù)庫的數(shù)據(jù)同步更新,用戶只須在統(tǒng)一授權(quán)管理系統(tǒng)中注冊或改變自己注冊信息即可,保證了數(shù)據(jù)的完整性,減少了數(shù)據(jù)冗余,同時實現(xiàn)了基于多個應(yīng)用系統(tǒng)的單點登錄,提高系統(tǒng)的易用性。
二、單點系統(tǒng)主要建設(shè)內(nèi)容
單點系統(tǒng)的整體功能框架,如下圖:
1. 單點登錄
單點登錄允許用戶只認證登錄一次,就可以訪問網(wǎng)絡(luò)內(nèi)所有經(jīng)授權(quán)的應(yīng)用系統(tǒng)。
(1)單點登錄
網(wǎng)內(nèi)用戶只需要在任意一個接入單點登錄與統(tǒng)一授權(quán)管理系統(tǒng)的應(yīng)用系統(tǒng)中登錄,就可以直接訪問所有網(wǎng)絡(luò)內(nèi)經(jīng)授權(quán)的應(yīng)用系統(tǒng),享受應(yīng)用系統(tǒng)提供的信息和業(yè)務(wù)服務(wù)。
(2)單點認證
用戶可以基于用戶名/密碼的方式,也可以基于域帳號方式,還可以基于CA證書登錄系統(tǒng)。用戶在登錄時可以選擇采用以上三種方式的任意一種方式。
用戶可以查看個人信息,修改密碼,并可以配置擴展屬性中的密碼屬性值。
支持用戶密碼策略設(shè)定(可以配置密碼長度,是否包含字母及字母的長度,是否包含數(shù)字及數(shù)字的長度,是否包含符號及符號的長度等),根據(jù)設(shè)定的策略來約束密碼設(shè)置。
(3)單點注銷
網(wǎng)內(nèi)用戶只需要在任意一個接入單點登錄與統(tǒng)一授權(quán)管理系統(tǒng)的應(yīng)用系統(tǒng)中注銷用戶信息,就可以退出曾經(jīng)或正在訪問的所有應(yīng)用系統(tǒng)。
平臺管理員可以實時查看統(tǒng)一用戶與身份認證系統(tǒng)中的在線用戶,并可以進行用戶強制注銷。
單點登錄時序圖:
2. 機構(gòu)用戶管理
統(tǒng)一授權(quán)管理系統(tǒng)提供創(chuàng)建和管理機構(gòu)、部門、用戶的功能。通過創(chuàng)建與現(xiàn)實組織結(jié)構(gòu)相符的機構(gòu)、部門、用戶,并給用戶賦予某種角色,使之擁有給定的權(quán)限。機構(gòu)在統(tǒng)一用戶與身份認證系統(tǒng)中是一個獨立的組織單位,部門、用戶、角色是以機構(gòu)為單位存儲。
(1)機構(gòu)管理
機構(gòu)管理模塊以分層次、多結(jié)構(gòu)的方式管理各種復(fù)雜的組織機構(gòu),政府機構(gòu)建立機構(gòu)的部門結(jié)構(gòu)和人員結(jié)構(gòu)??晒芾淼膶ο笥校簷C構(gòu)、行業(yè)、部門、人員組。
除此之外,允許建立復(fù)雜的人員組織關(guān)系(一個職員可以被組織在多個部門中)。
通過組織機構(gòu)管理模塊,實現(xiàn)政府組織和人員管理,并可以系統(tǒng)的角色、用戶進行關(guān)聯(lián),實現(xiàn)基于組織機構(gòu)管理的強大的角色權(quán)限安全體系功能,滿足內(nèi)部網(wǎng)的功能需求。
通過此功能可以實現(xiàn)添加或刪除機構(gòu)和部門、機構(gòu)和部門信息的改變、查詢機構(gòu)和部門等相關(guān)信息,是為用戶分配應(yīng)用角色以及權(quán)限的基礎(chǔ)。
(2)用戶管理
用戶管理功能是單點登錄系統(tǒng)中的核心功能,管理著機構(gòu)和應(yīng)用系統(tǒng)中所有的相關(guān)用戶數(shù)據(jù),通過此功能可以實現(xiàn)添加或刪除用戶、用戶信息的改變、查詢用戶相關(guān)信息,為用戶增加角色以及權(quán)限等。
各機構(gòu)系統(tǒng)管理員可以添加、刪除、修改、移動本機構(gòu)下用戶基本信息,可以進行用戶擴展屬性處理,配置各個業(yè)務(wù)應(yīng)用系統(tǒng)已有用戶帳號和密碼,建立統(tǒng)一用戶與身份認證系統(tǒng)與各個業(yè)務(wù)系統(tǒng)的用戶映射關(guān)系,賦予用戶關(guān)聯(lián)角色。
3. 權(quán)限管理
(1)角色管理
管理不同系統(tǒng)中不同的人所扮演的不同角色。由于不同系統(tǒng)關(guān)聯(lián)不同機構(gòu),因此角色分為應(yīng)用角色(按照機構(gòu)應(yīng)用定義)、平臺角色(跨機構(gòu)跨應(yīng)用)。
通過此功能可以實現(xiàn)添加或刪除角色、角色信息的改變、查詢角色相關(guān)信息,為后續(xù)用戶分配角色權(quán)限等。
即角色是人員與權(quán)限的集合,多個人員可以同屬一種角色。比如:處級、副處級、辦事員,皆為角色。角色是可繼承的,對于一個分級的權(quán)限實現(xiàn),某個角色通過“繼承”就已經(jīng)直接獲得其父角色所擁有的所有“權(quán)限集合”。用戶也可以隸屬于角色,用戶繼承該角色所擁有的權(quán)限。只要某用戶直接或者間接的屬于某個角色,那么它就具備這個角色的所有操作許可。
用戶與角色是多對多的關(guān)系。即一個用戶可以屬于多個角色之中,一個角色可以包括多個用戶。子角色與父角色是多對一的關(guān)系。角色對系統(tǒng)的作用實質(zhì)上就是提供了一個用戶載體和權(quán)限載體。
(2)角色授權(quán)管理
角色(Role)是一組訪問權(quán)限的集合,當需要對一組用戶賦予相同的權(quán)限時,可以使用角色來授權(quán)。基于角色的授權(quán)可以大大簡化授權(quán)流程,降低授權(quán)管理成本。當需要對用戶授權(quán)時,應(yīng)當優(yōu)先考慮是否應(yīng)該使用角色來完成。
通過此功能可以實現(xiàn)角色關(guān)聯(lián)應(yīng)用系統(tǒng)資源權(quán)限。
4. 應(yīng)用管理
應(yīng)用管理是管理機構(gòu)下中所有應(yīng)用系統(tǒng)相關(guān)應(yīng)用信息數(shù)據(jù),例如:資源管理、權(quán)限功能等,通過此功能可以實現(xiàn)添加或刪除應(yīng)用、應(yīng)用信息的改變、查詢應(yīng)用相關(guān)信息,是為用戶分配應(yīng)用角色以及權(quán)限的基礎(chǔ)。并提供創(chuàng)建和管理第三方應(yīng)用程序的功能。對接入的各應(yīng)用系統(tǒng)進行有效的監(jiān)督和控制,并面向所有用戶定制應(yīng)用系統(tǒng)權(quán)限管理模型,制定權(quán)限規(guī)則和權(quán)限分配策略,實現(xiàn)不同用戶訪問不同應(yīng)用系統(tǒng)。
(1)應(yīng)用程序管理
應(yīng)用程序管理負責(zé)統(tǒng)一管理第三方應(yīng)用程序,各機構(gòu)系統(tǒng)管理員可以在本機構(gòu)下添加、刪除、修改應(yīng)用程序基本信息。
(2)應(yīng)用程序分類
應(yīng)用程序分類提供應(yīng)用程序組管理功能,包括添加、刪除、修改應(yīng)用程序組信息,并將同屬于一類的應(yīng)用程序組織在一起進行管理及展示。
(3)應(yīng)用權(quán)限設(shè)置
應(yīng)用權(quán)限設(shè)置提供權(quán)限設(shè)置和移除功能,根據(jù)設(shè)置好的權(quán)限組和權(quán)限元素,為角色或用戶授予或拒絕應(yīng)用程序或應(yīng)用程序組的相關(guān)權(quán)限。
(4)應(yīng)用訪問策略
應(yīng)用訪問策略為應(yīng)用程序或應(yīng)用程序組提供訪問策略設(shè)置功能,如限制可訪問的時間及IP等。
三、單點系統(tǒng)如何做權(quán)限
權(quán)限的目的:防止以后誤操作、人為破壞、數(shù)據(jù)泄露等,且不同用戶類型所持有不同的權(quán)限能看到及操作不同的數(shù)據(jù)來保障數(shù)據(jù)、業(yè)務(wù)安全。
權(quán)限管理是系統(tǒng)重要組成部分,其最常見模式RBAC模型:用戶、角色、權(quán)限,即一個用戶賬號對應(yīng)多個角色,每個角色對應(yīng)相應(yīng)的權(quán)限集(RBAC模型),這種模型主要是通過角色可以實現(xiàn)靈活且多樣的的權(quán)限操作需求。
因此我們的數(shù)據(jù)庫設(shè)計模型,描述如下圖關(guān)系如下圖:
而單點系統(tǒng)會涉及應(yīng)用管理,其應(yīng)用管理就是提供創(chuàng)建和管理第三方應(yīng)用程序的功能。對接入的各應(yīng)用系統(tǒng)進行有效的監(jiān)督和控制,并面向所有用戶定制應(yīng)用系統(tǒng)權(quán)限管理模型,制定權(quán)限規(guī)則和權(quán)限分配策略,實現(xiàn)不同用戶訪問不同應(yīng)用系統(tǒng)。
即一個用戶賬號對應(yīng)多個角色,每個角色對應(yīng)相應(yīng)的權(quán)限集,每個權(quán)限集是對應(yīng)相應(yīng)的應(yīng)用,依然通過角色可以實現(xiàn)靈活且多樣的的權(quán)限操作需求。
因此我們的數(shù)據(jù)庫設(shè)計模型,描述如下圖關(guān)系如下圖:
四、超級權(quán)限泛濫的坑點及對應(yīng)的解決方案
1. 假設(shè)我現(xiàn)在新增一個角色,該角色不小心被賦予了超級權(quán)限(即角色授權(quán)權(quán)限),并且賦予某一類用戶后,這樣最終角色權(quán)限維護亂了,權(quán)限也變得形同虛設(shè)
解決方案一:對角色設(shè)置不同安全級別
如:
- 如果為應(yīng)用管理員:可擁有使用授權(quán)應(yīng)用權(quán)限(即超級權(quán)限);
- 如果為一般管理員:無使用授權(quán)應(yīng)用權(quán)限,使得的權(quán)限無法下放。
給角色分為好幾個等級,每個等級權(quán)限不同,從而實現(xiàn)更細粒度的權(quán)限管理。
即應(yīng)用管理員、一般角色的角色等級用例圖:
解決方案二:采用角色繼承等級方案進行限制權(quán)限下放,即一個角色可以從另一個角色繼承許可權(quán)或者轉(zhuǎn)讓權(quán)
角色間的繼承關(guān)系可分為一般繼承關(guān)系和受限繼承關(guān)系。一般繼承關(guān)系允許角色間的多繼承,受限繼承關(guān)系則進一步要求角色繼承關(guān)系是一個樹結(jié)構(gòu)。因此繼承的角色就算不小心被賦予了超級權(quán)限(即角色授權(quán)權(quán)限),用戶依然無權(quán)限對其他模塊操作。
2. 角色分配中角色未作角色過濾,一旦超級權(quán)限角色被賦予了某一個人,這樣最終角色權(quán)限也將變得形同虛色
- 解決方案一:給角色分為好幾個等級,每個等級權(quán)限不同,從而實現(xiàn)用戶只能分配自己所持有的角色等級相同的角色,使得的超級權(quán)限無法下放。
- 解決方案二:采用角色繼承等級方案進行限制權(quán)限下放,即一個角色可以從另一個角色繼承許可權(quán)或者轉(zhuǎn)讓權(quán)。角色間的繼承關(guān)系可分為一般繼承關(guān)系和受限繼承關(guān)系。一般繼承關(guān)系允許角色間的多繼承,受限繼承關(guān)系則進一步要求角色繼承關(guān)系是一個樹結(jié)構(gòu)。
一般繼承關(guān)系如下圖:
受限繼承關(guān)系如下圖:
本文由 @黃泡泡 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自?Unsplash,基于 CC0 協(xié)議
滿滿干貨~~