先前有一個雛形功能, 現在我們要來把真的功能實作出來
檢測工具管理: plugin/tool-plugin-manage
需求描述:
未來客戶可以在專案內的任務, 將任務設定為"執行檢測工具"類型,
在任務執行時, 依照個租戶設定好的檢測工具, 跟自己公司或單位的工具做整合,
透過這些檢測工具來做執行並且產生報告, 自動上傳到系統變成證據
目的是為了不用再讓user去自己跑這個流程
檢測工具管理
- 每個租戶,都可以管理自己的檢測工具, 有可能到部門先預留,但一開始先以租戶為主
- 設定我想多開一個Schema: config 當作未來所有的設定檔存放地方, 會存該租戶工具的 key, token帳密, url 等等需要呼叫用的認證資訊
- 檢測工具的清單也要可以做更新, 而不是像現在是寫死在畫面上, 要改到DB開Table
- 每種檢測工具設定的方式或是使用的方式(API, Cli command等)有可能不同, UI呈現要填寫的欄位, 希望可以是依照工具不同呈現不同的欄位, 或許可以用Table存設定
- 可以停用或啟用, 停用以及為設定key, 或是重置, 也要提醒是否有任務正被配置, 做個提醒就好
- 目前第一個要串的是 OpenVAS, 未來會有NESSUS, SonarQube 等其他掃描工具, 可以先預留不給設定
- 如果可以也希望提供測試執行的功能
專案管理 -> 專案規劃 -> 任務設置:
- 要有新的任務類型 "檢測工具執行"可以選, 當任務被設定為"檢測工具執行", 要額外去設定要用什麼工具執行, 清單由資料庫提供
- 要可以設定該檢測工具需要的參數, 例如 要掃哪些IP, 設備清單, 那個網站網址, 等等, 依照檢測工具的檢測項目不同, 這個看要不要也做成config檔案, 存在DB, 依照設定呈現, 未來缺少欄位或是欄位調整, 都可以透過版更的方式處理
- 執行方式, 未來應該是會透過我們現在的File Agent, 安裝在客戶端的設備上, 所以任務在執行時, 會透過Agent去執行, 為的也是可以執行local command, 或是直接呼叫API
- 任務執行完, 應該會有類似報告的東西, 要把報告存回系統, 成為該任務的證據
- 要有執行歷史紀錄, 可以的話也要有執行結果下載連結之類的
Agent
安裝agent 這段之前有了, 變成要強化Agent的能力, 之前只有負責接收檔案存到系統, 現在要可以支援不同的任務執行
這邊再麻煩設計
我預想的流程
設定檢測工具 -> 安裝agent -> 設定任務執行 -> 開始執任務按鈕按下去 -> 觸發任務 -> 收到結果 -> 上傳報告當作該任務的證據 -> 發信通知任務負責人 -> 完成任務
這是主要需求, 你幫我分析過後, 拆成多個需求單, 以及任務單, 要可以分階段執行, 互不干擾
每個子需求, 都要在主需求下有關聯, 可以追蹤狀況, 都要在Notion上面留紀錄追蹤, 不要再像之前一樣,
交接給一個新的session就整個歪去, 交接也做不好也沒地方找資料, 現在除了原本的FR資訊, 也要在Notion上留資料都要完整
也當作開發紀錄以及進度追蹤用, 一開始討論階段, 先跟我用Html的方式討論, 你把要做的東西通通轉成Html, 最好也要有流程圖
可讀性比較高, 我看過沒問題, 再轉成任務
本卡為母案,統整目標、決策定案、四階段索引。四個子需求(FR-056.1~.4)各有獨立卡片,關聯回本卡。
設計文件:docs/features/FR-056-2607-detection-tool-integration/design.md(repo)
討論稿(含流程圖):docs/features/FR-056-2607-detection-tool-integration/discussion.html(repo)+ Artifact 線上版:https://claude.ai/code/artifact/e2044515-4b15-4dc6-99c7-1447ab7e7334
客戶希望在專案任務中把「執行檢測工具」自動化,省掉 user 手動跑整條流程:
設定檢測工具(url/key 加密存 config schema)→ 安裝 & 註冊 Agent(沿用 FR-039)→ 任務設為「檢測工具執行」+ 設掃描參數 → 按開始 → Agent 心跳領到派工 → 呼叫工具(API/CLI)→ 掃描完成回傳報告 → 報告存回 job_evidences(source=DETECTION_TOOL)→ 發信通知負責人 → 依「完成模式」flag 自動標記完成 / 停在待覆核等人工確認。
sequenceDiagram
autonumber
actor Admin as 租戶管理員
participant Web as Guidant AI 雲端
participant Agent as 客戶端 Agent
participant Tool as OpenVAS
actor Owner as 任務負責人
Admin->>Web: 設定檢測工具 (加密存 config)
Admin->>Web: 安裝 註冊 Agent (既有 mTLS)
Admin->>Web: 任務設檢測工具執行 + 掃描參數
Owner->>Web: 按開始執行任務
Agent-->>Web: 心跳輪詢領到派工
Agent->>Tool: 依連線型態呼叫 API/CLI
Tool-->>Agent: 掃描完成回傳報告
Agent->>Web: 回傳結果 + 報告檔
Web->>Web: 報告存回 job_evidences
Web->>Owner: 發信通知
Web->>Web: 完成模式=auto 自動 complete_job / manual 留 PROCESSING 等人工
| 項目 | 狀態 | 說明 |
|---|---|---|
| FE 檢測工具管理頁 | 純 mock | ToolPluginManage.vue:7 工具寫死、零 API、重整即重置 |
| Agent 認證鏈 | 已完備 | FR-039 evidence-agent 註冊+mTLS+心跳已可用,agent_type 已預留多型 |
| Agent 任務下發 | 完全沒有 | 無 command queue,心跳不夾帶待辦,Agent 端無 executor |
| 任務類型 | 要擴充 | GrcJobType 寫死 enum(只 general/survey),真相在 BPMN userTask |
| 證據自動上傳 | 有 pattern | DRIVE_SYNC 用系統帳號自動寫 job_evidences,掃描轉證據照抄 |
| config schema | 不存在 | 最接近 tenant_drive_integrations(加密 token)當範式 |
| # | 決策 | 定案 |
|---|---|---|
| D1 | config schema 定位 | typed 表,非通用 blob |
| D2 | 憑證加密 | app 層對稱加密,沿用 drive integration 範式 |
| D3 | Agent 派工 | 心跳夾帶待辦,推播列未來 |
| D4 | 報告 parse | 第一版只存原始報告當證據,findings 獨立 FR |
| D5 | connector 架構 | 三層 adapter(工具×連線型態×core),沿用 FR-043/044 |
| D6 | 停用/重置提醒 | 軟提醒查引用任務數 + 放行,不硬擋 |
| D7 | 部門層級 | 留 org_unit_id 欄位,第一版只租戶層級 |
| D8 | 完成模式預設 | 預設人工覆核 |