指令與語句紀錄
這一頁解決什麼
Section titled “這一頁解決什麼”錄影回答「發生過什麼」,但沒辦法搜尋。指令紀錄是為了搜尋與定位而存在的索引: 跨會話找一條指令,然後跳回原始的那場連線與那個時刻。
紀錄的來源有兩種。命令列的內容重組自終端輸出,錄影才是事實來源; 查詢主控台的語句在送出時直接登記,本身就是事實來源。
「指令稽核」頁跨會話搜尋,篩選條件:
- 關鍵字,對指令內容做子字串比對。
- 來源:查詢主控台或命令列。
- 目標資料庫。
- 結果狀態(可多選)與目標端錯誤碼。
- 使用者、資產、時間範圍。
列表上的操作可以直接跳到那場連線,並把回放定位到該筆紀錄的時刻。
單一會話的指令列表在連線詳情頁,區塊上有註記說明內容重組自按鍵流、以錄影回放為準; 主控台會話的註記則說明語句在送出時登記。
重組是怎麼做的
Section titled “重組是怎麼做的”伺服器的輸出流餵進一個虛擬終端螢幕,使用者按 Enter 時擷取當前行。 這個做法會正確反映退格、Tab 補全與歷史召回,因為它讀的是終端上真正出現的內容。 SSH、資料庫命令列與容器 exec 用的是同一套重組器。
資料庫的多行語句
Section titled “資料庫的多行語句”MySQL 與 PostgreSQL 會話裡,跨續行的一句 SQL 會累積成一筆完整的紀錄,
遇到分號或元命令才結算,所以 SELECT\n1 AS\nx; 是一筆而不是三筆。
元命令與其後的查詢各自獨立。Redis 與 SSH 維持逐行。
SQL Server 以批次終止符切分,提示符不會混進指令文字。
主控台的語句
Section titled “主控台的語句”每個執行單位配一個唯一的事件識別碼,並帶結果事實欄位: 目標資料庫、結果狀態、原因碼、回傳列數、影響列數、結果集數、目標端錯誤碼、耗時、是否截斷。 結果狀態的取值由資料庫約束釘住,涵蓋執行中、成功、錯誤、阻斷、已取消、逾時、部分生效、結果未知。
無法還原的那些輪次
Section titled “無法還原的那些輪次”可見回顯的輸入會留下可搜尋指令或明確標記的降級紀錄;無回顯輸入不留指令文字紀錄。錄影是文字會話的事實來源。agent 被規則阻斷而未送達目標的指令留在錄影與工具帳本,不進一般指令紀錄。無法可信重組時,產生的是明確標記的降級紀錄, 裡面不含任何推測出來的文字。介面會逐筆標示「此輪內容無法還原」並提供跳到該時段錄影的入口, 區塊上方另有橫幅說明這段期間有幾筆無法還原、以及關鍵字搜尋不會涵蓋它們。
降級本身可以觸發告警,在告警頁以獨立的類別呈現。
事實來源的順序
Section titled “事實來源的順序”指令文字是索引,連線錄影是事實來源。兩者不一致時以錄影為準。 主控台的語句紀錄是例外:它本身即事實來源,轉錄錄影是它的派生物, 兩者以事件識別碼對應,衝突時以結構化的紀錄為準。
稽核看得到什麼
Section titled “稽核看得到什麼”- 每筆紀錄含序號、指令或語句原文、執行時間、所屬會話、使用者與資產。
- 主控台的紀錄另含前述的結果事實欄位,跨會話搜尋可以直接用這些欄位篩選。
- 降級紀錄明確標記,數量在介面上可見。
- 證據包的指令 CSV 涵蓋這些欄位,文字終端的紀錄在結果欄位留空,見取證包與事件報告。