楊少冬
(廣州軟件學院 廣東省廣州市 510000)
教育部印發《教育信息化十年發展規劃(2011-2020年)》中指出高校應充分利用現代信息化技術提升數字化校園建設,尤其是推進數據整合與共享,在促進高校的科學、創新發展具有重要的意義[1]。
當前大多數高校圍繞著信息系統所產生的各種數據集(有的高校稱為公共數據庫或者數據中心),實際上可以在校企合作、智慧校園建設、創新創業或者科研方面發揮更大作用,比如IT 創業或者IT 類科研,很多教師和學生團隊具備軟件開發能力,部分需要依賴于高校的基礎數據集,以及圍繞高校智慧校園的創新應用開發、校政企合作項目開發等,這些項目既有服務于本校,也有服務于當地政府和企業。那么高校作為數據的共享方,如果要將數據安全、可靠的共享出來,應采用什么共享模式?如何制定數據共享規范?共享服務平臺要如何保障數據穩定、安全、可靠?筆者圍繞這幾點問題進行論述。
高校主流的數據共享模式主要有兩種,第一種是基于數據庫與數據庫之間直接數據共享的模式,一般通過中間件,比如采用Oracle ODI(Oracle Data Integrator)作為ETL 定時共享技術,其非實時的缺點很明顯,一般只在特定場景采用[2],或者采用OGG(Oracle GoldenGate),即基于數據庫日志的結構化數據復制技術,可以在不同數據庫之間實時同步[3],但是由于數據權限的控制不足以及,主要是在高校內各個子系統之間共享才采用的技術,一般不對外部系統進行共享。第二種模式則是編寫API(Application Programming Interface),即預先定義數據接口(如HTTP 接口),接口內部封裝了數據的結構和操作細節,用來提供給外部應用程序訪問的一種服務,該模式具有靈活高效的特點,可根據企業、政府和校內各部門或者師生等開發應用的需求,定制不同的HTTP/HTTPS 數據接口,即可完成數據的共享交互。因此,通過API 模式共享數據,完全滿足不同的校內和校外客戶應用(以下簡稱:第三方應用)開發時的數據共享需求。以下是實際研究的API 數據共享模式的總體架構,以高校數據中心作為底層存儲,以API 數據共享服務作為中間橋梁,將企業、政府、科研單位等參與者所需的數據聚合、共享,如圖1 所示。

圖1:數據共享服務平臺總體架構
為了避免出現不規范導致出現后續不可控或者產生歧義,API采用互聯網開放系統設計所用的成熟restful 數據傳輸規范[4],同時規定所有的HTTP 或者HTTPS 請求模式除了使用關鍵的GET、POST 之外,引入另外兩個PUT、DELETE 共4 種請求模式,所有用于查詢數據的接口采用GET 模式,保存數據的接口用POST 模式,更新數據用PUT 模式,刪除數據采用DELETE 模式。
對于共享的數據格式,主流的有基于xml 格式和Json 格式兩種,但是由于Json 格式對比xml 具有的更易于閱讀,同時在傳輸方面占據帶寬更小、解析性能損耗更低等特點,因此統一采用Json數據格式,下面是以第三方應用獲取學生上課時間為例,制定的一個數據格式規范,如表1 所示,數據共享平臺按該規范維護所有的數據結構。
在軟件工程領域,有一個重要設計就是保障業務設計與實施過程的高內聚、低耦合,這在共享服務平臺建設過程中,同樣應遵循這一思想,針對不同的客戶端(校內科研、政府、企業等數據共享對象)所做的數據接口歸為一組獨立服務,不同的服務做好隔離,可以是物理機器上的隔離,也可以是容器化上隔離,如docker 應用容器技術,將應用所需的處理器、網絡、內存、硬盤空間等進行隔離,且所有資源可彈性分配、可實時監控、可快速復制遷移等[5],做到一組服務一個環境,彼此互不影響,最終確保在一組服務故障時,不影響其他服務。

表1:學生課程表微信接口說明
作為一個數據共享服務開放平臺,所面對的不僅僅是校內對象,還有校外對象,一切的數據交互都依賴于網絡,網絡攻擊形形色色,常見的如DDoS 流量攻擊是最為嚴重,為此,保護的措施除了有操作系統級別、有服務平臺級別的保護之外,還應采用更小級別的保護,即每一組服務下的每個共享接口的限流措施(有時稱為API 網關限流)[6]。
接口限流的主流算法有基于令牌桶算法和漏桶算法,兩種算法分別對應不同的使用場景。令牌桶能主要原理通過設置單位時間內的向令牌桶存放令牌數量,只要第三方的請求能拿到令牌,即可放行,主要使用場景在于數據共享接口的程序處理能力比較高,第三方最終用戶群體不固定且偶爾有大流量的時候(簡稱:場景1),能保障異常流量激增時,只要持有令牌都能及時處理完;漏桶算法主要原理是保證單位時間內允許調用的接口次數,即可固定傳輸速率,例如每秒通過100 次的請求,超過的請求會主動丟棄或者拒絕,主要適用于數據共享接口的程序處理能力較弱且最終用戶群體比較固定場景(簡稱:場景2),防止突然的異常流量激增時,導致接口無法及時處理引起堵塞甚至崩潰;兩種限流的應用場景及實現流程如圖2 所示。服務平臺的共享接口至少應具備兩種限流策略,為服務平臺的穩定運行提供多一層保障。
大數據時代,數據即是價值,保護數據即是保護資產,共享服務平臺數據安全的保障措施主要有三方面。
(1)數據的加密傳輸,在信息安全上公認的是采用HTTPS 加密傳輸,目前主流的服務發布容器上(Tomcat、Nginx、Apache、IIS 等)均支持SSL 證書的部署,實現傳輸數據的加密,避免直接在網絡中進行明文傳輸。
(2)對接入方的認證,向第三方頒發appkey 和appsecret,即相當于用戶名和密碼,解決共享平臺對第三方的身份認證問題,避免不合法的第三方用戶對平臺造成破壞。
(3)避免網絡請求的重放攻擊,雖然前面的數據加密和身份認證已經極大的滿足的安全需求,但是仍然避免不了黑客惡意的網絡數據截取并不斷進行重復發送攻擊,通俗點講就是黑客拿到了合法的、正確的數據進行重復發送,來竊取數據或者攻擊平臺,因此,任何的請求響應都必須包含有數據簽名(定義為signature),signature 的數據由有效時間(定義為timestamp)、請求流水號(定義為nonce)計算后構成,signature 數據簽名發送到數據共享服務平臺后,由平臺進行數據解析并校驗。

圖2:不同場景的限流及實現流程

圖3:安全認證與數據校驗流程
總體上,除了數據加密可由數字證書提供商保證外,安全認證與數據校驗需要自主實現與控制,其主要流程如圖3 所示。
日志的記錄與分析是現代任何IT 設施定位問題和解決問題必不可少的有效手段,通常涉及日志記錄與日志采集分析。其中日志的的記錄至少要包含第三方客戶IP 地址、請求發生時間、日志級別、系統線程名、程序代碼位置、詳細日志信息,如有需要更多的日志記錄,應按實際需求進行擴展或者增加。日志的分析,主要分為采集、過濾、存儲、展示,由于服務已經通過容器化隔離或者做了虛擬化,日志分布在不同的機器上,因此,日志的采集分析主要以分布式技術為主,技術(工具)包括:
(1)Logstash 開源文本數據采集、過濾工具,通常用于日志采集,具備信息過濾功能,能將特定的日志結構進行分片輸出到指定的存儲空間或者數據庫,通常以Elasticsearch 作為存儲的主要工具。
(2)Elasticsearch 開源分布式文檔存儲與搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful 風格接口,多數據源,自動搜索負載等。
(3)Kibana 也是一個開源和免費的工具,可以為ElasticSearch的存儲內容提供友好的Web 界面,分析、搜索、展示日志數據。
完善的日志記錄與分析,為共享服務平臺的故障監控、優化完善等提供必要的輔助作用,保障運維工作的順利開展。
無論是校企、校政之間的信息化共享以促進合作,還是智慧校園的多方參與建設,都離不開數據的共享,數據的共享的方式有非常多種,通常根據實際參與者,或者面向的對象選擇合適的共享方式。在參與者為多方且涉及高校外部參與的情況下,則需要建立一個完善的數據共享服務平臺,以高校作為牽頭方,做好數據共享服務規范,充分論證與落實共享服務平臺的保障措施,不僅讓數據共享服務平臺建設可持續發展,而且能更好的輔助高校教育科研管理和履行社會服務的職能。