我才剛跟客戶講過這東西, 所有開發工程師都不想多寫 Application Log, 只想依靠系統產生的 Log; 但實際上, 系統 Log 只能用來做技術稽核或者 Debug 用途, 若要用來作為商業稽核或電子蒐證(eDiscovery)的話, 有以下要件需要被紀錄到:
Authentication
甚麼人(或身分)通過驗證?
或沒通過驗證? (一直嘗試?)
Authorization
驗證成功的人, 被授權(或授權失敗)存取哪些資源?
Accounting
通過驗證和授權的人, 對資源做了哪些事情?
紀錄的欄位可能會有 (不只這些, 要看 Application 性質):
時戳
來源
身分
資源
行為
結果
計量
SQL Log 不見得能記錄到全部的行為, 如果他有某個行為跟 SQL 操作無關的話, 可能就會被繞過去; 例如:
使用者按下網頁的一份文件下載連結, 從指定的 FTP 或檔案位置 下載了一個檔案
這個動作可能完全沒有存取到 SQL, 當然在 SQL 的官方 Log 內也就不會有紀錄.
當然, 若你自己的應用系統會去追蹤這些軌跡, 然後主動將軌跡存入 SQL 的話, 那當然是可以找得到; 不過, 這樣就不是 SQL 原本出廠的預設工作, 你必須自己寫; 此外, 通常這類的 User Activity 不會直接存在 SQL 內, 因為數量非常龐大, 會把 SQL 效能拖垮掉, 要有專門處理 Log 的系統如 Graylog, Elasticsearch 之類的來處理.
講個例子, 我在某客戶開啟用戶行為記錄之後, 才 30 幾個用戶, 一天就錄到 88GB 的 Log.
依照現行規定或慣例, Log 必須保存 6 個月, 你算一下上面累積 180 天之後有多少量?
然後 Log 不是存進去就沒事, 你還要定期做 Retension/Rotate 免得爆滿; 你還要提供查詢工具 UI, 讓稽核的人能自行查詢他要的條件(稽核人可能不具備專業查閱技能, 例如: 調查幹員, 檢察官, 律師...等); 儲存成本若太昂貴, 你還得規劃較便宜的一二階冷儲存, 到時候又會有搬運/封存/調閱的龐大作業要處理...隨便一個移動都會是 TB 等級的資料量
最後, 要有法律上的效果, Log 必須有不可否認性, 也就是: 寫入之後就不能被更改(或者更改行為可以被偵測到). 你要先對法院證明能做到這點, 法院才會接受他成為你的證據之一.
單純的 SQL Log 辦不到, 因為執法機關向你討 Log 檔案時, 你匯出之後就變成文字檔, 任何人都可以更改文字檔內容之後, 才交給檢調單位, 此時內容已經不可靠, 無證據能力.
ChatGPT 的回答,哈哈
在法律上證明使用者在某個功能介面上的欄位操作軌跡通常需要更多的資訊和程序,SQL日誌本身可能不足以提供完整的證據。以下是需要考慮的一些因素:
日誌內容:SQL日誌通常記錄了資料庫查詢和更新操作,但它們可能不會詳細記錄使用者在應用程式介面上的操作。你需要確保SQL日誌中包含足夠的資訊,以允許重建使用者的操作。
使用者身份驗證:你需要確保你能夠將SQL日誌中的操作與特定的使用者身份驗證相關聯。這可能需要在應用程式中實施使用者身份驗證和授權,並將使用者的操作記錄到資料庫中。
時間戳記:SQL日誌中的時間戳記可以幫助確定操作發生的時間,但你還需要確保這些時間戳記與使用者的實際操作時間相符。
其他證據:SQL日誌可能只是證明的一部分。通常需要其他證據,例如應用程式日誌、審計日誌、螢幕截圖、使用者聲明或其他支援證據,以建立完整的案件。
法律要求:不同國家和地區的法律要求不同,可能需要特定的法律程序或法院命令來獲取和使用資料庫日誌作為證據。
總之,SQL日誌可以作為一種重要的證據,但通常需要與其他資訊和程序結合使用,以建立使用者在特定功能介面上的操作軌跡。在法律上確保合法性,最好諮詢律師以獲取相關法律建議和指導。此外,要確保資料隱私和安全的問題已經妥善解決,以免涉及違法行為。
我認為在某個層面來說是可以的,
MS SQL Server 使用的是 Transaction Log,
內容包含了某帳號對於 DB Table 內容在某個時間點所作的插入、更新或刪除,
所以如果想想證明某個帳號在某個時間點,
對 Table 內容作 插入、更新或刪除,
那 Transaction Log 是一個證明的方式
是要證明某帳號還是某人做了某件事?
假如系統沒有做到足以向法官證明帳號使用者本人的驗證的話
(一般系統都沒有做到的)
該使用者只要向法官主張非本人操作,LOG什麼的就一切都破功了
那只能證明該帳號確實登錄過,
沒辦法證明是不是本人用,
網路位置IP 也不見得是正確.
想要弄真實的人很難,
在沒辦法弄到真人前的LOG 內容根本不重要,
那都是在門檻外的事情,
門檻外要怎麼表演都沒差
換句話說在怎麼詳細根本無所謂不管是不是原始檔案.
只是浪費錢的拿著沒被二次修改的LOG到處跑某些所在那邊自嗨罷了.
如果是在抓內鬼,在抓離職員工在離職前的搗亂就另當別論.
從電腦撈出的任何資料基本上都是可以當作證物,但先決條件是你在蒐集整理數位證據時,要把數位證據處理過程的每一道程序皆應被完整記錄 (即證據監管鏈),同時確保該數位證據的原始性,保證數位證據未被修改,以備第三方得以依據留存的紀錄重現程序,並得到相同的結果,以驗證數位證據之正確性。
不然一旦上法院,被告律師只要提出,你拿的呈堂證供可以是假的,可能是修改過的、可能不完整...等等...
你無法證明,證據就失效了...
可以參考ISO/IEC 27037