六、證據檔存在哪裡¶
這章在講什麼:檢測產生的報告與上傳的證據檔,實際放在哪一個「倉庫」,以及怎麼換倉庫。
換儲存位置就像公司換倉庫:換了之後,新貨會進新倉庫,舊貨還留在舊倉庫——不自己搬,它不會過去。這件事看起來理所當然,但實務上最常出事的就是這一點,所以 6.3 那三條請務必先讀。
什麼時候看:裝機當下決定要用哪一種儲存時;或日後貴單位要求「所有資料集中存到公司統一的儲存」時。
出廠預設就能用,多數貴單位不需要改——要改的常見理由是「公司已有統一的物件儲存,要求所有資料存進去」。
物件儲存 是專門用來放檔案的服務,類似公司內部的雲端硬碟。檔案丟進去、需要時再取出來,不必自己管目錄結構。
6.1 出廠預設是什麼¶
安裝完成後,證據檔存在隨出貨包一起裝上的內建物件儲存(服務名 guidant-agent-seaweedfs),資料落在 Docker 的 seaweed-data 資料區。
存取用的帳號密碼是安裝時亂數產生的,寫在權限 600 的設定檔內。
為什麼不讓您自己取密碼:現場想出來的密碼實務上多半是 Passw0rd! 這種等級,而它守的是全部證據檔,所以刻意由程式亂數產生。
這個內建儲存只綁定在本機(127.0.0.1),外部網路連不到。
6.2 三種可選的儲存方式¶
| 方式 | 檔案實際存在哪 | 什麼時候選這個 |
|---|---|---|
| 系統內建(預設) | 隨出貨包裝上的物件儲存 | 預設;沒有特殊需求就用這個 |
| 自有 SeaweedFS/MinIO | 貴單位自己架設的物件儲存 | 公司已有統一儲存、要求資料集中管理 |
| 本機磁碟 | Agent 主機的一個目錄 | 極簡場景;不需要額外服務 |
6.3 🔴 換儲存位置之前,先讀這三條¶
① 換位置不會搬移既有檔案¶
Agent 讀檔一律走目前設定的儲存位置。切換之後,原本存在舊位置的證據檔會變成「找不到」——平台端的症狀是下載或預覽失敗。
這不只是「沒搬過去」,是取不回來。
② 要保留舊檔,必須自己搬且檔名不能變¶
平台記的是檔案名稱。要保留舊檔,請在切換前後把舊位置的物件複製到新位置,檔名逐字保持不變。
或者換個順序:趁還沒有任何證據檔的時候就切換——這是最省事的做法。剛裝完就決定好用哪一種,之後不再動。
③ 搬移完成前,切勿刪除舊位置的資料¶
確認新位置的檔案都能正常下載之後,再考慮清理舊位置。
6.4 怎麼切換¶
這步在做什麼:一條指令換掉儲存位置,不需要編輯任何設定檔。
成功長什麼樣:進入互動問答,畫面如下。
設定證據檔的儲存位置
目前設定:seaweedfs
1) 系統內建 SeaweedFS(恢復預設)——出貨內建的物件儲存,連線資訊自動代入
2) 自有 SeaweedFS 存到貴公司自有的 SeaweedFS 物件儲存
3) 自有 MinIO 存到 MinIO 或其他相容 S3 的物件儲存
4) 本機磁碟 存在這台機器的磁碟上(不需要額外服務)
請選擇(輸入 1~4,或直接打型別名稱)
>
選 2 或 3(自有物件儲存)要填什麼¶
| 它問您什麼 | 該填什麼 |
|---|---|
| 服務位址 | 主機:埠,例如 192.168.1.50:8333。不需要 http:// 前綴(誤貼了它會自動去掉並告知) |
| 存取金鑰(access key) | 貴單位儲存服務的帳號 |
| 祕密金鑰(secret key) | 對應的密碼。輸入時不會顯示 |
| 儲存空間名稱(bucket) | 這個儲存服務裡的一個獨立空間,像雲端硬碟裡的一個資料夾。不存在的話 Agent 首次上傳時會自動建立 |
| 是否使用加密連線 | 填 true 或 false |
⚠️ SeaweedFS 的埠要填 S3 介面(預設 8333),不是管理介面的 9333。 填錯的症狀是簽章錯誤而不是「連不上」,很難聯想到是埠填錯——問答畫面上會再提醒一次。
選 4(本機磁碟)¶
只問一個目錄路徑。指令會實際寫一個檔進去測試,不只檢查權限位元。
填錯了會怎樣(它會怎麼保護您)¶
這個指令一次做完三件事:驗連通 → 改設定(先備份)→ 重建服務套用。
| 情況 | 它會怎麼處理 |
|---|---|
| 位址或埠不通 | 當場報錯,什麼都不寫、服務不重啟 |
| 帳號或密碼錯 | 明確指出是憑證被拒(不是「連不上」) |
| 憑證對但沒有該儲存空間的權限 | 明確指出是權限問題,不是名稱打錯 |
| 設定寫進去了但服務起不來 | 自動還原成原本的設定 |
驗證未過時,既有設定原封不動——不會出現「改到一半」的狀態。
6.5 改回系統內建儲存¶
這步在做什麼:從自有儲存換回出貨內建的那一套,一條指令、全程不需要輸入任何帳號密碼。
成功長什麼樣:直接完成切換,不會問您任何連線資訊。
連線資訊取自安裝時留下的出廠快照(/srv/guidant-ai-agent/factory/factory-defaults.env,權限 600)。互動問答的選項 1 做的是同一件事。
🔴 請勿編輯或刪除
factory/目錄下的檔案——刪掉之後就沒辦法一鍵恢復了。恢復同樣不會搬移既有檔案,6.3 的三條警語一樣適用。
較舊版本安裝的站點沒有這份快照:升級時若儲存設定仍是內建值會自動補建;已經改用自有儲存的舊站點補不回來(出廠帳密已被覆蓋),要恢復請聯繫原廠。
6.6 自動化:不進入問答直接設定¶
這步在做什麼:把答案直接寫在指令裡,跳過互動問答(適合寫進自動化腳本)。
sudo guidant-agent-compose configure-storage --type minio \
--endpoint 10.0.0.5:9000 --access-key <帳號> --bucket <儲存空間名稱>
祕密金鑰會以不回顯的方式另外詢問。
🔴 不要把祕密金鑰寫在指令列上——同一台機器的其他使用者用
ps就看得到整條指令。
MinIO 走加密連線時再加 --secure。
6.7 資料保護是誰的責任¶
這一節請務必讀完,並讓貴單位負責備份的同仁也知道。
事實:證據檔存在貴單位自己的磁碟上¶
檢測 Agent 的設計原則就是「機敏證據不落雲端」——證據檔全部留在貴單位自己的機器上,這是這個架構的主要價值。
代價是:這些檔案的可靠性,由貴單位承擔。
雜湊 SHA-256 可以理解成「檔案指紋」:把檔案內容算成一串固定長度的字,檔案只要改動一個位元組,這串字就會完全不同。用它就能確認檔案有沒有被改過。
| 這件事 | 誰負責 |
|---|---|
| Agent 程式本身的正確運作 | 原廠 |
| 證據檔的完整性偵測(任何改動都查得出來) | 原廠——平台端保有每個檔案的雜湊錨點 |
| 儲存磁碟的可靠性(RAID、硬體壽命、機房環境) | 貴單位 |
| 備份與異地保存 | 貴單位 |
| 磁碟空間監控 | 貴單位 |
| 磁碟故障後的資料還原 | 貴單位(原廠無法提供,我們手上沒有這些檔案的副本) |
磁碟壞了,證據檔就沒了。 原廠這邊只有雜湊值(用來驗證檔案有沒有被改過),沒有檔案本身。
因此請務必:
- 依 5.6 建立定期備份,且備份存在另一台機器上。
- 把 Agent 主機的磁碟用量納入監控。
- 若證據檔對貴單位屬於長期保存義務(例如法規要求保存數年),請把 Agent 主機納入貴單位既有的高可用與備援機制(RAID、快照、異地備份)。
關於「防篡改」的說明邊界¶
證據檔存進儲存之後,Agent 對每個檔案獨立記錄 SHA-256 雜湊值,任何內容改動都偵測得到(信任根在平台端,不在這台機器上)。稽核時可以用平台的「對帳」功能逐檔比對。
但儲存服務跑在貴單位自己的機器上,機器的擁有者始終有辦法動到底層資料。因此本產品:
- ✅ 宣稱:改動必被偵測到。
- ❌ 不宣稱:「不可刪除」「WORM」或任何法規級的不可竄改保證。
WORM(Write Once Read Many)指「一寫入就再也不能改」的儲存形態,常見於法規要求的長期封存設備。
這條邊界是誠實的技術事實,不是產品缺陷——任何跑在客戶自有硬體上的軟體都受同樣的限制。真正的防線是平台端的雜湊錨點與偵測,而那一層我們有做。