郭甜莉 謝晶 龍海輝
摘? ?要:為了解決高校院系信息化過程中出現(xiàn)的問題,文章基于RBAC的權(quán)限控制體系,提出了PBAC的設(shè)計理念,引入崗位和部門概念,給出了一整套權(quán)限管理解決方案。文章闡述了授權(quán)系統(tǒng)總體架構(gòu)和詳細設(shè)計,同時將授權(quán)功能細化,建設(shè)統(tǒng)一授權(quán)系統(tǒng)和分級授權(quán)系統(tǒng)。用戶可以從兩條路徑獲取應(yīng)用系統(tǒng)的操作權(quán)限,通過為應(yīng)用和崗位設(shè)置管理崗,實現(xiàn)了崗位和角色的再分級。
關(guān)鍵詞:角色;崗位;部門;統(tǒng)一權(quán)限管理;分級授權(quán)
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1673-8454(2020)09-0040-04
一、背景和需求
為了進一步提高院系管理信息化程度,更好地實現(xiàn)“院為實體”的理念,為學(xué)校“雙一流”建設(shè)提供有力支撐,上海交通大學(xué)網(wǎng)絡(luò)信息中心為校內(nèi)業(yè)務(wù)系統(tǒng)提供接入上海交通大學(xué)統(tǒng)一身份認證服務(wù)(以下簡稱“jAccount服務(wù)”),允許校內(nèi)新開發(fā)業(yè)務(wù)系統(tǒng)通過jAccount進行身份認證。當前各個業(yè)務(wù)系統(tǒng)為了實現(xiàn)對登錄用戶的訪問控制,各自開發(fā)獨立的訪問控制模塊,這帶來了以下兩個問題:
1.訪問控制模塊重復(fù)開發(fā),安全性無法保障
訪問控制是業(yè)務(wù)系統(tǒng)的基本組成之一,且校內(nèi)各業(yè)務(wù)系統(tǒng)用戶訪問權(quán)限需求存在共性,是可以作為公共邏輯模塊使用的。而且由于各個開發(fā)團隊經(jīng)驗差異,訪問控制模塊開發(fā)安全性沒有保障。這不但增加了業(yè)務(wù)系統(tǒng)開發(fā)成本,也增加了校內(nèi)安全小組監(jiān)控風(fēng)險。
2.用戶的訪問權(quán)限分散管理,增加運維難度
各個業(yè)務(wù)使用獨立的訪問控制模塊,則無法共享一些用戶的訪問權(quán)限。而各個院系作為交大的組成部分,用戶權(quán)限關(guān)聯(lián)性是全校性的,重復(fù)配置增加了管理成本。同時,分散的訪問權(quán)限管理,讓在全校范圍管理一個用戶訪問權(quán)限無法實現(xiàn)。
隨著院系信息化的繼續(xù)推進,上述問題越發(fā)突出,已經(jīng)成為校內(nèi)信息化安全問題主要隱患。為了解決上述問題,加快推進院系信息化,設(shè)計和實現(xiàn)一個高性能、高可用的統(tǒng)一權(quán)限管理平臺勢在必行。
二、設(shè)計與實現(xiàn)
為了增強各個業(yè)務(wù)系統(tǒng)用戶訪問權(quán)限管理的安全性,提高用戶權(quán)限管理效率和降低業(yè)務(wù)系統(tǒng)開發(fā)成本,本文提出了構(gòu)建校內(nèi)統(tǒng)一權(quán)限管理平臺,為校內(nèi)各個業(yè)務(wù)系統(tǒng)提供權(quán)限管理服務(wù)支持。
1.關(guān)聯(lián)系統(tǒng)
jAccount統(tǒng)一認證服務(wù)。jAccount是上海交通大學(xué)網(wǎng)絡(luò)信息中心開發(fā)的用戶認證體系。通過就Account認證體系,可以在Web應(yīng)用中實現(xiàn)單點登陸,同時也可以為校內(nèi)第三方應(yīng)用提供統(tǒng)一身份認證和單點登陸服務(wù)[1]。
2.基于PBAC(policy-based access control)的權(quán)限管理架構(gòu)
高校業(yè)務(wù)系統(tǒng)常用的授權(quán)系統(tǒng)是基于角色的權(quán)限訪問控制(Role-Based Access Control),簡稱RBAC。在RBAC中,權(quán)限與角色相關(guān)聯(lián),用戶通過成為適當角色的成員而得到這些角色的權(quán)限。但是在實際應(yīng)用中,僅僅對可以執(zhí)行的操作進行限制是不夠的,比如在校級系統(tǒng)/應(yīng)用中,不同院系的用戶,同一個操作可操作的對象是有不同的,而這種限制往往是基于用戶所處的院系部門的不同而存在差異的。RBAC訪問控制體系是無法滿足此需求的。
因此本方案采用了基于PBAC體系的權(quán)限架構(gòu),使用院系部門(以下簡稱部門)作為權(quán)限的策略,限制權(quán)限可以訪問的數(shù)據(jù)范圍。
(1)術(shù)語定義
①權(quán)限(Rights)
權(quán)限管理的最小單位,定義了業(yè)務(wù)系統(tǒng)/應(yīng)用的最小需要管理的操作集合,比如刪除信息操作,指定菜單查看權(quán)限等[2]。
②角色(Roles)
權(quán)限的集合,是權(quán)限分配的最小單位[2]。比如系統(tǒng)管理員。角色是系統(tǒng)/應(yīng)用隔離的,即本系統(tǒng)/應(yīng)用的角色僅本系統(tǒng)內(nèi)可用。
③崗位(Posts)
跨系統(tǒng)/應(yīng)用的角色,即允許多個系統(tǒng)/應(yīng)用共用一個崗位配置。在我們的實踐中,“崗位”和現(xiàn)實高校中實際的崗位概念通常也是對應(yīng)的,比如,我們可以定義一個“崗位”為“教務(wù)員”或者“設(shè)備管理員”等[3]。目前崗位的常用應(yīng)用場景為“一門式”流程平臺中各類流程應(yīng)用的審批人配置。
④部門(Department)
權(quán)限管理采用部門限制策略,以實現(xiàn)權(quán)限可以操作的數(shù)據(jù)范圍限定。部門是樹形層級關(guān)系,限定數(shù)據(jù)最小范圍依賴于部門樹葉子節(jié)點。
⑤全局角色(GlobalRoles)[3]
崗位往往是有部門限制的,本文將崗位、組織機構(gòu)的二維映射關(guān)系稱為全局角色。當組織機構(gòu)為空時,二維的全局角色退化為一維的崗位,在實際情況中,表示為不屬于任何組織機構(gòu)的全局性崗位[3]。
⑥用戶(User)
業(yè)務(wù)系統(tǒng)的用戶。通過給用戶分配角色/崗位來實現(xiàn)用戶的訪問權(quán)限配置。
(2)權(quán)限管理設(shè)計
本文提出的權(quán)限管理框架采用角色、部門、用戶三元組結(jié)構(gòu)來管理權(quán)限。如圖1所示,崗位和部門的關(guān)系稱為全局角色,是二元組關(guān)系(崗位,部門);角色和全局角色的關(guān)系稱為角色的全局角色,是三元組關(guān)系(角色,崗位,部門);我們通過給用戶設(shè)置崗位,即設(shè)置(用戶,崗位,部門)三元組關(guān)系,從而使用戶擁有相關(guān)角色。
3.系統(tǒng)架構(gòu)和實現(xiàn)
(1)系統(tǒng)總體架構(gòu)和數(shù)據(jù)庫設(shè)計
Spring Boot開源框架可以簡化Spring 開發(fā)框架的開發(fā)、配置、調(diào)試、部署工作,同時在項目內(nèi)集成了大量易于使用且實用的基礎(chǔ)框架[4-5]。授權(quán)系統(tǒng)后端基于Spring Boot和Spring Data JPA框架來實現(xiàn),前端使用了Vue.js,采用前后端分離的開發(fā)模式。后端系統(tǒng)包括應(yīng)用層、服務(wù)層、持久層和公共服務(wù)類等。應(yīng)用層包括控制器和視圖模型等內(nèi)容,服務(wù)層包括服務(wù)接口和實現(xiàn)類,持久層包括Dao接口和實現(xiàn)類。除此之外,還有統(tǒng)一登錄、權(quán)限檢查、統(tǒng)一異常處理、日志服務(wù)、攔截器、工具包等公共類。授權(quán)系統(tǒng)代碼保管到git倉庫,可以多人同時開發(fā)系統(tǒng),方便檢查代碼質(zhì)量和控制項目版本。測試環(huán)境和生產(chǎn)環(huán)境采用Jenkins持續(xù)部署,簡化發(fā)布流程。
授權(quán)系統(tǒng)選擇SqlServer數(shù)據(jù)庫。如圖2所示,數(shù)據(jù)庫表主要包括兩類:一類是基礎(chǔ)資源表,有用戶表、組織機構(gòu)表、崗位表、應(yīng)用表、權(quán)限表、角色表等,主要是保存資源的基本信息;一類是關(guān)系表,保存資源之間的關(guān)系。在做刪除操作的時候,要注意級聯(lián)刪除關(guān)系表的數(shù)據(jù),以保持數(shù)據(jù)的一致性。
(2)權(quán)限管理實現(xiàn)
①用戶權(quán)限設(shè)置
用戶對業(yè)務(wù)系統(tǒng)的訪問權(quán)限有兩個來源,一是來源于角色,二是來源于崗位,如圖3所示。從用戶到權(quán)限有兩條配置的路徑,給用戶直接設(shè)置角色更為簡單,但是沒法限制崗位和部門信息;給用戶設(shè)置三元組關(guān)系的方法更為復(fù)雜,但是更為細致了限制了用戶的全局角色,保障了權(quán)限不被過度使用。
以院系信息化平臺為例,管理員需要給每個學(xué)院的人事干事設(shè)置院系人事管理角色,不同學(xué)院的人事干事?lián)碛械臋?quán)限類似,但是可以訪問的數(shù)據(jù)范圍是不同的,每個人只能訪問到自己學(xué)院的人事信息?;谶@個需求,管理員選擇通過第二條路徑來給用戶授權(quán)。具體實現(xiàn)的步驟如圖4所示。第一步,建立人事干事角色,設(shè)置角色的權(quán)限,同時將角色與全局角色做映射;第二步,建立院系人事管理崗位,將崗位與部門做映射,即設(shè)置全局角色。在此基礎(chǔ)之上,為用戶設(shè)置崗位,指定可以管理的院系,即為用戶設(shè)置全局角色。
②應(yīng)用管理模塊
權(quán)限系統(tǒng)為每個信任應(yīng)用提供應(yīng)用權(quán)限管理功能,主要結(jié)構(gòu)見圖5。用戶通過應(yīng)用信息管理模塊維護應(yīng)用基本信息,權(quán)限管理模塊維護應(yīng)用的權(quán)限定義。權(quán)限按照功能可以分為操作型權(quán)限和菜單型權(quán)限。操作型權(quán)限定義應(yīng)用的一個原子操作,常用于定義按鈕權(quán)限。菜單型權(quán)限用于定義應(yīng)用菜單,支持菜單路徑,菜單順序等屬性設(shè)置。角色管理用于定義應(yīng)用角色,定義的角色將通過分級授權(quán)模塊授權(quán)給應(yīng)用運維人員,以維護角色內(nèi)用戶的調(diào)整。全局角色映射管理模塊用于管理崗位與角色的關(guān)聯(lián)關(guān)系,允許指定崗位用戶共享指定角色權(quán)限。
③崗位管理模塊
崗位在授權(quán)系統(tǒng)中主要有兩個作用:一是通過崗位來管理應(yīng)用系統(tǒng)的權(quán)限,實現(xiàn)角色的分級授權(quán);二是通過設(shè)置崗位的管理關(guān)系,實現(xiàn)崗位的分級授權(quán)。除此之外,崗位在其他的業(yè)務(wù)系統(tǒng)中也起到非常重要的作用。因此在授權(quán)系統(tǒng)中設(shè)計了查詢崗位詳情的功能。如圖6所示,授權(quán)系統(tǒng)從不同維度列出了和崗位相關(guān)聯(lián)的業(yè)務(wù)內(nèi)容。
(3)授權(quán)功能細化
前面章節(jié)提到,需要從整體上控制所有應(yīng)用的授權(quán),本文把負責(zé)這個過程的管理員稱為一級管理員。如果把上述所有資源的維護和關(guān)系的建立都交給一級管理員負責(zé),可以預(yù)見工作量之大和維護的困難。因此在實際構(gòu)建系統(tǒng)時,將授權(quán)系統(tǒng)細化為兩個應(yīng)用:統(tǒng)一授權(quán)系統(tǒng)和分級授權(quán)系統(tǒng)。統(tǒng)一授權(quán)系統(tǒng)集中管理崗位、應(yīng)用、組織機構(gòu)等基礎(chǔ)資源,同時可以設(shè)置崗位的管理崗、應(yīng)用的管理崗。分級授權(quán)系統(tǒng)負責(zé)管理應(yīng)用的權(quán)限和角色,為用戶賦予角色、分配崗位,管理員通過指派管理崗來給用戶授權(quán),崗位和角色都可以再分級。本文將分級授權(quán)系統(tǒng)的管理員稱為二級管理員。
①統(tǒng)一授權(quán)系統(tǒng)
如圖7所示,統(tǒng)一授權(quán)系統(tǒng)由五個功能模塊組成。組織機構(gòu)管理包括組織機構(gòu)同步和修改信息等功能;崗位管理包括設(shè)置崗位和崗位分類、設(shè)置全局角色、設(shè)置管理崗等功能;應(yīng)用管理包括應(yīng)用系統(tǒng)同步、設(shè)置管理崗等功能;用戶查詢包括查詢用戶兩個權(quán)限來源信息、查詢用戶已設(shè)置崗位和崗位詳情等功能;日志查詢則是查詢管理員對基礎(chǔ)資源的操作記錄。
②分級授權(quán)系統(tǒng)
分級授權(quán)系統(tǒng)設(shè)計了四個模塊的功能,如圖8所示。權(quán)限管理包括權(quán)限的新增、刪除、修改、查詢等操作;角色管理包括角色的新增、刪除、修改、查詢等操作;賦予角色包括為用戶賦予角色和為角色分配用戶等功能;指派崗位包括為用戶指派崗位、為崗位分配用戶和查詢崗位詳情等功能。其中賦予角色模塊,為用戶賦予角色功能適用于為一個用戶同時賦予多個角色的場景;為角色分配用戶則適用于為一個角色分配多個用戶的場景。指派崗位的兩個功能設(shè)計與此類似,不再贅述。
③分級授權(quán)實例
二級管理員登錄分級授權(quán)系統(tǒng)之后,系統(tǒng)會根據(jù)當前登陸用戶擁有的崗位權(quán)限來判斷可以管理的應(yīng)用和可以指派的崗位。圖9展示了二級管理員管理權(quán)限的獲取過程:一級管理員為應(yīng)用A設(shè)置管理崗1,同時設(shè)置管理崗1可以管理業(yè)務(wù)崗1和業(yè)務(wù)崗2。之后,一級管理員為二級管理員指派管理崗1,指定可以管理所有院系。那么,此二級管理員就可以在分級授權(quán)系統(tǒng)中管理應(yīng)用A的權(quán)限和角色,可以對角色和可以管理的崗位實現(xiàn)再分級。
三、結(jié)束語
本文闡述的授權(quán)系統(tǒng)采用了基于PBAC體系的權(quán)限架構(gòu),使用院系部門作為權(quán)限的策略,限制權(quán)限可以訪問的數(shù)據(jù)范圍。同時將授權(quán)功能細化,建設(shè)統(tǒng)一授權(quán)系統(tǒng)和分級授權(quán)系統(tǒng)。其中前者集中管理崗位、應(yīng)用等基礎(chǔ)資源,后者管理應(yīng)用的權(quán)限和角色,同時實現(xiàn)了崗位和角色的再分級。我們引入管理崗的概念,通過建設(shè)應(yīng)用的管理崗和崗位的管理崗將兩個系統(tǒng)緊密聯(lián)系在一起。統(tǒng)一授權(quán)系統(tǒng)和分級授權(quán)系統(tǒng)聯(lián)合使用,可以很好地解決應(yīng)用系統(tǒng)權(quán)限管理問題。希望本文的內(nèi)容,可以給其他高校和企業(yè)的權(quán)限管理帶來一定的啟發(fā)和幫助。
參考文獻:
[1]白雪松,茅維華.身份與權(quán)限體系關(guān)鍵技術(shù)的總體設(shè)計與實踐[J].中山大學(xué)學(xué)報(自然科學(xué)版),2009,48(S1):260-263.
[2]Ramzi A. Haraty,Mirna Naous. Role-Based Access Control modeling and validation[C]. 2013 IEEE Symposium on Computers and Communications (ISCC).
[3]白雪松,蔣磊宏,茅維華.全局角色在統(tǒng)一授權(quán)體系中的應(yīng)用[J].實驗技術(shù)與管理,2011,28(6):116-118,141.
[4]王永和,張勁松,鄧安明等.Spring Boot研究和應(yīng)用[J].信息通信,2016(10):91-94.
[5]Phillip Webb,Dave Syer, Josh Long et al. Spring Boot Reference Guide [DB/OL]. https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html/.
(編輯:王曉明)