李 貌,朱福喜,江雪鋒
(1.武漢學院信息工程學院,湖北 武漢 430212;2.廣州頃時科技有限公司,廣東 廣州 510600)
權限管理是人力資源管理系統(tǒng)中的重要組成部分,主要目的是對系統(tǒng)進行權限控制與管理。若權限控制缺失或操作不當,會造成系統(tǒng)信息泄露及系統(tǒng)漏洞,對使用者造成難以預估的損失。目前的權限管理系統(tǒng),如支持多級用戶體系的訪問控制模型、基于角色—屬性的訪問控制模型、跨租戶的優(yōu)化訪問控制模型等[1-4],存在管理方式復雜、學習成本高、跨行業(yè)通用性差等問題,因此需要一套簡單、實用的權限管理服務。
另外,隨著信息化的發(fā)展,人力資源管理工作中融入了越來越多的新理念,打造高效、安全的信息化人力資源管理系統(tǒng)有著重要意義。云計算及相關技術的快速發(fā)展,尤其近年來亞馬遜、阿里巴巴等大型IT 廠商提供了安全的公有云服務[5-7],有效降低了企業(yè)在應用服務、大數(shù)據(jù)分析等方面的計算機軟硬件成本,加速了企業(yè)信息化建設。但是,目前大部分云端人力資源管理系統(tǒng)和云端信息管理系統(tǒng)[8-9]雖然應用了云計算、Docker 等技術,但沒有把云計算、Docker 和分布式通信管理框架等多項技術融合并應用于權限管理服務,在研發(fā)和部署周期、運維效率、服務規(guī)模等方面仍有提升的空間[10-11]。
因此,本文借鑒三元概念的訪問控制模型[12],以基于角色的訪問控制模型為基礎,設計了一個基于角色的人力資源管理系統(tǒng)權限管理服務模型。該模型摒棄了復雜的權限管理方式,在解決權限管理易用性問題的同時,融合云計算、Docker 及Tars 技術,支持公有云、私有云與混合云的部署方式,優(yōu)化Docker+Tars 的維護、升級流程,將權限管理服務的研發(fā)、部署周期縮短了近20%,可滿足系統(tǒng)在用戶訪問數(shù)量激增時擴充服務承載能力的需求。
訪問控制是指根據(jù)系統(tǒng)設置的安全規(guī)則及策略,使用戶只能訪問自己被授權的內容。訪問控制主要采用3 種方法:強制訪問控制(Mandatory Access Control)、自主訪問控制(Discretionary Access Control)與基于角色的訪問控制(Role-Based Access Control)[13]。
自主訪問控制是指對某一客體具有控制權的主體能夠把對該客體的訪問權或多種訪問權自主授予其他主體。在自主訪問控制模型中,權限分配包括3 個方面:①一個用戶對不同客體有不同權限;②不同用戶對同一客體有不同權限;③用戶可將自己擁有的權限不受任何限制地授予其他用戶。
強制訪問控制是指賦予每個主體(用戶、進程)和客體(文件、數(shù)據(jù))一個安全等級,通過比較不同安全等級限制主體對客體的訪問行為。強制訪問控制中比較經典的模型有Bell-LaPudula 和Biba 模型。Bell-LaPudula 模型的重要特性被稱為“下讀上寫”,可防止較低安全等級的主體訪問高安全等級的資源;Biba 模型則相反,其特性是“上讀下寫”,可保證信息的完整性和開放性。
基于角色的訪問控制模型在用戶與權限之間引入角色的概念,每一個角色有其對應權限,通過分配給每個用戶一個合適的角色以獲得相應權限。該模型表述了用戶、角色與權限之間的復雜關系,解決了在傳統(tǒng)訪問控制中主體始終與特定實體捆綁的問題,實現(xiàn)了主體的靈活授權。
基于角色的訪問控制模型相比其他兩個模型具有安全性高、靈活性強等優(yōu)勢,也是各類系統(tǒng)中使用最廣泛的訪問控制模型,如基于屬性與信任的訪問控制模型、基于策略機的訪問控制模型等[14-15]。因此,HR 系統(tǒng)權限管理服務引入基于角色的訪問控制模型,針對企業(yè)用戶習慣優(yōu)化實現(xiàn)方案,能夠解決權限管理方式復雜,以及系統(tǒng)易用性及安全性等方面問題。
1.2.1 云計算
云計算是一種計算模型,其核心是通過虛擬化技術實現(xiàn)硬件資源、網(wǎng)絡資源、存儲資源的統(tǒng)一調度與管理?;谔摂M化技術,可以出租服務的方式把這些資源及運行環(huán)境、應用和數(shù)據(jù)等通過網(wǎng)絡提供給用戶使用,用戶不需要自己購買服務器或安裝、維護軟件,只需按照使用的資源數(shù)量支付一定費用即可[16]。
云服務分為3 類:基礎設施即服務(IaaS)、平臺即服務(PaaS)與軟件即服務(SaaS)。IaaS 在云端為用戶提供基礎設施;PaaS 在云端為用戶提供可執(zhí)行環(huán)境、數(shù)據(jù)庫、網(wǎng)站服務器、開發(fā)工具等;SaaS 在云端為用戶提供軟件,為企業(yè)業(yè)務的快速增長提供有力支撐。如圖1 所示,用戶從云服務廠商租賃獲得虛擬機、存儲、網(wǎng)絡等資源,在此基礎上部署相應的權限管理應用程序,實現(xiàn)SaaS 服務,即可享受到權限管理系統(tǒng)提供的信息保護服務。
Fig.1 Cloud Service圖1 云服務
如圖2 所示,應用程序的云部署方式有3 種:公有云(Public Cloud)、私有云(Private Cloud)、混合云(Hybrid Cloud)。公有云是指第三方提供商為用戶提供的能夠直接使用的云;私有云是指企業(yè)內部建立的云,只供企業(yè)內部使用;混合云則是指系統(tǒng)中一部分使用公有云,一部分使用私有云,并將兩者結合。
Fig.2 Cloud deployment of APP圖2 應用程序云部署方式
私有云和混合云需要企業(yè)自己購買硬件設備,投入大,而利用國內外的公有云,如阿里云、騰訊云、亞馬遜云等,用戶只需支付少量服務費便能使用云端IT 基礎設施或服務,有效降低了企業(yè)前期軟硬件投入及后期維護成本。同時,云計算訪問控制技術能夠保證云端資源安全,降低用戶數(shù)據(jù)丟失或被竊取的風險[17],也不會給企業(yè)帶來更多安全隱患。因此,云平臺的權限管理服務建立在公有云IaaS 基礎設施之上,通過搭建權限管理服務應用程序實現(xiàn)云端SaaS 的權限管理服務,以減輕企業(yè)負擔、提升服務部署效率、降低運維難度。
1.2.2 Docker 技術
根據(jù)Docker 技術的主要思想,可將交付運行環(huán)境比作海運:操作系統(tǒng)如同一個貨輪,每一個應用軟件如同一個集裝箱,用戶通過標準化手段自由組裝這些集裝箱,形成運行環(huán)境[18]。
Docker 的關鍵技術包括分層、寫時復制等[19-21]。Dock?er 鏡像采用分層方式構建,每個鏡像由一系列鏡像層組成。寫時復制是指在多個容器之間共享鏡像,每個容器在啟動時并不需要單獨復制一份鏡像文件,只有在Docker 容器運行過程中,當文件系統(tǒng)發(fā)生變化時,才會把變化的文件內容寫入可讀寫層。如圖3 所示,封裝、寫時復制和分層機制的配合使用,減少了鏡像對磁盤空間的占用及容器啟動時間。
Fig.3 Layared mirroring and free assembly of Docker圖3 Docker 分層鏡像與自由組裝
Docker 的封裝、分層與鏡像管理機制可將操作系統(tǒng)、數(shù)據(jù)庫和其他依賴軟件按需結合,再通過構建權限管理服務鏡像、運行獨立容器的方式,使部署與遷移變得十分靈活、方便,服務啟動效率也得以提高。
1.2.3 Tars 分布式架構
Tars 是騰訊2018 年發(fā)布的開源產品之一,并被授予當年最佳原創(chuàng)開源軟件獎。其是一個基于名字服務的高性能遠程程序調用RPC 分布式開發(fā)框架,旨在幫助企業(yè)和個人快速構建穩(wěn)定、可靠的分布式系統(tǒng)。
Tars 從2008 年開始使用,經歷了10 余年的發(fā)展與完善,在上萬臺服務器上運行,承載了包括瀏覽器、手機管家、手機QQ、應用寶等100 多個業(yè)務。Tars 架構自下而上由5 部分組成:統(tǒng)一協(xié)議、公共組件、通信框架、平臺、運維。其中,統(tǒng)一協(xié)議組件即Tars 協(xié)議,支持C++、Java 等多種語言和多種平臺代碼的自動生成,降低了研發(fā)人員的學習成本;公共組件提供共用功能給各類業(yè)務模塊;通信框架組件負責RPC 調用與過載保護;平臺組件負責容錯容災管理以及服務器與應用間的負載均衡;運維組件主要負責圖形化Web 端監(jiān)控、集中配置管理、透明部署、高效發(fā)布等。
Fig.4 Flexible deployment of Tars圖4 Tars 靈活部署
Tars 支持多節(jié)點的復制多實例,即多個節(jié)點配置同一Server,同時也支持單節(jié)點配置多個Server,具備靈活的部署和優(yōu)秀的擴展能力。另外,Client 端通過Server 對象名,根據(jù)從Registry 上拉取的Server 路由信息間接訪問Server。在此過程中,Registry 依據(jù)Server 的負載情況,在多個Server中選取空閑的Server 路由信息,以分攤Server 的壓力,實現(xiàn)負載均衡。
綜上所述,本文將使用公有云、私有云或混合云提供的基礎設施,解決傳統(tǒng)部署方式下用戶前期建造成本高、后期運維支出大的問題。在業(yè)務不斷擴張的情況下,通過引入Tars 技術并與Docker 相結合,在提升系統(tǒng)研發(fā)與部署效率的同時,可實現(xiàn)應用間的負載均衡,為業(yè)務快速發(fā)展、用戶數(shù)量不斷增加所造成的系統(tǒng)服務能力不足等問題提供有效的解決方案。
權限管理服務的主要目的在于輔助企業(yè)等級管理和安全保護工作,幫助企業(yè)規(guī)范管理過程,以保證信息查詢、修改與導出的安全性?;诮巧臋嘞拊O計原則如下:
(1)合理性原則?;诮巧O計最重要的是定義合理的角色,同時兼具系統(tǒng)管理的靈活性。在基于角色的訪問控制模型中,用戶、角色、權限存在“多對多”關系,一個用戶可對應多個角色,同時一個角色也可包含多個用戶。因此,角色越多,關系越復雜,系統(tǒng)也會越復雜。合理的角色定義不僅有利于用戶缺陷分配與理解,而且可提升系統(tǒng)對用戶鑒權的計算能力。
(2)易用性原則。云端SaaS 的人力資源HR 系統(tǒng)要求系統(tǒng)操作簡單、使用方便,避免因引入較多角色與權限導致學習成本增加,影響系統(tǒng)推廣。
結合基于角色的訪問控制技術,本文設計一個“角色+功能”的權限管理云服務。該服務所需的權限管理功能包括6 個方面:①用戶管理權限,包括注冊、登錄、注銷、超時強制退出;②招聘管理權限,包括簡歷管理、面試流程管理;③員工管理權限,包括員工檔案的瀏覽、創(chuàng)建、編輯、刪除;④企業(yè)組織權限,包括組織和部門的瀏覽、創(chuàng)建、編輯、刪除;⑤培訓學習權限,包括員工內部培訓管理和外部培訓管理;⑥人事審批權限,包括人事審批和考勤審批。
為合理管理這些權限,避免因采取為每個用戶逐一劃分角色、設置權限的方式導致工作量過大的問題,引入用戶組的概念,給用戶組分配相應角色,并把具有同一類權限的所有用戶劃分到一個用戶組中,同一用戶組內的用戶繼承用戶組的角色。這樣將角色劃分變成用戶組劃分角色,將權限分配變成用戶關聯(lián)用戶組獲得權限,使權限分配更加簡單。具體到HR 系統(tǒng)中,把用戶劃分為管理員和普通員工兩個用戶組,避免過多的分組讓用戶感到迷惑。同時,剔除用戶—權限的1:n 關系,可規(guī)避用戶權限特殊化導致復雜的權限驗證帶來的效率問題,也使權限分配工作更加單一,簡化了權限管理過程。權限管理云服務設計如圖5 所示。
將具體的用戶組、角色應用到用戶后,管理員擁有各類任務的創(chuàng)建、瀏覽、編輯與刪除權限,以及員工信息編輯與刪除權限;普通員工擁有任務瀏覽及部分任務的編輯權限,但對部分任務不具備修改權限。因此,權限管理云服務既能夠保證HR 系統(tǒng)的安全性,又具有良好的通用性和易用性。
Fig.5 Design of privilege management cloud service圖5 權限管理云服務設計
為解決傳統(tǒng)C/S 架構的權限管理服務高并發(fā)問題及部署問題,本設計利用“Docker 容器+騰訊Tars 框架”作為整個HR 系統(tǒng)的部署框架,在容器和Tars 節(jié)點中運行權限管理服務及其他HR 后臺服務,使權限管理服務具有高擴展性與高可維護性。該部署過程主要分為兩步:鏡像制作和容器運行。
鏡像制作主要流程如下:
(1)下載鏡像。執(zhí)行命令“docker pull mysql”下載數(shù)據(jù)庫鏡像,執(zhí)行命令“docker pull tarscloud/tars-framework”下載tars 平臺,執(zhí)行命令“docker pull tarscloud/tars-node”下載tars 節(jié)點。
(2)啟動容器。執(zhí)行命令“docker run-d-it--name tars--link mysql--env DBIP=mysql--env DBPort=3306 --env DBUser=root --env DBPassword=password -p 3000:3000 -v/tars_data:/data”,啟動容器。
(3)部署服務。在瀏覽器中輸入“IP 地址+端口號”,登錄Tars 管理平臺。在運維管理界面中部署權限管理等服務,切換到服務管理界面,上傳服務程序并發(fā)布服務。
(4)鏡像制作。服務發(fā)布完成后,執(zhí)行命令“Docker commit 容器ID 鏡像名稱”完成鏡像制作,并提交到鏡像倉庫,為接下來的Docker 部署提供鏡像來源。
服務部署設計如圖6 所示。通過制作好的權限管理服務分層鏡像在云端IaaS 基礎設施上拉取鏡像并運行容器,快速部署權限管理云服務,從而為用戶提供權限管理服務。在Tars 分布式框架下支持單個節(jié)點部署多個權限管理云服務,也支持容器內多個節(jié)點的復制多實例,以此實現(xiàn)負載均衡,可支撐大規(guī)模用戶的同時訪問。
Fig.6 Design of service deployment圖6 服務部署設計
在云基礎設施上采用Docker 鏡像倉庫的管理方式,不需要重復配置復雜的運行環(huán)境,即能實現(xiàn)大規(guī)模的云端服務部署,有效提升部署效率。本設計以構建好的云端權限管理服務鏡像作為部署基礎,設計一套安裝批處理腳本,以實現(xiàn)自動化部署功能。該腳本主要功能包括檢測并安裝數(shù)據(jù)庫、檢測并安裝Docker、從公有云Docker 鏡像倉庫中拉取服務鏡像、部署容器并運行服務等。具體流程如圖7 所示。
Fig.7 Automated cloud deployment圖7 云部署自動化
使用該腳本可快速、高效地在公有云、私有云與混合云上進行部署:
(1)公有云部署方案。選擇公有云部署方案,用戶需要向公有云提供商(阿里、騰訊、百度等)購買IaaS 服務,獲得云端虛擬機。運維人員通過虛擬機的IP 及賬號登錄,執(zhí)行安裝腳本,一鍵安裝本系統(tǒng)。
(2)私有云部署方案。選擇私有云部署方案,用戶需要購買或提供服務器硬件,并安裝操作系統(tǒng)。將服務器連接因特網(wǎng)后提供給系統(tǒng)運維人員,系統(tǒng)運維人員通過安裝批處理腳本,一鍵安裝本系統(tǒng)。安裝完成后即可斷開因特網(wǎng),連接內部網(wǎng)絡,在企業(yè)內網(wǎng)中使用。
(3)混合云部署方案?;旌显撇渴鸱桨概c私有云方案類似,區(qū)別在于服務器使用雙卡,一個連接內網(wǎng),一個連接外網(wǎng)。其優(yōu)勢在于系統(tǒng)更新時可快速連接因特網(wǎng)進行服務升級,另外可享受到人力資源系統(tǒng)中基于公有云的擴展功能,如云端簡歷收集、簡歷分析等。
基于公有云Docker 鏡像倉庫的部署設計如圖8 所示。
Fig.8 Design of deployment based on Docker image warehouse in public cloud圖8 基于公有云Docker 鏡像倉庫的部署設計
采用這種公有云Docker 鏡像倉庫的部署方案,在服務更新時只需重新制作鏡像,在各運行環(huán)境下拉取新鏡像并運行,即可實現(xiàn)軟件更新。傳統(tǒng)重新安裝新版本的方式需要卸載、復制、安裝,整個過程需要花費15~20min,而基于公有云的升級方式僅需要幾分鐘的下載、配置與運行即可完成升級,縮短了部署時間,也不會因運行環(huán)境的差異導致新版本無法運行,降低了運維的復雜性。
本文提出的云平臺HR 管理系統(tǒng)權限管理服務專門針對中小企業(yè)的應用場景進行優(yōu)化,提高了權限授予及鑒權工作效率,也提升了用戶體驗。同時,根據(jù)HR 系統(tǒng)用戶是否分配了正確的角色,對用戶權限進行深層次的管理與維護,提升了HR 系統(tǒng)的安全性。后續(xù)工作將圍繞HR 系統(tǒng)權限管理服務研發(fā)與實現(xiàn),以及如何利用分布式緩存技術實現(xiàn)快速鑒權而展開。