馮鳳娟,張 彥,司 群
(1.北京交通大學(xué) 軟件學(xué)院,北京 100044;2.中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京 100081)
隨著網(wǎng)絡(luò)在政治、軍事、經(jīng)濟(jì)、生活等各領(lǐng)域的廣泛應(yīng)用,人們的工作、學(xué)習(xí)和生活方式也隨之變化。然而,在信息資源共享的同時(shí)也帶來(lái)了信息安全問(wèn)題。計(jì)算機(jī)信息安全已經(jīng)成為涉及國(guó)家戰(zhàn)略和國(guó)計(jì)民生的重要問(wèn)題,信息安全的重要性已經(jīng)提升到國(guó)家戰(zhàn)略層面。
中國(guó)國(guó)家鐵路集團(tuán)有限公司(簡(jiǎn)稱:國(guó)鐵集團(tuán))、各鐵路局集團(tuán)有限公司(簡(jiǎn)稱:鐵路局)為了滿足各自業(yè)務(wù)發(fā)展和需要,分別開(kāi)發(fā)了12306互聯(lián)網(wǎng)售票系統(tǒng)、鐵路列車調(diào)度管理系統(tǒng)、鐵路列車調(diào)度指揮系統(tǒng)、鐵路列車調(diào)度控制系統(tǒng)等許多不同的信息系統(tǒng)。為了保證各個(gè)系統(tǒng)的信息安全,防止系統(tǒng)被黑客攻擊、系統(tǒng)信息的泄露給國(guó)家和個(gè)人造成損失,所有的系統(tǒng)在上線前都必須經(jīng)過(guò)嚴(yán)格的安全檢測(cè)[1]。
目前,國(guó)鐵集團(tuán)尚沒(méi)有統(tǒng)一的開(kāi)發(fā)與測(cè)試云管理平臺(tái),無(wú)法對(duì)測(cè)試流程和進(jìn)度進(jìn)行管控,也無(wú)法對(duì)各個(gè)系統(tǒng)的測(cè)試數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,或幫助開(kāi)發(fā)人員進(jìn)行自助測(cè)試,造成鐵路全網(wǎng)的開(kāi)發(fā)與測(cè)試環(huán)節(jié)沒(méi)有形成閉環(huán),資源利用率低,不能實(shí)現(xiàn)資源共享,以及開(kāi)發(fā)、測(cè)試與部署的統(tǒng)一和規(guī)范。
綜上,開(kāi)發(fā)一個(gè)既能支持開(kāi)發(fā)人員,又能支持測(cè)試人員和管理人員的,集開(kāi)發(fā)、測(cè)試和管理為一體的鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)具有十分重要的意義。
本文從不同角度進(jìn)行鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)的需求分析[1]。
(1)從國(guó)鐵集團(tuán)和各鐵路局的管理角度,平臺(tái)需要實(shí)現(xiàn)按不同維度進(jìn)行統(tǒng)計(jì)分析的功能。
(2)從開(kāi)發(fā)單位的項(xiàng)目規(guī)范角度,平臺(tái)需要實(shí)現(xiàn)鐵路統(tǒng)建項(xiàng)目和鐵路局自建項(xiàng)目的項(xiàng)目開(kāi)發(fā)、部署測(cè)試、驗(yàn)收測(cè)試、上線部署、安全測(cè)試、項(xiàng)目歸檔6個(gè)步驟的全流程協(xié)同管理,實(shí)現(xiàn)開(kāi)發(fā)與測(cè)試環(huán)節(jié)的有效閉合,規(guī)范項(xiàng)目的開(kāi)發(fā)測(cè)試流程。
(3)從測(cè)評(píng)機(jī)構(gòu)的測(cè)試角度,平臺(tái)需要實(shí)現(xiàn)網(wǎng)絡(luò)安全等級(jí)保護(hù)測(cè)試、風(fēng)險(xiǎn)評(píng)估、安全檢查、源代碼安全檢查等安全測(cè)試的流程管理、測(cè)試數(shù)據(jù)管理,以及測(cè)評(píng)報(bào)告的編制。
(1)從資源利用和知識(shí)固化角度,平臺(tái)需要實(shí)現(xiàn)知識(shí)庫(kù)管理、Docker容器資源和測(cè)試工具資源的申請(qǐng)、審核、分配、監(jiān)控和回收管理。
(2)從漏洞與補(bǔ)丁管理角度,平臺(tái)需要跟鐵路漏洞消除和控制管理系統(tǒng)實(shí)現(xiàn)信息共享和對(duì)接,實(shí)現(xiàn)漏洞信息上報(bào)、管理、消控,以及對(duì)應(yīng)補(bǔ)丁的下載和驗(yàn)證。
(3)從代碼管理與版本控制角度,平臺(tái)需要實(shí)現(xiàn)代碼上傳、拉取等代碼的托管功能以及版本控制功能。
(4)從系統(tǒng)管理角度,平臺(tái)需要實(shí)現(xiàn)用戶管理、權(quán)限和角色管理。
(5)從系統(tǒng)服務(wù)支撐角度,平臺(tái)需要實(shí)現(xiàn)微服務(wù)治理功能,為基準(zhǔn)環(huán)境上的所有微服務(wù)提供服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、服務(wù)監(jiān)控和日志管理功能。
(6)從離線測(cè)試環(huán)境搭建與部署角度,平臺(tái)需要提供一個(gè)仿線上環(huán)境的線下測(cè)試環(huán)境,減少由于線上、線下環(huán)境不統(tǒng)一造成的部署問(wèn)題。
平臺(tái)設(shè)計(jì)主要包含平臺(tái)總體架構(gòu)、技術(shù)架構(gòu)、功能架構(gòu)與網(wǎng)絡(luò)架構(gòu)的設(shè)計(jì)。
鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)根據(jù)功能可以分為5個(gè)建設(shè)系統(tǒng):全流程協(xié)同管理系統(tǒng),源代碼管理系統(tǒng),離線測(cè)試環(huán)境,線上部署區(qū)域及安全測(cè)試系統(tǒng)[1]。圖1為該平臺(tái)的總體架構(gòu)。
(1)全流程協(xié)同管理系統(tǒng)
在鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)上創(chuàng)建一個(gè)項(xiàng)目時(shí),需要進(jìn)行項(xiàng)目開(kāi)發(fā)、部署測(cè)試、驗(yàn)收測(cè)試、上線部署、安全測(cè)試、項(xiàng)目歸檔6個(gè)步驟。該系統(tǒng)專注于研發(fā)這6個(gè)步驟工作流的整合和統(tǒng)一,支持不同系統(tǒng)之間的數(shù)據(jù)聯(lián)動(dòng)和整合。
(2)源代碼管理系統(tǒng)
所有項(xiàng)目代碼的統(tǒng)一存儲(chǔ)點(diǎn),實(shí)現(xiàn)代碼管理、版本管理、倉(cāng)庫(kù)管理及持續(xù)集成。
(3)離線測(cè)試環(huán)境
離線測(cè)試環(huán)境具有完整的云平臺(tái)管理能力,提供Docker容器的申請(qǐng)、分配、監(jiān)控和回收等資源管理功能。允許研發(fā)人員申請(qǐng)資源部署待測(cè)系統(tǒng),并進(jìn)行功能和性能測(cè)試。離線測(cè)試環(huán)境為部署的待測(cè)系統(tǒng)提供應(yīng)用防火墻、負(fù)載均衡等網(wǎng)絡(luò)環(huán)境管理功能,同時(shí),提供服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、報(bào)警等微服務(wù)管理功能。
(4)線上部署區(qū)域
線上(生產(chǎn))環(huán)境,包括云環(huán)境和物理環(huán)境,與離線測(cè)試環(huán)境實(shí)現(xiàn)物理隔離,與離線開(kāi)發(fā)測(cè)試系統(tǒng)保持統(tǒng)一規(guī)范。
(5)安全測(cè)試系統(tǒng)
對(duì)線上部署區(qū)域和離線測(cè)試環(huán)境中的系統(tǒng)進(jìn)行網(wǎng)絡(luò)安全等級(jí)保護(hù)測(cè)試、風(fēng)險(xiǎn)評(píng)估、安全檢查、源代碼安全檢查等安全測(cè)試,具備測(cè)試準(zhǔn)備、方案編制、現(xiàn)場(chǎng)測(cè)試、報(bào)告編制4個(gè)階段的測(cè)試流程管理、測(cè)試數(shù)據(jù)管理、測(cè)評(píng)報(bào)告編制等功能。該系統(tǒng)還具備測(cè)試工具的申請(qǐng)、分配、調(diào)用、回收管理、知識(shí)庫(kù)管理功能,測(cè)試信息的多維度統(tǒng)計(jì)分析功能。同時(shí),還可實(shí)現(xiàn)對(duì)安全測(cè)試過(guò)程中發(fā)現(xiàn)的漏洞的上傳,以及對(duì)應(yīng)補(bǔ)丁的下載和驗(yàn)證。
圖1 平臺(tái)總體架構(gòu)
平臺(tái)技術(shù)架構(gòu)如圖2所示,包括數(shù)據(jù)存儲(chǔ)層、數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層、控制層、表現(xiàn)層5層架構(gòu),同時(shí),包含服務(wù)注冊(cè)與發(fā)現(xiàn)、系統(tǒng)授權(quán)認(rèn)證、消息中間件、基準(zhǔn)測(cè)試環(huán)境等輔助技術(shù)[1-3]。
圖2 平臺(tái)技術(shù)架構(gòu)
(1)表現(xiàn)層
該層主要使用Vue、TypeScript、Stylus等技術(shù)。Vue是一套漸進(jìn)式的Web框架,通過(guò)虛擬DOM算法實(shí)現(xiàn)數(shù)據(jù)和頁(yè)面的雙向綁定,完成高效的數(shù)據(jù)展示和更新。TypeScript是JavaScript的超集,可以進(jìn)行類型安全的前端編譯,增加代碼的可讀性和可維護(hù)性。Stylus是一種編譯成CSS的語(yǔ)言,可以實(shí)現(xiàn)復(fù)用和函數(shù)功能,方便各個(gè)組件使用。
(2)控制層
該層使用SpringBoot技術(shù),其配置簡(jiǎn)單,使得開(kāi)發(fā)者可以將更多的精力放在業(yè)務(wù)開(kāi)發(fā)上,而不是在框架配置上。
(3)業(yè)務(wù)邏輯層
該層使用Spring技術(shù),方便業(yè)務(wù)解耦。Spring的低侵入性設(shè)計(jì),對(duì)代碼污染較低,且可以方便集成Logback、Mybatis等其他框架。同時(shí),Spring AOP支持將一些通用的任務(wù)進(jìn)行集中式的管理,便于代碼的復(fù)用。
(4)數(shù)據(jù)訪問(wèn)層
該層使用Mybatis、Redis API、OSS API等技術(shù)。Mybatis是一個(gè)對(duì)象關(guān)系映射框架,它將業(yè)務(wù)邏輯對(duì)象與數(shù)據(jù)庫(kù)中存儲(chǔ)的對(duì)象形成映射關(guān)系,使編寫SQL語(yǔ)句更加方便靈活;Redis API在項(xiàng)目中主要使用的是RedisTemplate,為程序員提供多種操作Redis的API;OSS API用于項(xiàng)目中的對(duì)象存儲(chǔ),提供不同的上傳文件的API,同時(shí)也提供API的下載鏈接。
(5)數(shù)據(jù)存儲(chǔ)層
該層主要對(duì)項(xiàng)目產(chǎn)生的結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化的對(duì)象數(shù)據(jù)、緩存數(shù)據(jù)進(jìn)行存儲(chǔ)。為加快查詢速度,該層使用Redis緩存技術(shù)緩存關(guān)鍵數(shù)據(jù)。
(6)服務(wù)注冊(cè)與發(fā)現(xiàn)
平臺(tái)使用ZooKeeper+Dubbo技術(shù)。Dubbo負(fù)責(zé)提供系統(tǒng)內(nèi)部不同模塊間的RPC接口,使模塊間的調(diào)用更加透明、高效;ZooKeeper為服務(wù)提供者進(jìn)行注冊(cè)服務(wù),暴露接口,供服務(wù)消費(fèi)者發(fā)現(xiàn)服務(wù),并完成調(diào)用。
(7)系統(tǒng)認(rèn)證授權(quán)
平臺(tái)使用的OAuth 2.0技術(shù)是用于REST/APIs的代理授權(quán)框架。該技術(shù)基于令牌進(jìn)行授權(quán),在無(wú)需暴露用戶密碼的情況下,使應(yīng)用能獲取對(duì)用戶數(shù)據(jù)的有限訪問(wèn)權(quán)限,保證不同權(quán)限的角色可以訪問(wèn)到不同的接口。
(8)消息中間件
平臺(tái)使用RocketMQ,通過(guò)消息隊(duì)列,以基于訂閱和消費(fèi)的方式實(shí)現(xiàn)異步處理功能,從而提高系統(tǒng)的響應(yīng)速度。該技術(shù)支持順序性消費(fèi),保證FIFO原則,并且基于長(zhǎng)輪詢+pull消費(fèi)消息方式來(lái)保證實(shí)時(shí)性,提供豐富的拉取模式,支持10億級(jí)別的消息堆積。
(9)基準(zhǔn)環(huán)境
平臺(tái)使用Docker+Kubernetes的方式搭建的一套仿線上離線測(cè)試環(huán)境。Docker有利于持續(xù)部署與測(cè)試,形成可復(fù)用的鏡像,提高效率。它與底層共享操作系統(tǒng),性能更加優(yōu)良,負(fù)載更低,具有較高的資源利用率與隔離性,保證應(yīng)用間不會(huì)相互影響[4-5];Kubernetes是一個(gè)開(kāi)源系統(tǒng),用于自動(dòng)化、容器化應(yīng)用程序的部署、擴(kuò)展和管理,有助于管理Docker容器[6]。
鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)主要由全流程協(xié)同管理系統(tǒng)、源代碼管理系統(tǒng)、離線測(cè)試環(huán)境、安全測(cè)試系統(tǒng)4部分組成,系統(tǒng)功能架構(gòu)如圖3所示[1]。
(1)全流程協(xié)同管理系統(tǒng)主要由項(xiàng)目開(kāi)發(fā)上線6個(gè)步驟的流程管理、外部服務(wù)調(diào)用、數(shù)據(jù)統(tǒng)計(jì)3部分組成。
(2)源代碼管理系統(tǒng)主要提供代碼的托管功能與版本控制,方便離線測(cè)試環(huán)境及時(shí)拉取部署代碼。本文使用GitLab搭建源代碼管理系統(tǒng)。
圖3 平臺(tái)功能架構(gòu)
(3)離線測(cè)試環(huán)境又稱為基準(zhǔn)環(huán)境,是在線下環(huán)境維護(hù)的仿線上的環(huán)境,用戶可以在該環(huán)境中申請(qǐng)Docker容器,進(jìn)行項(xiàng)目部署和測(cè)試,減少由于線上、線下環(huán)境不統(tǒng)一造成的不必要的錯(cuò)誤和異常。
(4)安全測(cè)試系統(tǒng)主要提供網(wǎng)絡(luò)安全等級(jí)保護(hù)測(cè)試、安全檢查、風(fēng)險(xiǎn)評(píng)估等安全測(cè)試的流程管理[2,7-8];實(shí)現(xiàn)知識(shí)庫(kù)管理,提供相應(yīng)的模板信息,提高測(cè)試人員的工作效率,促進(jìn)測(cè)試流程規(guī)范化;實(shí)現(xiàn)對(duì)漏洞與補(bǔ)丁的管理;實(shí)現(xiàn)不同維度的數(shù)據(jù)統(tǒng)計(jì)分析。
平臺(tái)采取“一級(jí)部署”的架構(gòu)方式,將所有服務(wù)器統(tǒng)一部署在國(guó)鐵集團(tuán)數(shù)據(jù)中心內(nèi)部服務(wù)網(wǎng)的測(cè)試接入?yún)^(qū)中。平臺(tái)的通信網(wǎng)絡(luò)安全、邊界安全納入數(shù)據(jù)中心管轄范疇內(nèi)。國(guó)鐵集團(tuán)、鐵路局、開(kāi)發(fā)單位、測(cè)評(píng)機(jī)構(gòu)4類終端用戶通過(guò)內(nèi)部服務(wù)網(wǎng)或VPN服務(wù)器訪問(wèn)本平臺(tái)并開(kāi)展業(yè)務(wù)。通過(guò)平臺(tái)上部署的堡壘機(jī)和防火墻進(jìn)行邊界防護(hù)檢測(cè),連接到核心交換機(jī)后可以進(jìn)入開(kāi)發(fā)測(cè)試云管理平臺(tái),通過(guò)鑒權(quán)服務(wù)器進(jìn)行身份和權(quán)限的鑒定,保證開(kāi)發(fā)測(cè)試云管理平臺(tái)的安全性。研發(fā)人員、測(cè)試人員通過(guò)開(kāi)發(fā)測(cè)試云管理平臺(tái)的全流程協(xié)同管理系統(tǒng),根據(jù)項(xiàng)目研發(fā)生命周期的步驟,自動(dòng)觸發(fā)和調(diào)用源代碼管理系統(tǒng)、離線測(cè)試環(huán)境、安全測(cè)試系統(tǒng)。鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)網(wǎng)絡(luò)拓?fù)浼軜?gòu)如圖4所示[1-2]。
本文依據(jù)平臺(tái)的設(shè)計(jì)方案,開(kāi)發(fā)了鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)的原型系統(tǒng)。該平臺(tái)的建設(shè)將大幅提高國(guó)鐵集團(tuán)信息系統(tǒng)的信息安全管理能力。平臺(tái)效益主要體現(xiàn)在以下幾方面:
(1)規(guī)范安全測(cè)試管理流程。將測(cè)試人員的經(jīng)驗(yàn)轉(zhuǎn)換成知識(shí),通過(guò)模板庫(kù)和知識(shí)庫(kù)簡(jiǎn)化各類人員的使用,提高測(cè)評(píng)機(jī)構(gòu)的安全測(cè)試效率。
(2)提高資源利用率。規(guī)范鐵路開(kāi)發(fā)、測(cè)試與部署的流程,形成開(kāi)發(fā)、測(cè)試、部署各個(gè)環(huán)節(jié)的有效閉合和統(tǒng)一管控,保證開(kāi)發(fā)測(cè)試與生產(chǎn)環(huán)境的統(tǒng)一,減少由于線上、線下環(huán)境不統(tǒng)一造成的錯(cuò)誤。
(3)提高開(kāi)發(fā)測(cè)試效率。提供Docker容器資源、測(cè)試工具等資源的統(tǒng)一管理,規(guī)范化資源申請(qǐng)、審核、分配、監(jiān)控和回收的流程,實(shí)現(xiàn)資源的整合與共享。
鐵路信息安全關(guān)系到鐵路的安全穩(wěn)定運(yùn)行,對(duì)我國(guó)鐵路事業(yè)的發(fā)展,乃至我國(guó)國(guó)民經(jīng)濟(jì)的發(fā)展都有著非常重要的意義。因此,必須加大力度完善鐵路信息安全檢測(cè),使得信息安全和鐵路發(fā)展相匹配。通過(guò)鐵路開(kāi)發(fā)測(cè)試云管理平臺(tái)的建設(shè),可以規(guī)范信息安全測(cè)試管理流程,提高資源的利用率,實(shí)現(xiàn)開(kāi)發(fā)、測(cè)試、部署各個(gè)環(huán)節(jié)的有效閉合和統(tǒng)一管控。
圖4 平臺(tái)網(wǎng)絡(luò)拓?fù)浼軜?gòu)