別把除錯日誌當黑盒子:為什麼你的軟體需要審計日誌?
系統壞了你看得出來,但誰幹的你查得到嗎?
當我們在打造一個產品或軟體時,往往會遇到系統出狀況需要維護,或者遇到資安問題必須找出問題來源。很多工程師這時候第一反應就是去翻系統日誌(System Log)。
但現實往往很殘酷:你翻開 System Log,充其量只能看得出哪裡噴錯、系統在哪裡壞掉,卻根本找不出真正的原因,更找不出到底「是誰做的」。
一般的 System Log 就像隨手記的筆記,記錄著所有雜七雜八的系統事件;但如果你要拿出真正的證據,證明是誰、用了什麼方式操作,你就必須依賴「審計日誌(Audit Log)」。它是每一個軟體系統都應該要具備,平時極不顯眼,但出事時最關鍵的核心功能。
飛機黑盒子的啟示:以「人」為核心的不可否認證據
審計日誌跟一般日誌最大的差別,就在於它記錄的重心完全不同:
以主體(Who)為核心:它不是流水帳,而是清楚鎖定「哪一個具體的使用者」進來系統做了什麼事。
完整的 5W1H 現場還原:不只記登入和成功的事,連失敗的嘗試也要記;必須同時記錄時間、來源 IP、操作動作與結果。
無法被使用者或管理者自己刪除:就像飛機上的黑盒子,不能讓機師隨手撕掉。它必須具備「只寫入不修改(WORM)」與「獨立隔離存放」的特性,連擁有最高權限的管理者都不能輕易竄改。
在日常運作中,審計日誌是外部稽核最核心要檢視的客觀證據,也是將日誌送到 Splunk 這類 SIEM 分析平台時最關鍵的資料來源。
出事那天,別讓自己跟一般使用者一樣無知
如果你的系統沒有做好這個程式黑盒子,那當真正的資安問題或惡意行為發生時,身為開發者的你,在面對一片空白或被動手腳的紀錄時,其實就跟一般什麼事情都不知道的受害者沒有兩樣。
不要等到外部稽核找上門、或是系統出事百口莫辯的那一天,才意識到 Audit Log 的價