Guidant AI v1.12.0 Release Note
| 項目 | 內容 |
|---|---|
| 版本 | 1.12.0(功能版號;主軸=FR-057 OpenSCAP SSH connector,檢測工具整合平台接入第二個工具) |
| 發布日期 | 2026-07-29 |
| 上一版本 | 1.11.0(2026-07-27) |
| 涵蓋區間 | 2026-07-27 ~ 2026-07-29 |
| 規模 | FR-057 三子需求全數落地(BE 地基 / Agent connector / 多檔證據回收鏈)+ 執行歷史與測試連線增強 + 手測期 3 項修正(Notion CM-936 / CM-952 / CM-954),跨 BE + FE + evidence-agent 三 repo,BE 21 commits / FE 20 commits / agent 8 commits |
| 適用部署 | dev(已驗);staging 已部署(BE/FE code + agent 0.2.11 @122,發版前回歸 gate 對其執行);poc 待部署 |
| 部署性質 | 含 3 支 DB migration(三環境 DEV/STG/POC
已全數套用)。Agent 需升級至 0.2.11(0.2.8 →
0.2.11,跨平台 build 注意事項見 §8)。無新增必要環境變數(沿用 FR-056 的
DETECTION_TOOL_ENCRYPTION_KEY)。無相依套件版本變動。掃描目標主機需一次性準備(見
§8 第 5 步)。 |
1. 概述
v1.12.0 的主軸是 FR-057 OpenSCAP 掃描工具接入:在 v1.11.0 上線的檢測工具整合平台(FR-056)上接入第二個工具 OpenSCAP——開源組態合規稽核工具(CIS / STIG benchmark),讓客戶在既有的弱點掃描(OpenVAS)之外,多了組態合規稽核能力。
架構上,本案為 connector 層開出第三種連線型態
SSH(既有 API / CLI 之外):OpenSCAP 是純 CLI、無
server API 無 daemon,組態稽核必須以登入身分在目標 OS 上執行(讀設定檔 /
套件庫 / sysctl,物理限制、全業界一致)。Agent 維持 Docker
形態不變,只當掃描發起端——SSH 登入目標主機、在目標上執行目標自己的
oscap、把報告拉回。SSH 型態開出後,未來 Lynis 等 CLI / SSH
類工具皆可同軌擴充,證明 FR-056 的 connector 架構可擴。
端到端流程:
租戶設定 OpenSCAP(SSH 稽核帳號 + 金鑰/密碼,加密存放)→ 任務設「檢測工具執行」選 OpenSCAP、填 hosts / profile → 按「開始執行」→ Agent 心跳領派工 → 逐台 SSH 登入目標主機執行掃描 → 每台一份 HTML 報告拉回並上傳 → 雲端逐檔取回存證據池 → 通知負責人 → 依完成模式收尾。
本版另含手測期挖出的 3 項修正(見 §3),其中 CM-952(漏掃靜默)與 CM-954(假成功報告)是稽核產品可信度的關鍵修正——兩者都是「系統回報成功、實際沒達成稽核目的」的靜默假陽性問題。
2. 重點新功能:FR-057 OpenSCAP 接入(SSH 連線型態)
2.1 核心設計:目標主機側掃描引擎 + 租戶層共用稽核帳號
- 目標主機需一次性準備:安裝
openscap-scanner+ SCAP content(scap-security-guide,SSG)、建立稽核帳號、佈署 SSH 公鑰與 sudoers 白名單。這是 OpenSCAP 官方正規用法(Red Hat Satellite 同模式)——掃描引擎在目標主機上,Agent container 內只需 SSH client。 - setup_guide
部署前提說明:檢測工具設定頁內建前提說明與一鍵複製的目標主機準備腳本(deb
/ rpm 雙版),不必翻手冊;
detection_tools新增setup_guide欄位(markdown),FE 動態渲染。 - 租戶層一組共用稽核帳號(業界標準做法,Tenable
官方同款建議):每台目標主機建同名專用掃描帳號;認證方式金鑰 /
密碼二擇一,推薦金鑰,另設
use_sudo提權開關(完整掃描需 root 級讀取,企業普遍禁 root 遠端登入,「一般帳號 + sudo 提權」是標準模式)。憑證沿用 FR-056 既有 Fernet 加密鏈與派工下發機制,零新表零新機制。 - SCAP content 用目標主機自帶的 SSG:天然匹配該機 OS
版本,平台免維護 content 版本矩陣——未來 SSG
更新只需目標主機更新套件,平台與 Agent 皆不需升級。實作上 connector 自組
SSH 指令直接在目標上執行 oscap 引用目標本地 content(官方
oscap-ssh腳本語意為「本機 content 推送到遠端」,與此設計矛盾,故不採用)。 - 每台一份 HTML
報告原樣上傳:多目標掃描逐台掃、每台各產一份證據檔(檔名含主機名),summary
統計加總。配套將 result
回收鏈由單檔擴為多檔(
result_ref.upload_uids陣列 + BE 逐檔取回寫job_evidences,保留單數 key 向下相容,OpenVAS 既有路徑不受影響;單檔失敗記 warning 續處理其餘)。 - FE 動態表單型態擴充:為承載 SSH 設定新增
textarea(私鑰)、條件顯示(認證方式切換密碼 / 私鑰欄位)、select_or_text(profile 下拉常用 CIS / STIG 選項 + 自由輸入)等欄位型態——皆由 BE schema 驅動,後續工具沿用。
2.2 執行歷史增強
- 人事時地物完整呈現:每筆執行紀錄補
scan_params快照(當次實際用的參數,非任務當前綁定值)與發動者 nickname。 - detection_tool_name 逐筆忠實:每筆紀錄顯示自己當時的工具名稱,任務事後換綁工具不會竄改歷史。
- 多報告逐份下載(CM-952 同批):一次執行掃多台產生多份報告時,執行歷史列出該次全部報告、逐份可下載——原本只下載得到第一份。
- FE 執行紀錄列改雙行摘要 + 執行詳情視窗,並提供手動重新整理(重新整理同時連動刷新證據清單)。
- 同批修正:任務換綁檢測工具存不進去(update 分支漏寫
detection_tool_id)。
2.3 測試連線增強
- SSH 型工具測試連線先輸入測試主機:SSH 型態沒有固定 server 端點,改為彈框輸入一或多台測試主機再發測。
- 多台並發逐台結果列:多台測試主機並發探測,各台獨立回填結果列、完測即時更新,不互等。
- probe 四段逐段檢查:SSH 連線 → 認證 →
oscap指令存在性 → SCAP content 存在性,缺什麼報什麼(連不上 / 認證失敗 / 缺 oscap / 缺 content 分類明確),部署缺件不再是神祕失敗。
3. 手測期修正(Notion CM-936 / CM-952 / CM-954)
CM-952 漏掃靜默:單台失敗不再無痕跡
多台掃描時 connector 逐台獨立執行、單台失敗(SSH 不通 / 缺 content / 非 Linux 主機)不拖垮整批——但原本失敗完全沒有任何地方記錄,任務照樣顯示「成功」,稽核人員會誤以為全部主機都掃過了。修正:
- Agent 將失敗主機清單與原因併入 summary(agent 0.2.10)
- FE 顯示「部分成功」狀態並列出失敗主機與失敗原因
- 同批修正「多台報告只下載得到一份」(
report_file_uid單值只存第一筆 → 改由job_evidences讀取全部)與「執行紀錄預設不展開」
CM-954 假成功報告:零實質檢查不再偽裝成完美通過
SCAP content 版本比目標 OS 舊時(如 Ubuntu 26.04 用 2404
content),oscap exit=0
產出完整報告,但所有規則都因平台判定不匹配而
notapplicable——零實質檢查卻回報「成功」「發現 0
項」,比失敗更危險(會被當成「已檢查且乾淨」寫進稽核紀錄)。修正採雙重把關(agent
0.2.11):
- 事前:probe 階段比對 content 檔名版本與目標 OS 版本,不匹配即警示
- 事後:以
pass + fail == 0 且 notapplicable > 0判定,命中時報告仍上傳但打content_mismatch旗標;FE 標示「無實質檢查」警示並隱藏「發現 0 項」避免誤讀
設計取捨:刻意不用比例門檻(如 notapplicable ≥ 95%)——容器化等環境本來就大量規則不適用,只要有一條規則真的跑過就不判定為不匹配;跨 OS 家族借用 content(如以 RHEL content 掃 CentOS / Rocky,業界合法用法)亦不誤報。
CM-936 Agent 管理頁移除「類型」欄位
Agent 已不再分類型,管理頁拆掉多餘的「類型」欄位(純
FE,220f013)。
4. Breaking Changes
無破壞性變更,全部為新增能力:
- OpenSCAP 以
detection_tools第 4 筆 seed 進工具目錄,OpenVAS 既有全鏈(factory 映射、單檔回收路徑、FE 動態渲染)迴歸不受影響。 result_ref多檔結構保留單數upload_uid讀取相容。- 無新增任務狀態、無既有 API 行為變更。
5. DB Migration(3 支)
按檔名日期序套用即可,一律
psql --single-transaction -v ON_ERROR_STOP=1。
| 順序 | 檔名 | 用途 |
|---|---|---|
| 1 | 2026-07-28-fr057-1-openscap-seed.sql |
seed OpenSCAP(connection_type='SSH',第 4 筆)+ config
/ param schema + detection_tools.setup_guide
欄位與內容 |
| 2 | 2026-07-28-fr057-1-fix-openscap-required-flags.sql |
修正 password / private_key required
語意(依認證方式條件必填,非永遠非必填) |
| 3 | 2026-07-29-fr057-2-setup-guide-content-version-note.sql |
setup_guide 補註「SCAP content 版本需與目標 OS 相符」注意事項(CM-954 配套) |
現況:DEV / STG / POC
三環境已全數套用(schema_migrations 記帳)。⚠️ OpenSCAP 的
detection_tools.id=4 是關鍵——agent factory
的工具映射是固定對照,seed 順序不可變動。
6. 相依套件版本
無變動。無新增必要環境變數(憑證加密沿用 FR-056 的
DETECTION_TOOL_ENCRYPTION_KEY;SSH 憑證存 DB 密文,值請查
.env 或部署文件)。
7. Agent 版本(0.2.8 → 0.2.11)
| 版本 | 內容 |
|---|---|
| 0.2.9 | OpenSCAP connector(骨架 / run() /
probe())+
多檔上傳;遠端報告暫存改家目錄(/tmp + sudo 在 Ubuntu
protected_regular 下必炸)+ 空報告 size 檢查 |
| 0.2.10 | CM-952:漏掃不再靜默——失敗台併入 summary |
| 0.2.11 | CM-954:content 對不上 OS 不再產出假成功報告 |
部署須升級至 0.2.11(0.2.9 / 0.2.10 為中間版,直接跳最新即可)。
8. 部署順序與注意事項
- DB migration:依 §5 順序套用(三環境已完成)。
- BE:
git pull→ 重啟(main_app.py)。確認.env既有DETECTION_TOOL_ENCRYPTION_KEY存在(v1.11.0 起必要)。 - FE:同版 build 部署。
- Agent 升級至 0.2.11:⚠️ 跨平台 build
陷阱——開發機(Mac arm64)build 部署到 amd64
主機時,
docker build必須帶--platform linux/amd64,否則產出的 image 在目標主機exec format errorcrash loop。build 完先docker inspect <image> --format '{{.Os}}/{{.Architecture}}'確認linux/amd64再出貨。部署機本地docker-compose.yml的AGENT_VERSION需一併手動同步(不隨 git pull 更新,漏改會導致 agent 自報版本與實際 image 不符)。 - 掃描目標主機一次性準備:每台目標主機安裝
openscap-scanner+ SSG content、建稽核帳號、佈公鑰與 sudoers 白名單——完整腳本見檢測工具設定頁 OpenSCAP 的 setup_guide(一鍵複製)。準備完成後用設定頁「測試連線」逐台驗證(probe 四段檢查會指出缺件)。
9. 已知限制與 follow-up
已知限制
- 目標 OS 過新、官方尚無對應 SSG content
時無法有效掃描:如 Ubuntu 26.04 目前上游尚未發布
ssg-ubuntu2604,該類主機暫時掃不出有效結果(probe 會明確報「缺少 SCAP content」;硬指定舊版 content 則觸發 CM-954 的「無實質檢查」標示)。屬上游 content 生態限制非平台缺陷——官方發布後在目標主機更新 SSG 套件即可,平台與 Agent 皆不需升級。
Follow-up
- CM-953:Windows / 異質 OS 目標主機支援(討論中,待拍板是否開獨立 FR)。
- CM-937(FR-056.9):Agent 心跳自報 capabilities(取代手動改 DB)。
- 失敗主機部分重掃:目前單台失敗後僅能整批全部重掃,尚無「只重掃失敗台」。
- 未開卡:
main_app.py加load_dotenv()(方向已拍板)。
10. 相關文件索引
- FR-057 設計文件(含 D1–D7 決策與 D3
實作澄清):
docs/features/FR-057-2607-openscap-ssh-connector/design.md - 討論稿(含流程圖):
docs/features/FR-057-2607-openscap-ssh-connector/discussion.html - arc 收官 handoff(含跨平台 build
教訓與環境現況):
docs/features/FR-057-2607-openscap-ssh-connector/handoff/2026-07-29-fr057-arc-complete-handoff.md - 使用手冊(FR-056 手冊擴充 OpenSCAP / SSH
章節):
docs/features/FR-056-2607-detection-tool-integration/user-manual.html - 功能頁面 spec(本版更新 3 頁):
docs/specs/current/—system-admin/tool-plugin-manage.md、project-management/project-task-edit.md、audit-execution/my-tasks.md - Notion cases:CM-938 ~ CM-952、CM-954(CM-953 討論中)