一句話:本卡為 FR-157 母案,在客戶機房的 Agent 機上開一頁主控台——從主系統一鍵跳過去(免再登入),填檢測工具的連線帳密(加密存 Agent,主系統從此不存)、瀏覽這台 Agent 實際存的證據檔。10 棒、5 批、跨 4 repo。子卡清單在末段。
這系列在做什麼(白話)
現在客戶的 OpenVAS 密碼、SonarQube token、掃主機用的 SSH 私鑰,全部加密存在我們主系統,派工時再送去 Agent。PM 判定這些是客戶機敏資料,不該放我們主系統。本案在裝 Agent 的那台機器開一頁設定主控台:管理員在主系統的 Agent 管理頁按一下,新分頁直接進到 Agent 主控台(不用再登一次),帳密填在 Agent、加密存 Agent 本機;主系統派工時不再帶帳密,Agent 用自己機上的那份。
同一個主控台再加一個「檔案」分頁:客戶部署時多半把 Agent 當儲存設備,證據檔本體落在 Agent 機的 SeaweedFS,客戶要看得到「這台到底存了哪些檔」、能查、能下載。
權限拆成兩個:「Agent 設定」(填帳密)與「Agent 檔案」(看檔、下載)。IT 管理員兩個都有;稽核人員只勾檔案就能進去看檔、看不到帳密分頁。
為什麼要做
- PM 2026-10-21:掃描工具設定都在主系統,想改成在 Agent 那台開 Web UI 讓 user 設置、設定存 Agent 端,因為都是客戶機敏資料。
- 決策者 2026-10-22:Agent 也有儲存設備功能,未來部署客戶一定會指定 Agent 當儲存設備,要開介面讓他瀏覽與查詢存在 SeaweedFS 內的檔案。
- FR-056 D9「憑證存雲端、派工下發」在 SaaS 前提下合理;落地版客戶的立場是「能打進我內網主機的密碼為什麼在你們資料庫」。本案推翻它。
- FR-156 E1 已做好五分鐘入場券+Agent 8444 瀏覽器門,本案直接沿用,不另發明登入。
關鍵設計決策(D1~D11,細節看 design.md §3)
- D1 從主系統跳轉:主系統簽五分鐘票、Agent 驗票換 30 分鐘 session;Agent 不開登入表單、不存帳號。D10 兩個能力點「Agent 設定」「Agent 檔案」,簽票時把範圍寫進票,主控台照票開分頁與 API(不是只藏分頁)。限制:檔案頁是租戶層,有權限就看得到這台全部檔案。
- D2 連線設定整組搬 Agent(網址、帳號、埠、密碼全在主控台填)。D3 表單定義從主系統工具目錄經心跳下發、Agent 快取。D11 Agent 用獨立金鑰檔
secrets.key(0600)做 Fernet 加密。
- D4 既有客戶的帳密升級後經既有 mTLS 派工通道自動交接一次、所有 Agent 回執後主系統清除。D5 主控台前端是 FE repo 第二個 Vite 入口,build 產物複製進 Agent 安裝包。
- D6 檔案只查只下載不刪。D7 第一版不顯示檔案屬於哪個專案。D8 主控台操作(登入、改帳密、下載)經心跳回主系統稽核。D9 多台 Agent 各設一次、不同步。
怎麼拆(5 批 10 棒)
- 第 1 批:A1 能力點+簽票端點+清單按鈕(BE/jedi-remote-agent/FE)、A2 Agent 主控台殼+FE console 入口(evidence-agent/FE)。A2 依賴 A1 的票,但 claims 形狀已凍結,可先手簽票開發。
- 第 2 批:B1 檔案瀏覽(evidence-agent/FE console)、C1 工具表單下發+Agent 加密存+本機測試連線(BE/jedi-remote-agent/evidence-agent/FE console)。
- 第 3 批:C2 派工改讀本機+心跳回報設定狀態+主系統測試連線改派 Agent(jedi-detection/jedi-remote-agent/evidence-agent)、D1 主系統三頁改版(FE/jedi-remote-agent serializer)。
- 第 4 批:D2 既有帳密搬家(jedi-detection/jedi-remote-agent/evidence-agent/FE)、D3 主控台操作回傳稽核(evidence-agent/jedi-remote-agent/BE/FE)。