天天看點

雲原生日志審計

網絡安全的審計是指按照一定的安全政策,利用記錄、系統活動和使用者活動等資訊,檢查、審查和檢驗操作事件的環境及活動,進而發現系統漏洞、入侵行為或改善系統性能的過程。

作為安全審計的重要資料來源,日志展現的是系統和應用運作産生的事件或者程式在執行的過程中産生的一些記錄,可以詳細解釋系統的運作狀态。日志描述了一些離散的、不連續的事件,對于應用程式的可見性是很好的資訊來源,日志同樣也為應用程式分析提供了精确的資料源。

對于雲原生架構下的日志審計與分析,其面臨的挑戰主要包括兩個層面,一方面是日志審計本身面臨的挑戰。

  1. 日志存儲分散。企業IT系統中的各種網絡裝置、安全裝置、應用系統等分散在網絡的不同位置,安全審計人員須通過不同的方式,檢視裝置/應用産生的日志、裝置/應用的狀态。
  2. 日志資料量大。企業IT系統中的各種網絡裝置、安全裝置、應用系統等每天會産生大量的日志,安全審計人員很難通過人工的手段進行集中存儲管理以及有效分析。
  3. 日志格式不統一。企業IT系統中的各種網絡裝置、安全裝置、應用系統等不同的裝置類型産生的日志格式都不相同,安全審計人員須了解每種裝置/應用日志的格式才有可能分析日志,日志分析成本很大。

另一方面,針對雲原生環境以及雲原生應用的特性,其平台、網絡以及應用在架構和行為上較傳統IT系統都有着更大的複雜性。是以,相比較傳統的日志審計,雲原生架構下的日志審計面臨的挑戰将會更大。

Docker日志審計

Docker支援多種日志記錄機制,用以幫助使用者從正在運作的容器和服務中擷取資訊,這種機制被稱為日志驅動程式。Docker從1.6版本開始支援日志驅動,使用者可以将日志直接從容器輸出到如syslogd這樣的日志系統中。每個Docker守護程序都有一個預設的日志驅動程式,通常這個預設的日志驅動是json-file,也就是以JSON檔案的形式儲存日志資訊。同時Docker還支援其他日志驅動,比如none、syslog、gelf和fluentd等。

Kubernetes日志審計

另外,對于單個節點上的日志記錄,還需要重點考慮日志的輪轉(rotation)問題,保證日志記錄不會消耗掉節點上的全部可用空間。Kubernetes本身并不負責輪轉日志,而是通過部署相關的日志工具來解決這個問題。

叢集級的日志架構需要一個獨立的後端,用來存儲、分析和查詢日志。Kubernetes目前并不為日志資料提供原生的存儲解決方案,不過,有很多現成的日志方案可以內建到Kubernetes中。Kubernetes針對Pod提供了基本的日志記錄,我們使用kubectl logs即可通過标準輸出列印相關的日志記錄。