胡昌平 姜厚祿 卞德志
摘? 要: 按照國家涉密信息系統(tǒng)分級(jí)保護(hù)標(biāo)準(zhǔn)規(guī)范要求,涉密信息系統(tǒng)需要對(duì)用戶上傳的涉密表單附件標(biāo)定密級(jí),限制低密級(jí)用戶訪問,并且加密存儲(chǔ)。針對(duì)這個(gè)共性需求,提出了一種涉密表單附件PaaS服務(wù)設(shè)計(jì)方案,為基于PaaS平臺(tái)搭建的各類涉密應(yīng)用提供統(tǒng)一的附件服務(wù),實(shí)現(xiàn)涉密附件的上傳、登記、加密、存儲(chǔ)、下載和管理功能,按照保密標(biāo)準(zhǔn)嚴(yán)格控制附件的允許訪問的人員范圍,上傳下載過程中自動(dòng)加密、解密,加密過程對(duì)用戶透明,同時(shí)利用PaaS技術(shù)平臺(tái)提供的應(yīng)用伸縮能力,解決大批量文件加解密帶來的性能瓶頸問題。
關(guān)鍵詞: 涉密;表單附件;PaaS
【Abstract】: According to the national standards for classified protection of classified information systems, classified information systems need to identify secret level of classified forms attachment, restrict accessing of low-classified users , and store attachment with encryption. Aiming at this common requirement, a PaaS service design for classified form attachments is proposed, which provides a unified attachment service for all kinds of classified applications based on PaaS platform, realizes the functions of uploading, registering, encrypting, storing, downloading and managing for attachments, and strictly controls the accessors of attachments according to the security standards. user scope, implements automatic encryption and decryption in the process of uploading and downloading, the encryption process is transparent to users. At the same time, the application scalability provided by PaaS platform is used to solve the performance bottleneck caused by the encryption and decryption of large quantities of documents.
【Key words】: Classified; Form attachment; PaaS
0? 引言
PaaS作為新一代的云計(jì)算平臺(tái),目前在業(yè)界得到了廣泛的關(guān)注與討論,它采用服務(wù)提供商向客戶端提供平臺(tái)的方式,提供標(biāo)準(zhǔn)化的編程框架和服務(wù)來幫助加速應(yīng)用開發(fā),實(shí)現(xiàn)無需感知底層資源的應(yīng)用自動(dòng)化運(yùn)維?;赑aaS的應(yīng)用開發(fā)與部署已成為未來軟件技術(shù)發(fā)展趨勢(shì),在涉密應(yīng)用開發(fā)領(lǐng)域,需要研究如何基于PaaS平臺(tái)來為涉密信息系統(tǒng)提供基礎(chǔ)的統(tǒng)一開發(fā)服務(wù)資源,而涉密附件的管理就是這樣的公共基礎(chǔ)需求,按照國家涉密信息系統(tǒng)分級(jí)保護(hù)標(biāo)準(zhǔn)規(guī)范要求,需要對(duì)用戶上傳的文件設(shè)定密級(jí)限制低密級(jí)用戶訪問,并且加密保存。
近年來針對(duì)涉密數(shù)據(jù)文件存儲(chǔ)安全的研究,包括云環(huán)境中文件安全存儲(chǔ)技術(shù)研究[1,5,7],涉密信息系統(tǒng)中數(shù)據(jù)和文件管控策略和方法的研究[3,6],以及基于傳統(tǒng)應(yīng)用架構(gòu)設(shè)計(jì)的涉密應(yīng)用[2,4],而本文提出的是一種基于PaaS平臺(tái)搭建表單附件服務(wù)的設(shè)計(jì)方案,能夠?qū)崿F(xiàn)涉密附件的上傳、下載過程中自? ?動(dòng)加密、解密,加解密過程對(duì)用戶透明,為基于PaaS平臺(tái)搭建的各類涉密應(yīng)用提供統(tǒng)一的附件服務(wù)? ?接口。
1? 總體設(shè)計(jì)
1.1? 組成部分
附件PaaS服務(wù)封裝了附件的公共應(yīng)用和管理邏輯,提供了統(tǒng)一的附件接口。服務(wù)中的主要組成部分包括:
附件目錄數(shù)據(jù)庫:記錄文件及文件切片信息。
文件庫:提供附件存儲(chǔ)能力,同時(shí)對(duì)庫容量進(jìn)行管理,低于容量閾值發(fā)出預(yù)警信息。文件庫類型包括文件存儲(chǔ)、分布式對(duì)象存儲(chǔ)等。
上傳服務(wù):提供統(tǒng)一的附件上傳API,接收瀏覽器上傳的文件切片流,進(jìn)行注冊(cè)、加密、存儲(chǔ)。
分片讀取服務(wù):讀取文件切片并解密。
下載服務(wù):提供統(tǒng)一附件下載API,接收用戶下載請(qǐng)求,并行調(diào)用分片讀取服務(wù),合并分片,并返回完整文件流給用戶。
管理服務(wù):提供附件信息查詢、維護(hù)等服務(wù)功能。
1.2? 上傳過程
附件上傳過程如圖1所示。
用戶請(qǐng)求上傳文件,支持HTML5標(biāo)準(zhǔn)的瀏覽器將分片讀取文件內(nèi)容,分為多個(gè)線程,同時(shí)發(fā)出多個(gè)上傳分片請(qǐng)求,API網(wǎng)關(guān)驗(yàn)證用戶身份,鑒權(quán)通過后,將請(qǐng)求平均分配到附件上傳服務(wù)集群中并行處理,上傳服務(wù)注冊(cè)文件和切片信息,生成隨機(jī)文件密鑰,加密切片文件流,然后將文件切片保存到指定的文件存儲(chǔ)中。
分片上傳架構(gòu),提高了上傳速率,PaaS平臺(tái)可以根據(jù)負(fù)載及時(shí)增加服務(wù)容器節(jié)點(diǎn)數(shù)量,應(yīng)對(duì)高并發(fā)附件請(qǐng)求負(fù)載,解決加密帶來的高負(fù)載問題,同時(shí)文件分片解決了服務(wù)端請(qǐng)求字節(jié)大小限制導(dǎo)致大附件上傳失敗的問題,因?yàn)槊總€(gè)分片都不會(huì)超過最大請(qǐng)求大小的限制。
1.3? 下載過程
附件下載過程如圖2所示,下載服務(wù)接收用戶請(qǐng)求,驗(yàn)證用戶身份,檢查用戶密級(jí)是否達(dá)到文件密級(jí)要求,如果不符合就拒絕下載,如果符合就開啟多線程并發(fā)讀取方式,同時(shí)發(fā)出多個(gè)分片加載請(qǐng)求,調(diào)用分片讀取服務(wù),分片讀取服務(wù)從文件庫中讀取文件切片流,然后使用對(duì)應(yīng)的文件密鑰解密,將解密后的文件切片返回給下載服務(wù),下載服務(wù)將返回的文件分片按順序?qū)懭胂螺d附件服務(wù)的響應(yīng)流,用戶或者應(yīng)用服務(wù)獲取到完整的原文文件。分片讀取服務(wù)可以將解密文件的負(fù)載均勻的分配到不同的主機(jī)上,并行讀取解密文件切片,加速下載。
2? 主要部件設(shè)計(jì)
2.1? 附件目錄數(shù)據(jù)結(jié)構(gòu)
附件目錄數(shù)據(jù)庫用于存儲(chǔ)文件、切片信息和相關(guān)的附件配置信息,主要的數(shù)據(jù)實(shí)體包括:
應(yīng)用:記錄PaaS平臺(tái)中包含哪些應(yīng)用。
附件配置:附件配置信息隸屬于應(yīng)用,在應(yīng)用范圍內(nèi)通過配置標(biāo)識(shí)互相區(qū)分。一條附件配置定義了同一類附件的配置參數(shù),例如可以定義郵件附件配置、OA收文附件配置、采購申請(qǐng)技術(shù)附件配置等。
文件存儲(chǔ)庫:記錄文件存儲(chǔ)庫相關(guān)信息。
文件信息:保存已上傳附件的相關(guān)信息,文件信息通過“關(guān)聯(lián)表記錄ID”和所屬附件配置的“關(guān)聯(lián)數(shù)據(jù)源”、“關(guān)聯(lián)表名”字段附加到一條業(yè)務(wù)數(shù)據(jù)記錄上。
切片信息:保存附件切片的相關(guān)信息。
2.2? 上傳服務(wù)
在業(yè)務(wù)表單中,用戶設(shè)置文件密級(jí),選擇文件確認(rèn)上傳后,瀏覽器首先構(gòu)造文件信息FileInfo參數(shù)對(duì)象,將文件密級(jí)、業(yè)務(wù)表單記錄ID等相關(guān)信息寫入FileInfo,然后調(diào)用后端的上傳服務(wù)請(qǐng)求分配存儲(chǔ)庫空間,請(qǐng)求過程如圖4所示,請(qǐng)求以文件信息FileInfo對(duì)象為參數(shù),上傳服務(wù)UploadService接收到參數(shù)后,首先根據(jù)文件MD5、文件名、文件大小、文件最后修改時(shí)間信息在文件目錄數(shù)據(jù)庫中查找匹配記錄,如果找到就創(chuàng)建共享文件記錄指向匹配記錄,否則再判斷文件對(duì)應(yīng)的附件配置中是否指定了文件存儲(chǔ)庫,如果指定了,并且該存儲(chǔ)庫的剩余空間大于文件大小,則為文件分配該文件庫空間,否則,調(diào)用文件庫操作接口FileRepositoryIntf的GetAvailableRepository()方法,遍歷所有文件庫,查找首個(gè)剩余空間大于文件大小的文件庫,并將該文件庫空間分配給文件。分配文件庫空間的操作過程是,首先將文件庫ID寫入文件信息對(duì)象的RepoID字段,將文件信息插入數(shù)據(jù)庫中,同時(shí)增加數(shù)據(jù)庫中文件庫記錄的已占用空間值。整個(gè)操作過程應(yīng)該在一個(gè)完整的數(shù)據(jù)庫事務(wù)中完成,確保數(shù)據(jù)的有效性。如果用戶選擇多個(gè)附件上傳,在每個(gè)附件選中后觸發(fā)的瀏覽器fileQueued事件中,逐個(gè)請(qǐng)求分配文件庫空間。
分配空間之前需要檢查用戶是否具備上傳附件的權(quán)限,首先檢查附件配置的“是否允許上傳”參數(shù)值是否為true,其次如果“允許上傳權(quán)限標(biāo)識(shí)”參數(shù)不為空,檢查用戶是否擁有該標(biāo)識(shí)代表的權(quán)限。這兩個(gè)條件都滿足,用戶才可以上傳附件。
庫空間分配成功后,瀏覽器開始啟動(dòng)多個(gè)線程并行讀取文件切片,并且同步上傳,其中單個(gè)切片上傳過程如圖5所示,瀏覽器將文件ID、切片序號(hào)chunkIndex、切片總數(shù)chunkCount寫入請(qǐng)求的form中,連同切片文件流一起發(fā)送到后端UploadService,服務(wù)根據(jù)fileID參數(shù)獲取fileInfo對(duì)象,再根據(jù)fileInfo.repositoryID參數(shù)獲取repository對(duì)象,如果是當(dāng)前文件的第一個(gè)切片,那么需要將chunkCount寫入到fileInfo數(shù)據(jù)表中(因?yàn)闉g覽器在請(qǐng)求分配空間時(shí),獲取不到chunkCount,所以只能在這里寫入),如果文件的附件配置中啟用了加密,那么還需要產(chǎn)生隨機(jī)的文件密鑰加密文件流, 文件密鑰需要使用系統(tǒng)根密鑰加密后保存到切片信息實(shí)體數(shù)據(jù)對(duì)象中,再存入數(shù)據(jù)庫,同時(shí)調(diào)用repository對(duì)象的save()方法,將文件流寫入文件存儲(chǔ)庫中保存。
上傳過程中因某些原因(如用戶可能會(huì)取消操作或者網(wǎng)絡(luò)故障),導(dǎo)致文件空間已分配,但是文件沒有完整上傳,這種附件是無效的,因此一方面在加載附件列表時(shí)候應(yīng)該忽略無效附件,另一方面應(yīng)該通過計(jì)劃任務(wù)程序及時(shí)清理這些無效文件。
2.3? 下載服務(wù)
平臺(tái)為所有應(yīng)用提供統(tǒng)一的附件下載鏈接地址,通過Http GET方法下載文件,要下載的文件通過fileToken查詢參數(shù)指定。平臺(tái)通過附件配置中的“是否通過臨時(shí)Token下載”參數(shù)設(shè)置不同的fileToken生成方式。分別是以下兩種方法:
(1)直接以文件信息ID作為fileToken,這種情況一般用于敏感度較低的文件。
(2)臨時(shí)生成隨機(jī)fileToken,fileToken與文件ID逐一映射,并存入緩存,超過一定時(shí)間后fileToken在緩存中過期失效,文件下載鏈接也隨之失效。臨時(shí)Token一般在業(yè)務(wù)表單或者流程鑒權(quán)通過后才生成,可以有效的根據(jù)業(yè)務(wù)授權(quán)范圍控制附件的可訪問范圍。
用戶點(diǎn)擊下載鏈接后,下載服務(wù)接收請(qǐng)求的fileToken參數(shù),根據(jù)附件配置的“是否通過臨時(shí)Token下載”參數(shù),如果false,就直接根據(jù)fileToken獲取文件信息,讀取文件;如果為true,就在緩存中查找key為fileToken的緩存項(xiàng),獲取其對(duì)應(yīng)的文件信息ID,找到后,讀取文件,如果沒有找到,就
返回錯(cuò)誤信息,提示鏈接已失效,需要刷新頁面。
3? 結(jié)論
本文給出的涉密表單附件PaaS服務(wù)設(shè)計(jì)方案,實(shí)現(xiàn)了涉密信息系統(tǒng)中對(duì)附件分級(jí)保護(hù),使用應(yīng)用服務(wù)層加解密方法,實(shí)現(xiàn)對(duì)用戶文件透明加密存儲(chǔ),可以利用云端PaaS平臺(tái)提供的負(fù)載均衡和快速伸縮能力,解決了大量文件加密任務(wù)導(dǎo)致的性能瓶頸問題,同時(shí)提供了安全、標(biāo)準(zhǔn)化的附件服務(wù)接口,使得基于PaaS平臺(tái)搭建的應(yīng)用可以快速集成強(qiáng)大的附件服務(wù)功能。
參考文獻(xiàn)
[1]王志剛, 蒲文彬, 滕鵬國. 云計(jì)算下數(shù)據(jù)安全存儲(chǔ)技術(shù)研
究[J]. 通信技術(shù), 2019, 52(2): 471-475.
[2]陳端迎. 涉密信息安全集中管控系統(tǒng)研究與設(shè)計(jì)[J]. 軟件, 2018, 39(6): 201-204.
[3]王又立, 王晶. 一種基于Kerberos 和HDFS 的數(shù)據(jù)存儲(chǔ)平臺(tái)訪問控制策略[J]. 軟件, 2016, 37(01): 67-70.
[4]羅偉雄, 時(shí)東曉, 曾紀(jì)霞, 等. 基于.NET Framework 的增強(qiáng)型加密服務(wù)架構(gòu)[J]. 軟件, 2015, 36(8): 55-62.
[5]肖亮, 李強(qiáng)達(dá), 劉金亮. 云存儲(chǔ)安全技術(shù)研究進(jìn)展綜述[J]. 數(shù)據(jù)采集與處理, 2016,31(3): 464-472.
[6]魏平芬. 涉密電子信息有效管控策略研究[J]. 科技廣場(chǎng), 2016(3): 93-96.
[7]胡元闖, 張波, 張紅軍. 云計(jì)算中一種安全有效的數(shù)據(jù)存儲(chǔ)方案[J]. 計(jì)算機(jī)時(shí)代.