漆瑞豐,周建中,劉 懿
(1.華中科技大學土木與水利工程學院,湖北 武漢 430074;2.華中科技大學數字流域科學與技術湖北省重點實驗室,湖北 武漢 430074)
以數據為驅動中心,一大批水利信息化系統,如防洪調度、大壩安全監測、水資源智慧調配等在各單位有效部署運行;這有力支撐了水利行業各項業務工作[1]。水文、氣象、地形等數據由于其特殊性,往往具有較高的安全等級,在水利信息化快速發展的同時,保障這些數據在網絡傳輸過程中的信息安全成為水利信息化進一步安全快速發展的必要條件。水利行業各級單位在網絡安全法的基礎上,統籌考慮水利信息化過程中可能遇到的各種安全問題,高起點頂層設計;初步建立起網絡安全保障體系[2]。
傳統的水資源管理系統采用單體式架構,每一個服務完整承擔前后臺功能,每個業務系統都是獨立的整體。但隨著水資源管理決策支持系統越來越多,數據安全等級越來越高,傳統單體式架構已經難以滿足當前業務需求,所以現在的水資源管理決策支持系統采取了前后端分離的微服務架構。
在微服務架構下,基于簡單Session/Cookie的認證方式已無法滿足分布式微服務系統的認證、鑒權需求。因此,為了適應如今系統框架和安全需求的變化和日益復雜的業務需求,需要將系統的認證鑒權模塊獨立出來。基于token令牌網絡安全體系的隨機性強、不可預測性高以及無法輕易破解等特點恰好滿足了水資源管理決策支持系統專業化復雜業務應用對安全性的需要。
身份認證是防止非法用戶進入系統訪問受保護資源、服務的重要方法,也是部分網絡攻擊的重要手段[3]。采用token身份認證機制,能較好解決當前水資源管理決策支持系統中的身份認證及權限鑒別等問題。當物聯網客戶端(用戶或者終端設備)發起登錄或連接請求時,系統服務器端會根據用戶或者物聯網終端設備的注冊信息,生成一串用于用戶訪問憑據的字符串,并將其反饋給客戶端作為token令牌[4]。
基于token的身份認證,用戶的密碼等信息將不再存儲在客戶端或者服務端。在解決敏感信息存儲問題的同時釋放了服務器資源,而且服務端不用再耗費資源判斷用戶是否處于登錄狀態[4]。下面詳細闡述基于token的身份認證方法[5-7]:
步驟1,客戶端使用用戶名和密碼請求登錄。
步驟2,服務端收到請求,去驗證用戶名與密碼。
步驟3,驗證成功后,服務端簽發一個token,token與用戶名對應。token一般可存儲在緩存或數據庫中,方便查詢驗證;再把token發送給客戶端。
步驟4,客戶端收到token后將其存儲在數據庫或者Local Storage中。
步驟5,客戶端每次向服務端請求資源時,需要標識服務端簽發的token信息。
步驟6,服務端收到請求后,驗證客戶端請求標識的token,如果驗證成功,返回請求的數據(見圖1)。

圖1 token驗證步驟
token技術是搭建水資源管理決策支持系統網絡安全框架的關鍵技術。利用此技術,可以將受保護的后臺水利專業模型資源和前端瀏覽器或者客戶端隔離,從而保障后臺的資源安全;同時,當水資源管理決策支持系統有拓展業務需求時,可以借助token進行鑒權,在保障安全的同時直接進行數據共享,避免了各個系統重新整合的麻煩。
分布式系統架構是將分散的計算機資源整合為一個整體,向用戶提供一致性調用、監控和管理功能的系統結構;同時,將系統擁有的多種通用的物理和邏輯資源,根據任務需求動態分配,并通過計算機網絡實現物理和邏輯資源的信息交換。
本文考慮到水資源管理決策支持系統采用基于面向服務(SOA)的架構技術,將水資源管理多專業模型服務統一部署,以小規模服務集群的方式運行,通過服務接口的方式提供給應用開發者。為此,采用token技術搭建統一權限中心,對整個系統的安全權限進行管理;同時,搭建統一數據服務系統,避免大量第三方應用直接讀寫數據庫對數據庫造成安全威脅。
2.1.1 安全框架構建
在上述的分布式架構中,為了保證前端瀏覽器和后臺服務、后臺服務與數據庫的通信安全,防止用戶信息(用戶名/密碼)泄露,設計了如圖2所示的安全框架。

圖2 安全框架示意
安全框架分為4個角色:
(1)資源擁有者(resource owner)。水利模型服務資源實際擁有者,擁有定義實際訪問權限或授權許可的實體,通常是水利流域管理部門。如,各流域水資源部、梯調中心等,也可包括后續可接入系統的其他水利專業模型的開發部門。在本網絡安全中框架,資源擁有者為流域管理者,是具有流域調度權限的調度部門。使用水資源管理支持系統的專業調度人員在獲得流域管理者(資源擁有者)的授權后,便可以請求相應水利專業模型,并得到相關結果。流域調度人員可以通過Web瀏覽器、PC桌面客戶端或者移動終端應用等支持REST服務的終端請求服務。
(2)資源服務器(resource server)。它用于存儲用戶受保護的數據和服務資源,如發電優化模型水電站96點日計劃對應表、中長期預報最大最小值儲存表等流域和水庫運行相關信息;中長發電期優化調度、庫群模擬及河道模擬等專業水利業務計算模型。流域調度員(客戶端)通過授權令牌向資源服務器請求資源,資源服務器處理訪問請求。受保護的水利專業模型等資源部署在資源服務器中,被封裝成服務并對外提供可調用。
(3)統一鑒權中心(Unified Authentication Center)。統一鑒權中心擁有者為流域相關調度部門,由相關流域職能部門決定調度員是否具有相關水利模型或數據的調用權限。統一鑒權中心是網絡安全框架的核心組件,它承擔了系統登陸認證發放token、授權的核心功能。當外部請求水利專業模型服務接口時,會先被統一鑒權中心攔截,身份驗證通過后發放token。
(4)統一數據服務(Unified Data Service)。該服務用于接收資源服務器的服務發送帶token的數據庫操作請求,解析請求頭字段中的token信息,并向統一鑒權中心發送token驗證請求,在接收到統一鑒權中心返回的token合法信息后,對數據庫進行相應的增、刪、改、查操作,返回數據信息或操作結果給資源服務器。
基于token令牌的網絡安全體系框架,可將水資源管理決策系統中的后臺重要服務資源和前端瀏覽器或客戶分離,保障了后臺服務和數據庫數據的安全。同時,在網絡傳輸過程中,不直接傳輸用戶名和密碼,而是用于證明身份的token值,進一步保障了用戶的信息安全,提高了系統的整體安全性。
2.1.2 基于token的認證及鑒權
在水資源管理決策支持系統的實際應用中,一般用戶只有訪問一般后臺服務的需求,而系統管理員承擔著用戶的創建、刪除、修改等任務。針對此需求,應用系統給用戶設計了不同的權限等級。不同用戶登陸后,根據角色不同,可以請求到服務端不同的資源。用戶登錄是基于令牌身份認證的核心功能。具體登錄過程時序見圖3。

圖3 登陸時序示意
基于token的水資源管理決策支持系統登陸過程和處理機制如下:當用戶第一次登陸時,瀏覽器會將用戶名密碼加密,并用post請求將密文發送到資源服務器。在資源服務器接收到請求之前,授權服務器會將請求攔截,獲取請求參數的用戶名密碼,調用認證服務。認證服務將會根據用戶名從數據庫中取出用戶真實密碼,對比兩者的差異,若認證通過則生成token令牌。最后,認證服務器將驗證結果和生成的token令牌返回給客戶端或前端瀏覽器,客戶端或前端瀏覽器將令牌存儲在本地,作為請求資源的鑒權憑證。
當前用戶再次請求后臺受保護水利專業模型服務時,會將上次登陸時儲存在瀏覽器緩存中token值加到請求頭字段中一起發送給后臺指定REST服務。后臺服務接收到請求之后,首先解析請求頭信息,提取對象信息和token值并將其發送給授權服務器。授權服務器根據用戶信息在數據庫中驗證token的合法性并對其角色進行判斷,確認令牌合法性和對應角色之后再請求對應的資源服務獲取用戶所需資源,并返回結果給資源控制器[6];最后將數據返回到前端。
隨著現代水利信息資源的深入開發和利用,越來越多的專業模塊集成到水資源管理決策支持系統;同時,還會有其他的系統或者服務調用本系統的接口或者計算數據。在這種應用背景下,重新將兩個系統進行整合不僅難度大,費時費力,延誤系統應用的最佳時期;而且將本系統水利專業模型服務接口全部暴露,增加安全隱患。而基于token的鑒權方案可以完美解決這一實際難題。若有第三方系統或者應用需要接入水資源管理決策支持系統時,系統管理員會分配給此應用一個client_ID。當其請求受保護資源時,將會被授權服務器攔截。授權服務器判斷請求角色,判斷角色是否具有訪問權限,若具有訪問權限則發放token,第三方攜帶token便可以請求資源服務器的相關水利專業資源。系統鑒權流程如圖4所示。

圖4 基于token的鑒權流程示意
水資源管理決策支持系統網絡安全體系框架提供了一套完整的身份認證鑒權流程及方法,以此為基礎,開展了系統集成工作,并研究了安全框架的實現技術。
(1)Spring Security。Spring Security是一個能夠為基于Spring的企業應用系統提供聲明式安全訪問控制解決方案的安全框架。其提供了一組可以在Spring應用上下文中配置的Bean及相關的配置文檔,借助IOC(控制反轉),DI(依賴注入)和AOP(面向切面編程)功能將用戶身份認證進行統一的管理,從而實現對資源訪問的綜合管控與維護[8]。Spring Security本質是提供了一整套完整的過濾器鏈,方便快捷的攔截請求,將生成的token值添加到請求頭發送至下一服務。全面利用Spring所提供出的強大功能,為各企業當中所使用的程序自身安全性能提供了有效且快速的解決方案[9]。采用Spring Security技術,可以為快速為水資源決策支持系統網絡安全體系提供網絡請求攔截技術,方便自定義生成token值。
(2)OAuth2.0協議。OAuth2.0協議是一種專門針對跨平臺應用之間認證授權而設計的框架協議,其最新版本OAuth2.0于2012年10月發布,稱為RFC 6749[10]。該協議允許在應用之間通過重定向方式讓用戶顯示而明確地參與授權過程,并且保護用戶關鍵的憑證(口令)信息[11-12],允許第三方應用程序使用該用戶的私有資源(如個人信息、照片、通訊錄等),而無需將用戶名和密碼直接提供給第三方應用程序。OAuth2.0協議已經成為互聯網上主流的開放平臺授權方式,得到了眾多互聯網企業支持[10-14]。OAuth2.0協議為水資源管理決策支持系統的可拓展性提供了技術支持,可以在保護用戶信息和資源安全的前提下允許第三方應用訪問,使得系統的應用更加廣泛。
金沙江下游—三峽梯級水庫群是長江流域最大的水庫群,水能資源豐富。針對該水庫群防洪、發電的復雜需求,需研發一套滿足各方面綜合需求的水資源管理決策支持系統。系統的所有數據全部存儲在三峽梯調數據服務器的數據庫中,涉及長江上游干支流流域氣象水文數據,河道、水庫、機組基礎數據,以及金沙江—三峽梯級各水庫的各個時間段的流量、出力、水頭、發電量和水庫運行工況等數據。采用本文研究方法,搭建的基于token令牌的水資源管理決策支持系統網絡安全框架如圖5所示。

圖5 水資源管理決策支持系統網絡安全框架

圖6 請求得到token值

圖7 請求服務時攜帶token值
基于token令牌的網絡安全框架體系已集成到金沙江下游—三峽梯級水資源管理決策支持系統,并經過安裝、測試、部署和試運行,目前已經在中國長江電力股份有限公司宜昌梯級調度中心上線應用。系統相關界面和應用效果以及相應token生成流程如圖6、7所示。
本文通過分析傳統基于Session/Cookie的網絡安全認證流程及其認證方式的不足,闡述了基于token的網絡認證方式的優勢,結合水資源管理決策支持系統搭建了一套網絡安全體系,既保護了后臺資源、數據,提升了系統的安全性,又避免了用戶重復登陸的繁瑣操作,提高了用戶體驗。目前水資源管理決策支持系統網絡安全體系生成的token值由OAuth2.0內置實現,后續還可以對token值的生成算法進行改進,增強個性化,為使用系統的用戶建立更加完善的安全屏障。