楊 舒,蘇 放
北京郵電大學(xué) 信息與通信工程學(xué)院,北京100876
當(dāng)前在網(wǎng)絡(luò)互聯(lián)和大數(shù)據(jù)時代,分布式數(shù)據(jù)的安全整合應(yīng)用成為一種重要的數(shù)據(jù)應(yīng)用方式,得到了廣泛的研究與設(shè)計。
與傳統(tǒng)數(shù)據(jù)本地應(yīng)用系統(tǒng)不同,這些越來越多的分布式計算場景往往要求多個大數(shù)據(jù)節(jié)點協(xié)同工作,在數(shù)據(jù)整合、安全應(yīng)用方面,其面臨的主要挑戰(zhàn)在于:(1)有多個異構(gòu)數(shù)據(jù)源,數(shù)據(jù)源來自相同領(lǐng)域的不同信息系統(tǒng),且隨著應(yīng)用的發(fā)展,數(shù)據(jù)源節(jié)點的數(shù)量及其數(shù)據(jù)也會產(chǎn)生靈活的變化;(2)由于歷史等因素,各節(jié)點數(shù)據(jù)獨立設(shè)計建設(shè),造成數(shù)據(jù)分散儲存管理,在整合中,其應(yīng)用平臺不同,數(shù)據(jù)格式不統(tǒng)一、數(shù)據(jù)處理也有很大的差異性,缺少統(tǒng)一的數(shù)據(jù)整合接口,造成數(shù)據(jù)融合共享的困難;(3)更重要的是,這些來自不同節(jié)點數(shù)據(jù),其數(shù)據(jù)的不同所有權(quán)、使用權(quán)和管理權(quán)對與大數(shù)據(jù)環(huán)境下的合理安全共享和應(yīng)用帶來了極大的挑戰(zhàn)。如何在數(shù)據(jù)的匯聚應(yīng)用中,確保數(shù)據(jù)來源清晰、責(zé)權(quán)明確、應(yīng)用有度,保障數(shù)據(jù)的合法共享和使用是一個重大的挑戰(zhàn)。
例如,在圖1所示的分布式物聯(lián)網(wǎng)終端評測平臺中,云中心控制節(jié)點和各個子測試節(jié)點組成一個典型的分布式測試架構(gòu),子節(jié)點分別完成對不同設(shè)備及相同設(shè)備不同方面的測試與數(shù)據(jù)采集,云中心控制節(jié)點收集子節(jié)點上傳的數(shù)據(jù),整合數(shù)據(jù)以及進(jìn)行數(shù)據(jù)測試報告生成及數(shù)據(jù)共享應(yīng)用。
圖1 分布式物聯(lián)網(wǎng)終端評測平臺Fig.1 Terminal evaluation platform for distributed Internet of things
但是,由于歷史遺留和本地化數(shù)據(jù)應(yīng)用的要求,不同地區(qū)、不同部門的子節(jié)點數(shù)據(jù)往往直接地儲存在本地,其數(shù)據(jù)也和中心控制節(jié)點的要求有所差別,多個子節(jié)點的數(shù)據(jù)需要整合起來才能供完整測試報告等匯總應(yīng)用;同時,整合后的數(shù)據(jù)應(yīng)用共享困難,由于用戶來源不同,所處部門不同,所有的用戶不可能都擁有相同的數(shù)據(jù)訪問權(quán)限,數(shù)據(jù)存在訪問權(quán)限問題,需要對用戶實行數(shù)據(jù)訪問控制,控制用戶訪問數(shù)據(jù)的能力,阻止數(shù)據(jù)被用戶的非法訪問;此外,由于用戶大多分布在各子節(jié)點中,云中心節(jié)點與用戶之間也存在信任問題。
在本文中,針對分布式物聯(lián)網(wǎng)終端評測平臺這一類應(yīng)用需求,設(shè)計并實現(xiàn)了基于微服務(wù)的分布式數(shù)據(jù)安全整合應(yīng)用系統(tǒng),其創(chuàng)新性為:
(1)在數(shù)據(jù)整合中,基于微服務(wù)架構(gòu),設(shè)計實現(xiàn)了一個輕量級的數(shù)據(jù)整合方案,可以進(jìn)行可視化的數(shù)據(jù)便捷整合。
在本系統(tǒng)設(shè)計中,采用先進(jìn)的微服務(wù)架構(gòu)[1-2],其思想是將單體架構(gòu)打散,把原來整體的服務(wù)切分成若干個微服務(wù)模塊;每個服務(wù)之間相互獨立,服務(wù)之間使用輕量級的通信制度進(jìn)行交流,從而保障數(shù)據(jù)安全整合應(yīng)用系統(tǒng)的高可擴(kuò)展性,其面臨節(jié)點數(shù)量、節(jié)點數(shù)據(jù)的可擴(kuò)展變化時,只需簡便地將對應(yīng)微服務(wù)單元獨立進(jìn)行擴(kuò)展和修改,避免了對系統(tǒng)整體的影響,并且,這種微服務(wù)的架構(gòu),使得系統(tǒng)維護(hù)升級簡單高效。
(2)在數(shù)據(jù)安全應(yīng)用中,在數(shù)據(jù)整合的背景下,基于數(shù)據(jù)分級與用戶角色劃分,實現(xiàn)用戶對數(shù)據(jù)的訪問控制;采用證書鏈模型,有效地解決了云中心節(jié)點與用戶的信任問題和角色分配問題。
目前,在大數(shù)據(jù)整合研究方面,學(xué)術(shù)界已有了相關(guān)的一些研究,數(shù)據(jù)整合的體系結(jié)構(gòu)主要分為三種:數(shù)據(jù)倉庫、聯(lián)邦數(shù)據(jù)庫和中間件。
數(shù)據(jù)倉庫作為一種應(yīng)用較為廣泛的方法,典型的用法為:將數(shù)據(jù)源處理后再統(tǒng)一地進(jìn)行保存,使用的策略是ETL[3](Extract、Transform、Load),從異構(gòu)數(shù)據(jù)庫中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗等系列操作后,按照預(yù)先制定好的數(shù)據(jù)模型,將數(shù)據(jù)加載保存到數(shù)據(jù)倉庫中。在文獻(xiàn)[4]中使用了該方法,但是針對不同數(shù)據(jù)源結(jié)構(gòu)之間差異性較大的問題,整合效果不是很好,可擴(kuò)展性也不強(qiáng),同時,由于事先需要制定數(shù)據(jù)整合的標(biāo)準(zhǔn),操作繁瑣,前期準(zhǔn)備周期長,而且一旦數(shù)據(jù)整合的需求發(fā)生變化,就要重新指定對應(yīng)的模板與標(biāo)準(zhǔn),無法實時地對數(shù)據(jù)進(jìn)行更新整合。
聯(lián)邦數(shù)據(jù)庫采用數(shù)據(jù)聯(lián)邦技術(shù),數(shù)據(jù)在邏輯上保存在同一個位置,但是實際上可能儲存在多個異構(gòu)數(shù)據(jù)源中。在文獻(xiàn)[5]中最先定義了聯(lián)邦數(shù)據(jù)庫系統(tǒng),避免了數(shù)據(jù)倉庫方法的數(shù)據(jù)復(fù)制,節(jié)約了數(shù)據(jù)儲存的額外空間,但數(shù)據(jù)仍然是異構(gòu)的、數(shù)據(jù)查詢緩慢、集成度高,構(gòu)建的全局?jǐn)?shù)據(jù)模式算法設(shè)計復(fù)雜、沒有通用性、擴(kuò)展性較差。
中間件技術(shù)在不同的異構(gòu)數(shù)據(jù)源和數(shù)據(jù)應(yīng)用之間提供了一個統(tǒng)一的訪問數(shù)據(jù)的接口。在文獻(xiàn)[6]中使用中間件系統(tǒng),依賴于中介模式和數(shù)據(jù)源模式的映射,以XML作為數(shù)據(jù)交換的格式,雖然查詢方便,無需額外地儲存,但前期需要花費時間制定XML數(shù)據(jù)模板,當(dāng)數(shù)據(jù)量較大時候,數(shù)據(jù)傳輸中間件XML體積變大,開銷高,數(shù)據(jù)查詢的效率會變低。
在面對本文所述的物聯(lián)網(wǎng)終端評測平臺這一類的分布式系統(tǒng)時,需要將各子節(jié)點的數(shù)據(jù)整合、保存后才可以供使用,聯(lián)邦數(shù)據(jù)庫和中間件這兩種數(shù)據(jù)整合的方式通用性不強(qiáng),前期需要消耗時間去準(zhǔn)備相關(guān)的算法、中間件模板,同時,并沒有將整合后的數(shù)據(jù)進(jìn)行統(tǒng)一的保存,這種虛擬形式的數(shù)據(jù)整合并不適用本文的應(yīng)用場景,但傳統(tǒng)的數(shù)據(jù)倉庫技術(shù)又沒有很好地解決對差異性較大的數(shù)據(jù)源的整合,也不能滿足數(shù)據(jù)整合實時性的要求,其可擴(kuò)展性、靈活性也存在明顯不足。此外,這樣的數(shù)據(jù)整合中,并未考慮到數(shù)據(jù)整合的安全性需求,沒有很好地解決數(shù)據(jù)整合后的安全應(yīng)用共享問題。因此,本文設(shè)計并實現(xiàn)了一種數(shù)據(jù)安全整合應(yīng)用系統(tǒng),無需預(yù)先制定數(shù)據(jù)整合的模板,對不同系統(tǒng)的適應(yīng)性強(qiáng),擴(kuò)展性好,并采用可視化的整合界面,靈活、實時地進(jìn)行數(shù)據(jù)便捷整合,并采用證書鏈模型,通過數(shù)據(jù)分級與角色劃分來保證整合后數(shù)據(jù)的安全應(yīng)用共享。
另外,必須指出的是,當(dāng)前,采用數(shù)據(jù)倉庫等手段設(shè)計的傳統(tǒng)數(shù)據(jù)安全整合系統(tǒng)大都是采用單體系統(tǒng)設(shè)計,其系統(tǒng)擴(kuò)展性較差,系統(tǒng)部署困難,系統(tǒng)維護(hù)成本較高,而且為了保證數(shù)據(jù)整合的效率,常直接將系統(tǒng)整體擴(kuò)展到多個服務(wù)器中,但是,實際應(yīng)用中,并不是所有的業(yè)務(wù)都需進(jìn)行擴(kuò)展,導(dǎo)致了資源浪費。
近年來,已有一些采用分布式結(jié)構(gòu)的數(shù)據(jù)整合系統(tǒng),在文獻(xiàn)[7]中,將系統(tǒng)中的各個模塊分別部署到不同的服務(wù)器中;在文獻(xiàn)[8]中,采用自定義的注冊中心,解決了分布式模板之間的通信問題。但是,這些分布式的系統(tǒng),并沒有將系統(tǒng)微服務(wù)化,模塊之間耦合性仍然較強(qiáng),在進(jìn)行業(yè)務(wù)擴(kuò)展的時,仍面臨著傳統(tǒng)單體架構(gòu)中擴(kuò)展性差的問題,同時也沒有合適的負(fù)載均衡策略與容錯機(jī)制。2014年,F(xiàn)owler在文章《Microservices》[9]中首次提出微服務(wù)架構(gòu),以“職責(zé)單一”為指導(dǎo),將系統(tǒng)拆分成各個單一的微服務(wù),各服務(wù)功能單一,邊界清晰,服務(wù)之間耦合性低,有利于敏捷開發(fā)與快速部署;微服務(wù)架構(gòu)中集成了不同的負(fù)載均衡的策略,并提升了系統(tǒng)的容錯性,服務(wù)之間相互的隔離,一個服務(wù)出錯,并不會影響到其他微服務(wù)的運行;面對系統(tǒng)擴(kuò)展與修改時,只需要將對應(yīng)的微服務(wù)進(jìn)行擴(kuò)展,擴(kuò)展便捷,成本相對較低。因此,本文基于微服務(wù)架構(gòu)來搭建分布式數(shù)據(jù)安全整合應(yīng)用系統(tǒng),在降低系統(tǒng)耦合性、系統(tǒng)按需擴(kuò)展、敏捷開發(fā)和快速部署方面,適應(yīng)當(dāng)前分布式數(shù)據(jù)安全整合的需求,具有明顯的優(yōu)勢。
基于Spring Cloud[10]微服務(wù)的分布式數(shù)據(jù)安全整合應(yīng)用系統(tǒng)整體框架圖2所示,其核心服務(wù)分為兩個系統(tǒng):數(shù)據(jù)整合子系統(tǒng)與數(shù)據(jù)安全應(yīng)用子系統(tǒng)。
圖2 基于Spring Cloud微服務(wù)的分布式數(shù)據(jù)安全整合應(yīng)用系統(tǒng)整體框架Fig.2 Distributed data security integrated application system framework based on Spring Cloud
數(shù)據(jù)整合系統(tǒng)對子節(jié)點上傳的數(shù)據(jù)進(jìn)行預(yù)處理,采用輕量級的可視化數(shù)據(jù)整合的方法,在云中心節(jié)點按照用戶需求將這些相互關(guān)聯(lián)的分布式異構(gòu)數(shù)據(jù)源整合在一起,屏蔽了底層各子節(jié)點之間數(shù)據(jù)源的差異,使得用戶可以以透明的方式訪問這些數(shù)據(jù)。
數(shù)據(jù)安全應(yīng)用系統(tǒng)基于數(shù)據(jù)分級與用戶角色劃分和證書鏈模型,實現(xiàn)了用戶對數(shù)據(jù)的訪問控制和安全應(yīng)用。
在系統(tǒng)中,Eureka框架組成服務(wù)注冊中心集群,提供服務(wù)端發(fā)現(xiàn)功能,便于實現(xiàn)微服務(wù)之間的交互。Eureka客戶端,即其他的微服務(wù),通過向Eureka服務(wù)端注冊,提交自身的元信息并保存在服務(wù)端,Eureka客戶端獲取通過服務(wù)端的注冊表的信息來查找其他的服務(wù),完成微服務(wù)之間通信與交互。
Ribbon是一個負(fù)載均衡器,用來管理用戶對大數(shù)據(jù)服務(wù)的調(diào)用。
Hystrix是熔斷器,在分布式環(huán)境中,不可避免地會出現(xiàn)一些錯誤,如果不進(jìn)行處理,會導(dǎo)致整個服務(wù)的崩潰,Hystrix通過添加一些容錯邏輯停止服務(wù)之間的級聯(lián)故障與提供故障后的預(yù)備選項來提高系統(tǒng)的整體的彈性。
Zuul是微服務(wù)的網(wǎng)關(guān),是用戶請求服務(wù)的統(tǒng)一入口,用來提供智能路由、過濾用戶的請求。
用戶發(fā)起訪問數(shù)據(jù)請求時,由Zuul提供智能路由、過濾訪問請求,通過Eureka服務(wù)注冊中心完成微服務(wù)之間通信交互,Hystrix熔斷器與Ribbon負(fù)載均衡器用來提高整個系統(tǒng)的訪問彈性。
本系統(tǒng)的主體功能在數(shù)據(jù)安全整合應(yīng)用服務(wù),包括了數(shù)據(jù)整合子系統(tǒng)與數(shù)據(jù)安全應(yīng)用子系統(tǒng),這兩個子系統(tǒng)根據(jù)微服務(wù)化的理念設(shè)計,每個子系統(tǒng)進(jìn)一步劃分為多個微服務(wù)組件功能,具體的服務(wù)劃分將分別在下面章節(jié)進(jìn)行介紹。在系統(tǒng)微服務(wù)化中,一個微服務(wù)只專注于一個類或一個分析,服務(wù)之間通過松耦合方式連接,從而保證微服務(wù)組件的獨立性和完整性,調(diào)整或升級一個服務(wù)不會影響其他的微服務(wù),從而保障系統(tǒng)的可擴(kuò)展性等性能。
數(shù)據(jù)整合子系統(tǒng)接收每個子節(jié)點傳輸?shù)漠悩?gòu)數(shù)據(jù),對數(shù)據(jù)進(jìn)行預(yù)處理;在可視化平臺上,無需事先定義數(shù)據(jù)整合模板,就可以根據(jù)實際需求對異構(gòu)數(shù)據(jù)進(jìn)行數(shù)據(jù)整合。
如圖3所示,數(shù)據(jù)整合系統(tǒng)被劃分成了三個獨立的微服務(wù)。
圖3 數(shù)據(jù)整合子系統(tǒng)Fig.3 Data integration subsystem
(1)數(shù)據(jù)預(yù)處理微服務(wù):接收子節(jié)點上傳的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行預(yù)處理。
數(shù)據(jù)接受模塊接受各個子節(jié)點傳輸?shù)漠悩?gòu)數(shù)據(jù),并做安全檢查,通過數(shù)據(jù)簽名驗證[11],保證數(shù)據(jù)來源正確和數(shù)據(jù)的完整性。
數(shù)據(jù)處理模塊對接受的數(shù)據(jù)進(jìn)行預(yù)處理,使得數(shù)據(jù)可視化微服務(wù)可以專注于自身的業(yè)務(wù),確保高效的數(shù)據(jù)整合。其主要功能如下:
數(shù)據(jù)解密:為了保證數(shù)據(jù)由子節(jié)點傳輸?shù)街行墓?jié)點的過程中不被竊取,對數(shù)據(jù)進(jìn)行了加密傳輸,在數(shù)據(jù)預(yù)處理時,首先要對數(shù)據(jù)進(jìn)行解密。
數(shù)據(jù)清洗[12]:清除數(shù)據(jù)中的重復(fù)、無效的數(shù)據(jù),減少數(shù)據(jù)量,便于后續(xù)數(shù)據(jù)的存儲和數(shù)據(jù)整合。
自定義預(yù)處理:提供插件機(jī)制,可以根據(jù)整合的數(shù)據(jù)自定義數(shù)據(jù)預(yù)處理的方法,提高系統(tǒng)的靈活性與通用性。
異構(gòu)數(shù)據(jù)經(jīng)過預(yù)處理后,根據(jù)來源的不同,將數(shù)據(jù)儲存在異構(gòu)數(shù)據(jù)集群中,并實施必要的數(shù)據(jù)備份,供數(shù)據(jù)整合使用。
(2)數(shù)據(jù)語義轉(zhuǎn)化微服務(wù):將本地子節(jié)點的數(shù)據(jù)語義格式轉(zhuǎn)換成云中心的標(biāo)準(zhǔn)格式。
語義轉(zhuǎn)化模塊主要是對數(shù)據(jù)中的一些值進(jìn)行統(tǒng)一的“翻譯”,將子節(jié)點的原始數(shù)據(jù)的一些值轉(zhuǎn)換成云中心的標(biāo)準(zhǔn)格式。
例如:在物聯(lián)網(wǎng)終端測試平臺中,記錄數(shù)據(jù)的同時也記錄了數(shù)據(jù)產(chǎn)生的時間,不同的子節(jié)點使用的時間的格式可能不是完全一樣的,可以使用語義轉(zhuǎn)化模塊,將時間信息轉(zhuǎn)化成統(tǒng)一的格式,方便對數(shù)據(jù)的管理與查看。
知識庫與語義轉(zhuǎn)化模塊結(jié)合使用,知識庫中儲存了云中心數(shù)據(jù)的標(biāo)準(zhǔn)格式,定義了數(shù)據(jù)處理的規(guī)則,輔助完成語義轉(zhuǎn)化功能,影響語義轉(zhuǎn)化的結(jié)果。知識庫管理模塊主要負(fù)責(zé)對知識庫的管理,用戶可以上傳、更新、刪除知識庫。不同的數(shù)據(jù)整合系統(tǒng)可以根據(jù)實際的需要,利用知識庫管理模塊上傳各種補(bǔ)充資料,提升異構(gòu)數(shù)據(jù)源語義轉(zhuǎn)換的效率和正確率。
(3)可視化數(shù)據(jù)整合微服務(wù):通過可視化的平臺進(jìn)行數(shù)據(jù)整合。
可視化數(shù)據(jù)整合的步驟如圖4所示。
圖4 可視化數(shù)據(jù)整合步驟Fig.4 Steps of visual data integration
圖5展示了應(yīng)用數(shù)據(jù)整合子系統(tǒng),進(jìn)行物聯(lián)網(wǎng)終端評測平臺數(shù)據(jù)整合的工作示例。
圖5 數(shù)據(jù)整合示例Fig.5 Example of data integration subsystem
如圖5中所示,現(xiàn)需整合子節(jié)點1、子節(jié)點2的數(shù)據(jù),記錄不同設(shè)備的能耗數(shù)據(jù),兩節(jié)點分別將物聯(lián)網(wǎng)測試設(shè)備信息與設(shè)備能耗數(shù)據(jù)上傳給云中心節(jié)點,數(shù)據(jù)預(yù)處理微服務(wù)首先對數(shù)據(jù)進(jìn)行預(yù)處理,將處理好的數(shù)據(jù)保存在異構(gòu)數(shù)據(jù)集中,供數(shù)據(jù)整合使用。
為了保證數(shù)據(jù)整合的安全與數(shù)據(jù)權(quán)責(zé)可追溯,需要對用戶進(jìn)行登錄驗證,只有身份驗證成功的用戶才可以進(jìn)行數(shù)據(jù)整合。
用戶登錄成功后,首先在可視化平臺上選擇這兩個表,并指定兩個表之間的關(guān)系從屬關(guān)系。
接下來,設(shè)定整合表的安全等級,安全等級的分類參見GB/T 34080.2-2017[13]中的數(shù)據(jù)安全保護(hù)分類方法。
然后,自定義數(shù)據(jù)整合模板,整合表中的某一字段是否顯示、字段名稱都可以由用戶自定義;并且通過數(shù)據(jù)語義轉(zhuǎn)化微服務(wù)中知識庫所儲存的云平臺時間格式標(biāo)準(zhǔn)將各節(jié)點測試時間轉(zhuǎn)化成統(tǒng)一的數(shù)據(jù)格式。
數(shù)據(jù)整合完成后,用戶可以預(yù)覽整合后的數(shù)據(jù),如果滿足需求,記錄數(shù)據(jù)整合的操作用戶,再使用數(shù)據(jù)簽名的方式將整合數(shù)據(jù)發(fā)送到數(shù)據(jù)安全應(yīng)用系統(tǒng);否則,重新定義待整合數(shù)據(jù)之間的關(guān)系。
在分布式數(shù)據(jù)整合安全應(yīng)用平臺建設(shè)中,僅僅通過對數(shù)據(jù)進(jìn)行安全等級劃分來保障數(shù)據(jù)的安全應(yīng)用顯然是不夠的。例如:在物聯(lián)網(wǎng)終端評測平臺中,如果僅根據(jù)數(shù)據(jù)安全分級來劃分用戶的等級,那么對于相同等級的數(shù)據(jù),對應(yīng)等級訪問權(quán)限的用戶就可以訪問該等級的全部數(shù)據(jù)。但是,由于用戶角色的多樣性,實際應(yīng)用中,同等級的數(shù)據(jù)并不該被擁有該數(shù)據(jù)等級權(quán)限的所有用戶訪問,這種單一的權(quán)限劃分方式顯然滿足不了實際需求。
因此,在數(shù)據(jù)安全應(yīng)用子系統(tǒng)的設(shè)計中,采用GB/T 34080.2-2017的數(shù)據(jù)安全保護(hù)分類方法,進(jìn)行數(shù)據(jù)安全分級劃分。并在此數(shù)據(jù)分級的基礎(chǔ)上,提出了基于角色的分組訪問控制,將訪問權(quán)限與角色綁定,用戶通過分配角色來獲取訪問權(quán)限。并采用證書鏈的方法,實現(xiàn)角色的分配管理。
基于角色的分組訪問控制劃分如圖6所示。
圖6 基于角色的訪問控制Fig.6 Access control based on user role division
角色實際上就是一組數(shù)據(jù)權(quán)限的操作集合。如在物聯(lián)網(wǎng)終端評測平臺中,測試人員的操作集合為{test1,test2},安全人員的操作集合為{security1,security2},如果新加入一名員工,賦予該員工的角色為測試人員,那么該員工就可以訪問test1、test2兩個數(shù)據(jù)。一個用戶被賦予一個角色,就擁有此角色對應(yīng)訪問權(quán)限。一個角色通常對應(yīng)多個數(shù)據(jù)訪問權(quán)限,一個權(quán)限可以由多個角色擁有;一個用戶可以分配多個角色,一個角色可以分配給多個用戶。當(dāng)數(shù)據(jù)的權(quán)限發(fā)生變化的時候,直接對數(shù)據(jù)庫中的角色權(quán)限進(jìn)行更新就可以滿足需求,基于角色的訪問控制可以實現(xiàn)用戶權(quán)限的靈活劃分,且操作方便快捷,高效地解決了分布式數(shù)據(jù)安全整合應(yīng)用系統(tǒng)中由于部門分散,用戶較多帶來的數(shù)據(jù)按需共享的問題。
使用數(shù)據(jù)分級和用戶角色劃分來進(jìn)行訪問控制,如何實現(xiàn)用戶角色劃分以及如何確定用戶擁有的角色是實現(xiàn)訪問控制的關(guān)鍵,也是分布式大數(shù)據(jù)整合應(yīng)用的難點。實際應(yīng)用中,如果采用在云中心進(jìn)行統(tǒng)一角色劃分的方法,不僅會增加云中心節(jié)點的壓力,而且由于云中心節(jié)點對子節(jié)點具體的用戶業(yè)務(wù)角色不甚了解,且子節(jié)點中的角色也往往會根據(jù)需求發(fā)生變化,因此,其角色劃分的準(zhǔn)確性難以保證,且缺乏必要的靈活性。本文中,采用基于證書鏈[14]的方案進(jìn)行用戶角色劃分管理,由各個子節(jié)點單獨進(jìn)行本節(jié)點角色的劃分,然后統(tǒng)一地保存在云中心節(jié)點的角色權(quán)限數(shù)據(jù)庫中。具體實現(xiàn)方式如圖7所示。云中心節(jié)點首先將各個子節(jié)點擁有的數(shù)據(jù)權(quán)限告知子節(jié)點并將分配給子節(jié)點的數(shù)據(jù)權(quán)限保存在數(shù)據(jù)庫中;然后,在由子節(jié)點進(jìn)行角色權(quán)限的劃分,將劃分的結(jié)果保存在數(shù)據(jù)庫中。
圖7 子節(jié)點角色權(quán)限劃分Fig.7 User role division in child nodes
如果子節(jié)點的業(yè)務(wù)復(fù)雜,為了進(jìn)一步緩解劃分角色的壓力和提高角色劃分的準(zhǔn)確性,子節(jié)點還可以將持續(xù)劃分角色的權(quán)限再下發(fā)給子節(jié)點下的“節(jié)點”;權(quán)限下發(fā)給“節(jié)點”后,仍可以根據(jù)實際的需求再進(jìn)行權(quán)限下發(fā),形成一種鏈?zhǔn)降慕巧珓澐煮w系,這種劃分方式不僅減輕了云中心節(jié)點的業(yè)務(wù)壓力,由于劃分“節(jié)點”更了解本節(jié)點的角色組成,劃分角色的“節(jié)點”還可以根據(jù)實際需求向下衍生,保證了劃分的準(zhǔn)確性、靈活性和實用性。
同時,網(wǎng)絡(luò)信任是數(shù)據(jù)安全應(yīng)用需要解決的問題[15],由于用戶大多分布在子節(jié)點,云節(jié)點對用戶不了解,對其缺乏信任,用戶在申請數(shù)據(jù)訪問時,云中心節(jié)點首先需要確認(rèn)用戶身份是否有效,信任認(rèn)證通過后,用戶才可以訪問數(shù)據(jù)。
本系統(tǒng)中,使用證書鏈技術(shù)來管理用戶角色,使用數(shù)字證書賦予用戶的角色身份,通過數(shù)據(jù)證書認(rèn)證來解決信任問題,數(shù)字證書由位于云中心節(jié)點的證書認(rèn)證中心(Certificate Authority,CA)進(jìn)行統(tǒng)一的簽發(fā),本文采用X.509 V3[16]作為證書的格式,將用戶的身份信息與用戶公鑰綁定,通過CA的公鑰簽名后生成證書,用戶訪問數(shù)據(jù)時,通過對用戶證書中的CA簽名進(jìn)行認(rèn)證來解決信任問題。采用證書鏈模型,對用戶證書使用子節(jié)點證書簽名,用子節(jié)點數(shù)據(jù)簽名標(biāo)記用戶所屬的節(jié)點,便于云中心節(jié)點進(jìn)行在角色權(quán)限數(shù)據(jù)庫中查找對應(yīng)的權(quán)限,形成了基于證書鏈模型的用戶角色證書體系,如圖8所示。
圖8 基于證書鏈模型的用戶角色證書體系Fig.8 User role certificate architecture based oncertificate chain model
云節(jié)點CA的證書通過自簽名生成,是絕對可信任的;系統(tǒng)中的子節(jié)點證書和用戶證書都是由云節(jié)點CA簽發(fā)的。用戶申請證書的流程如圖9所示。
圖9 用戶申請證書流程Fig.9 Process of user certificate application
子節(jié)點的證書簽發(fā)和用戶證書簽發(fā)的流程相似。CA簽發(fā)用戶證書后,先發(fā)送給子節(jié)點,由子節(jié)點進(jìn)行簽名后再發(fā)送給用戶。使用子節(jié)點證書簽名的好處在于:一是使用戶證書的簽發(fā)涉及到的權(quán)責(zé)更小化,方便進(jìn)行權(quán)責(zé)的追溯;二是用戶在訪問數(shù)據(jù)時,子節(jié)點的簽名用于云中心節(jié)點在用戶角色權(quán)限數(shù)據(jù)庫中查找其對應(yīng)的權(quán)限。
基于證書鏈模型的用戶角色權(quán)限劃分,數(shù)據(jù)應(yīng)用安全子系統(tǒng)架構(gòu)如圖10所示。
圖10 數(shù)據(jù)安全應(yīng)用子系統(tǒng)Fig.10 Data security application subsystem
(1)證書認(rèn)證中心(CA):絕對可信任的機(jī)構(gòu),是證書鏈的基礎(chǔ)。
證書簽發(fā):CA首先向KMC申請密鑰,接著獲得從KMC傳來的一對密鑰,將公鑰、用戶個人信息和用戶角色放入證書中,使用CA的公鑰進(jìn)行證書簽名,將證書保存一份在證書目錄服務(wù)器中。同時,通過數(shù)據(jù)簽名的方式將證書傳輸給申請的子節(jié)點。
證書注銷:將需要注銷的證書從目錄服務(wù)器中移除。
證書更新:用戶的角色改變時,需要證書更新,首先注銷證書,更新的其他流程和證書簽發(fā)的流程一樣。
簽名驗證:通過CA私鑰對用戶證書中的CA簽名進(jìn)行驗證,判斷證書是否有效。
(2)密鑰管理微服務(wù)(Key Management Center,KMC):用于證書鏈中的密鑰管理。
密鑰生成:使用RSA[17]、SM2[18]、SMAE[19]三種算法生成密鑰,生成的密鑰要具有唯一性,保存在密鑰儲存中心。
密鑰分發(fā):提取密鑰儲存中心的密鑰,分發(fā)給CA,密鑰不可以重復(fù)的使用,密鑰分發(fā)時使用數(shù)據(jù)簽名的方式,確保密鑰在傳輸過程中的安全。
密鑰儲存:用來儲存生成的密鑰,需要加密保存在密鑰儲存中心,用于加密的密鑰只有KMC可用。密鑰儲存有兩個用處:當(dāng)用戶的私鑰丟失時可以,可以申請重新獲得;可以在空閑的時候生成密鑰保存,減輕系統(tǒng)因證書申請時的并發(fā)壓力。
密鑰撤銷:刪除密鑰儲存中心中需要撤銷的密鑰。
密鑰更新:用于更新證書中的密鑰,首先需要撤銷舊的密鑰,再分發(fā)新的密鑰供證書使用。
(3)數(shù)據(jù)簽名認(rèn)證微服務(wù):使用數(shù)據(jù)簽名認(rèn)證,保證由數(shù)據(jù)整合系統(tǒng)上傳的數(shù)據(jù)來源的正確性以及數(shù)據(jù)不被篡改。
(4)加密/解密微服務(wù):加密/解密儲存在整合數(shù)據(jù)儲存云平臺中的數(shù)據(jù)。
解密模塊用于解密用戶有權(quán)限訪問的數(shù)據(jù)信息,只有有權(quán)限訪問的用戶才會進(jìn)行相應(yīng)數(shù)據(jù)的解密。
加密模塊有兩個用途,一種是針對整合數(shù)據(jù)的等級,采用對應(yīng)的加密算法[20]進(jìn)行數(shù)據(jù)加密,保證數(shù)據(jù)的分級需求與存儲安全;另一種是使用訪問用戶的證書中的公鑰對數(shù)據(jù)進(jìn)行加密,在將加密后的數(shù)據(jù)傳給用戶,只有用戶對應(yīng)的私鑰才可以解密數(shù)據(jù),保證了數(shù)據(jù)在傳輸過程中不被竊取。
(5)用戶權(quán)限驗證微服務(wù):鑒定用戶的證書是否有效,驗證用戶數(shù)據(jù)訪問權(quán)限。
證書驗證模塊:首先檢查用戶上傳的證書是不是由CA進(jìn)行簽發(fā)的,然后在證書目錄服務(wù)器中查找證書,確認(rèn)證書目前是否有效。
權(quán)限驗證模塊:通過證書上子節(jié)點的簽名,確定用戶來源于哪個子節(jié)點,然后去角色權(quán)限數(shù)據(jù)庫查找對應(yīng)子節(jié)點的角色權(quán)限,判斷用戶的角色是否可以訪問所申請的數(shù)據(jù)。
(6)用戶訪問記錄微服務(wù):記錄用戶的訪問信息,保證用戶訪問的可追溯。
記錄了用戶對數(shù)據(jù)所有的訪問信息,方便追溯用戶的操作,保證用戶對數(shù)據(jù)操作的不可抵賴性。
用戶訪問數(shù)據(jù)的流程如圖11所示。
圖11 用戶訪問數(shù)據(jù)流程Fig.11 Steps for users to get data
對數(shù)據(jù)安全整合應(yīng)用效果進(jìn)行了系統(tǒng)展示,系統(tǒng)使用基于Spring Cloud微服務(wù)架構(gòu)搭建。
數(shù)據(jù)整合子系統(tǒng)的展示如圖12(a)、(b)、(c)、(d)所示,系統(tǒng)操作方便、靈活,無需預(yù)先定義好整合的模板,直接可以進(jìn)行可視化的數(shù)據(jù)整合操作。
圖12 數(shù)據(jù)整合子系統(tǒng)展示界面Fig.12 Show of data integration subsystem
在數(shù)據(jù)安全應(yīng)用子系統(tǒng)中,用戶申請數(shù)據(jù)訪問時,首先需要進(jìn)行用戶登錄,用戶登錄界面如圖13所示,用戶需要輸入賬號與密碼,還要上傳用戶所擁有的數(shù)字證書,供云中心平臺驗證用戶身份與權(quán)限。
圖13 用戶登錄界面Fig.13 UI of user login
用戶登錄成功后,申請數(shù)據(jù)訪問,如果用戶驗證通過,使用XML進(jìn)行數(shù)據(jù)封裝,并用用戶證書的公鑰對封裝后的數(shù)據(jù)進(jìn)行加密傳輸,如圖14所示。
圖14 數(shù)據(jù)加密傳輸Fig.14 Encrypted data transporting
對于數(shù)據(jù)在前端的展示,如果用戶有權(quán)限訪問數(shù)據(jù),用戶接收到數(shù)據(jù)后,使用證書所對應(yīng)的用戶私鑰在后臺解密數(shù)據(jù),解密后數(shù)據(jù)顯示在前端,供用戶查看,如圖15(a)所示;如果用戶權(quán)限驗證失敗,即沒有所申請數(shù)據(jù)的訪問權(quán)限,云中心節(jié)點將拒絕用戶的訪問申請,前端將信息反饋給用戶,如圖15(b)所示。
圖15 用戶訪問數(shù)據(jù)前端展示界面Fig.15 UI of user visiting data
針對分布式系統(tǒng)中的數(shù)據(jù)整合安全應(yīng)用的需求,結(jié)合物聯(lián)網(wǎng)終端評測平臺,設(shè)計實現(xiàn)了一個基于微服務(wù)的應(yīng)用系統(tǒng),包含數(shù)據(jù)整合子系統(tǒng)與數(shù)據(jù)安全應(yīng)用子系統(tǒng)。在系統(tǒng)設(shè)計中,將系統(tǒng)功能微服務(wù)化,微服務(wù)之間相互解耦,從而滿足應(yīng)用平臺的高可擴(kuò)展性和運維、部署便利性。在數(shù)據(jù)整合安全應(yīng)用中,設(shè)計并實現(xiàn)了一種輕量級的數(shù)據(jù)整合系統(tǒng);同時,針對實際需求,采用結(jié)合數(shù)據(jù)分級與用戶角色劃分的方法,實現(xiàn)了用戶對數(shù)據(jù)的訪問控制,使用數(shù)字證書賦予用戶身份信息,采用證書鏈模型,進(jìn)行角色分配管理,使角色分配更準(zhǔn)確、靈活,也緩解了云中心節(jié)點分配角色的壓力,具有較好的實用性。