洪 鉑,朱韋橋
(中國鐵道科學研究院 電子計算機研究所,北京 100081)
針對鐵路企業(yè)點多、線長、面廣的行業(yè)特征,統(tǒng)一規(guī)劃建設的鐵路企業(yè)社會保障管理信息系統(tǒng)(簡稱:鐵路社保系統(tǒng)),主要涵蓋鐵路企業(yè)社會保險(五險)、企業(yè)年金、補充醫(yī)療保險等方面業(yè)務,在解決企業(yè)社會保障日常業(yè)務管理存在政策差異大、內容瑣碎、量大、復雜等問題的同時,幫助鐵路企業(yè)實現(xiàn)職工社會保障“記錄一生、保障一生、服務一生”的服務宗旨[1-2]。
鐵路社保系統(tǒng)具有政策性很強、需求變化頻繁等特點,在系統(tǒng)的建設過程中社會保險、企業(yè)年金和補充醫(yī)療保險的業(yè)務劃分較為獨立。集中式的架構不僅難以滿足這種相對獨立的開發(fā)模式,更在可擴展性、可維護性、靈活性、維護成本等方面很難滿足業(yè)務快速變化的需要。
在實踐中,我們采用了分布式架構,它是一套構建系統(tǒng)的準則,可以把一個復雜的系統(tǒng)劃分為一套簡單系統(tǒng)的計劃,各系統(tǒng)之間應該保持相互獨立,并與整個系統(tǒng)架構保持一致,采用分布式架構搭建的系統(tǒng)具有更加經濟、更易擴展、數(shù)據(jù)共享性更好等特點。
使用分布式架構建設的鐵路社保系統(tǒng)在軟件上解決了各項應用和獨立系統(tǒng)之間的在架構上的融合問題,也提高了系統(tǒng)在集群部署環(huán)境下的適應性。同時在技術復雜度不斷提高的情況下,隨之而來的信息安全風險也日益凸顯[3],身份認證作為系統(tǒng)的第一道安全防線,研究與實現(xiàn)符合鐵路社保系統(tǒng)需求的統(tǒng)一身份認證平臺就顯得尤為重要。
1.1.1 單點登錄技術
鐵路社保系統(tǒng)使用基于票據(jù)的方式來實現(xiàn)單點登錄。通過票據(jù)認證服務器功能的擴展,令票據(jù)認證服務器不僅可以為用戶生成認證票據(jù)完成授權應用服務器的訪問[4],也可以提供訪問控制、集中審計等功能,來滿足鐵路社保系統(tǒng)的個性化需求。
1.1.2 Session共享技術
鐵路社保系統(tǒng)采用分布式服務集群進行部署,引入Session共享服務器方式解決集群中Session不可跨服務器而存在的問題。Session共享服務器是在集群中設置服務器來統(tǒng)一存放和提供所有系統(tǒng)的Session[5-6]。這是實現(xiàn)Session共享最為復雜的方式,但只要配置得當,其性能、可靠性、擴展性和適應性也是最高的。
1.1.3 Redis內存數(shù)據(jù)庫技術
鐵路統(tǒng)一身份認證平臺采取Redis集群作為票據(jù)存儲和Session共享服務器,主要是出于2個方面的考慮:
(1)內存數(shù)據(jù)庫的I/O操作的高效,使用集群部署后其安全性和穩(wěn)定性提升[7];
(2)Redis內存數(shù)據(jù)庫能夠提供較為豐富的數(shù)據(jù)結構,為系統(tǒng)擴展提供了更多的可能[8]。
鐵路社保系統(tǒng)的統(tǒng)一身份認證有兩方面的特點:
(1)需支持單位信息、身份證、工號、用戶名等組合認證方式;
(2)滿足多個自主建設應用和各類商業(yè)軟件的集成需求。因此鐵路社保系統(tǒng)的身份認證平臺將票據(jù)方式的單點登錄和Session共享服務器結合,即將Session共享服務器的功能擴展,使其支持票據(jù)管理。
平臺設計的核心:將內存數(shù)據(jù)庫作為登錄信息、Session信息和票據(jù)信息的存儲介質,規(guī)避登錄信息的跨域傳遞、減少與客戶端的交互,達到全面提高系統(tǒng)的安全性的目的。
鐵路社保系統(tǒng)統(tǒng)一身份認證平臺面臨3個方面的挑戰(zhàn):票據(jù)生命周期管理、Session共享服務策略和Session的銷毀機制設計。
鐵路社保系統(tǒng)統(tǒng)一身份認證平臺的功能,主要體現(xiàn)在5個“集中”上,如圖1所示。
圖1 社保系統(tǒng)統(tǒng)一身份認證功能設計
集中用戶管理:鐵路企業(yè)職工既是鐵路社保系統(tǒng)的業(yè)務主體,也是鐵路社保系統(tǒng)的用戶主體,集中用戶管理應滿足業(yè)務辦理和集中授權管理的需要。
集中票據(jù)管理:票據(jù)生成規(guī)則的靈活配置,可以集成第三方證書或密鑰,對票據(jù)的生命周期進行管理。
集中認證管理:在訪問策略的規(guī)范下實現(xiàn)統(tǒng)一認證,防止不安全的鏈接入侵。
集中授權管理:這是社保系統(tǒng)集中菜單展示的必要手段,也支持應用或子系統(tǒng)獨立授權。
集中審計管理:記錄、查詢、分析各類審計信息,包括用戶登錄、系統(tǒng)操作等。
Session管理:對用戶登錄信息進行記錄,提供Session有效期管理和同步服務。
如圖2所示,統(tǒng)一身份認證的實現(xiàn)過程為:
(1)統(tǒng)一入口進行單點登錄,通過身份認證中心驗證后,將用戶登錄信息存儲至Session信息中心。
圖2 鐵路社保系統(tǒng)統(tǒng)一身份認證實現(xiàn)過程
(2)訪問應用和子系統(tǒng)時,生成票據(jù)信息存入Session共享服務器,憑證傳遞給應用或子系統(tǒng)。應用或子系統(tǒng)從Session共享服務器中取得票據(jù)信息和登錄信息,依據(jù)登錄信息生成應用或系統(tǒng)的Session。
(3)登錄信息可跨集群中進行共享,應用或系統(tǒng)的Session信息存儲在Session共享服務器中,滿足應用或系統(tǒng)自身集群的同步需要。
登錄完成,第1次訪問應用或子系統(tǒng)時,如圖3所示,單點登錄服務生成合法生成票據(jù),將票據(jù)存入Session共享服務器,憑證傳送給應用或子系統(tǒng)。應用或子系統(tǒng)依據(jù)憑證從Session共享服務器中取得票據(jù)信息和登錄信息,生成自身Session。
圖3 第1次訪問應用時票據(jù)使用的順序圖
第2次訪問應用或子系統(tǒng)時需使用新的票據(jù)和憑證,如圖4所示,驗證登錄信息。如登錄信息已失效,應用或子系統(tǒng)同時失效;如登錄信息未失效,更新登錄信息失效時間,將登錄信息返回給應用或子系統(tǒng)。應用或子系統(tǒng)在取得登錄信息后,如果自身Session未失效,則更新自身Session的失效時間;否則,使用登錄信息再次獲取應用或子系統(tǒng)的Session。
鐵路社保系統(tǒng)中自主開發(fā)的應用使用統(tǒng)一身份認證平臺的Session共享服務,實現(xiàn)方式,如圖5所示。
(1)單點登錄成功后,生成一個主Session ID和各應用的Session ID,在應用生成自身Session后,主Session ID和應用的Session ID形成聯(lián)合主鍵(簡稱:Session共享主鍵)用于存儲應用的Session。
圖4 第2次訪問應用時票據(jù)使用的順序圖
圖5 Session共享服務實現(xiàn)流程圖
(2)票據(jù)信息中含Session共享主鍵,如果主Session ID無法檢索到對應的信息則登錄失效;如果主Session ID和Session共享主鍵在Session共享服務器中均有效,同時更新主Session和本應用Session的失效時間;如果Session共享主鍵未被檢索到,但是主Session ID可以檢索到信息,則通過登錄信息為應用再次創(chuàng)建Session;。在Session變化時,應及時推送到應用集群中。
(3)票據(jù)信息中不包含Session共享主鍵意味著應用非法或認證失效,需進行應用注冊或重新認證。
Session的銷毀機制包括3個方面:
(1)有效時間控制:使用Session共享服務器提供的Session有效時間管理實現(xiàn)統(tǒng)一控制。
(2)退出登錄:任一系統(tǒng)操作退出登錄,即刪除Session共享服務器中用戶所有信息。
(3)關閉瀏覽器:將上述2.3中所描述的主Session ID存入客戶端Cookie。瀏覽器關閉時,依據(jù)朱Session ID清除信息,如圖6所示。
圖6 Session銷毀機制實現(xiàn)的順序圖
該平臺已經在鐵路社保系統(tǒng)中成功應用,覆蓋了所有子系統(tǒng)及功能模塊,實現(xiàn)了數(shù)十萬用戶、百余個角色的統(tǒng)一身份認證,保證了用戶在系統(tǒng)中進行身份一致的有限訪問。統(tǒng)一身份認證平臺確保社保系統(tǒng)安全認證策略的統(tǒng)一,為用戶行為分析打下基礎,初步實現(xiàn)了資源的集約復用和服務的靈活交付,其關鍵技術都得到了驗證。
例如,在社保系統(tǒng)中,企業(yè)年金管理子系統(tǒng)不僅要對年金理事會的日常業(yè)務進行管理,也需要對年金基金市場化運作數(shù)據(jù)進行分析,實現(xiàn)年金基金的有效監(jiān)督。因此企業(yè)年金管理子系統(tǒng)由自主開發(fā)的理事會管理業(yè)務模塊和第三方專業(yè)分析系統(tǒng)組成,且需要與多方外部機構業(yè)務系統(tǒng)(賬管人、托管人和投資管理人等)進行頻繁交互。統(tǒng)一身份認證平臺的成功應用,不僅平滑連通了各系統(tǒng)和模塊,也為數(shù)據(jù)交互提供了訪問控制策略,使數(shù)據(jù)的傳輸過程更加安全。
通過統(tǒng)一身份認平臺的建設,改善了鐵路社保系統(tǒng)的用戶體驗,使系統(tǒng)的結構和功能更加合理。統(tǒng)一身份認平臺作為系統(tǒng)網絡安全的重要組成部分,還需要在結合業(yè)務系統(tǒng)發(fā)展需求的基礎上,進一步與商業(yè)級的PKI/CA和云計算技術進行結合,使系統(tǒng)更加安全可靠。
[1]中國鐵道科學研究院. 中國鐵路總公司人力資源管理信息系統(tǒng)社會保障管理應用總體方案[R]. 北京:中國鐵道科學研究院,2015,12.
[2]中國鐵路總公司.鐵路信息化總體規(guī)劃[R]. 北京:中國鐵路總公司,2017.
[3]史天運.鐵路行業(yè)信息安全管理面臨的挑戰(zhàn)及對策探討[J].鐵路計算機應用,2015,24 (2):1-4.
[4]淡 艷,尹 謙.單點登錄系統(tǒng)模型分析 [J].成都大學學報:自然科學版,2008(27):123-126.
[5]趙艷芳,蔣云起.Web服務器負載均衡會話保持的研究 [J].云南民族大學學報:自然科學版,2011,20(4):296-300.
[6]任國慶.基于內容分類和會話共享的集群負載均衡研究 [D].長沙:湖南大學,2010.
[7]梅巧玲,王明哲,張志強,等.內存數(shù)據(jù)庫在互聯(lián)網余票查詢中的應用[J].鐵路計算機應用,2014,23 (3): 41-44.
[8]Josiah L. Carlson. Redis實戰(zhàn)[M].北京:人民郵電出版社,2015.