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