Guidant AI v1.21.0-beta.1 Release Note(預發版)¶
| 項目 | 內容 |
|---|---|
| 版本 | 1.21.0-beta.1(預發版;主軸=資安修正——資安檢視總報告 145 件中已修完的部分一次收進來。本版僅供 188 build 驗證與決策者總測,不對外發佈;總測通過再定正式 1.21.0) |
| 發布日期 | 2026-09-24 |
| 上一版本 | 1.20.0(2026-09-15) |
| 涵蓋區間 | 084daecb(v1.20.0)..fix/security-b1 HEAD(BE 424 commits;FE 78 commits;jedi monorepo 與檢測 Agent 同分支) |
| 涵蓋需求 | FR-114 資安修正派工(總報告 145 件中已修的,第 1~5 批 50 張卡+其後追加卡)。同一區間也帶進 v1.20.0 之後主線已完成的功能:FR-112 專案規劃頁新增任務與平行流程、FR-110 Google Drive 應用程式設定頁、FR-107 證據自動分類 2.0(部分)、FR-071 客戶端診斷包(部分)、FR-099 意見回饋併入套件、FR-103 退役舊選單 |
| 規模 | jedi- 套件 19 支發新版(已推 Nexus、BE pin 已改);主線 DB migration 新增 19 支(FR-114 佔 5 支結構類+2 支補權限資料,其餘 12 支來自同期功能,其中 2 支僅 DEV);出貨基線已重產* |
| 適用部署 | 僅 188 build 驗證與決策者總測。不部署 STG/POC |
| 部署性質 | 雲端與檢測 Agent 必須同一次換版(兩邊新舊版互不相容,見第 5 節);多處權限守門收緊,總測要用多種角色帳號實際點過 |
0. 發版前回歸 gate¶
預發版不跑 site-regression 自動 gate,改由兩路把關:
- 機器驗證:FR-114 每張卡由驗證 agent 過、首腦獨立抽 diff、跑呼叫端模組既有測試後才驗收通過。
- 188 全量 build(唯讀):驗三件只有完整打包才看得到的事——驗簽工具(
cryptography、cffi)真的編進核心層、typing_extensions是編譯過的模組而不是附帶的原始檔、換掉驗簽零件開機會被擋。 - 決策者總測:從全新安裝、升級,到功能整個重測一遍(清單見
docs/features/FR-114-2609-security-fix-dispatch/handoff/2026-09-23-merge-readiness.md第 7 節)。總測中 ★ 標記的項目有任何一條不過,不往 STG/POC 推。
1. 概述¶
資安檢視總報告(docs/security-report/SUMMARY.md)把整套系統掃完,歸納出 145 件問題。本版收進已修完的部分,分五條線:
- 登入後看不到不該看的:很多功能以前只問「你有沒有登入」,不問「這筆資料跟你有沒有關係」。現在檔案、問卷、專案內各種查詢、公告、下拉選單都會反查歸屬。
- 動不了不是自己的資料:完成/退回任務、改刪留言與公告、寫入專案成員、改全公司共用設定,都會比對身分。
- 檢測 Agent 與防竄改:檢測 Agent(裝在客戶機房、替我們去掃主機的程式)每次連回雲端都要帶通行證;被撤銷的機器當場斷線。防竄改機制補上幾條「改一個檔就能繞過」的路。
- 憑證與設定:版控裡的密碼殘留清掉;密鑰不再回傳給前端;日誌轉送與郵件連線可以加密並驗證對方身分。
- 交出去的東西先處理、加上各種上限:匯出 Excel/Word 防公式注入、檔案預覽驗真實格式、AI 功能加次數與逾時上限。
擋得到與擋不到的分界:檢測 Agent 修完後,網路上的外人冒充不了 Agent、被撤銷的機器當場斷線;但能實際碰到那台 Agent 主機的人拿得到機器上的鑰匙,這是設計本身(Agent 要登入客戶主機掃描,一定得有鑰匙)。防竄改修完後,換零件、刪標記檔、手寫解鎖回執這幾條一步得手的路堵住了;但能整包重編執行檔的人仍繞得過——這套機制的定位是擋住隨手改檔案。
2. 使用者可見變更(資安修正,FR-114)¶
標「操作會變」的是使用者畫面或流程會有感的地方,總測時要特別看。
2.1 登入後看不到不該看的¶
- 檔案:稽核證據、SSP 佐證、意見回饋附件等檔案的下載、預覽、換發下載通行證、刪除,都要先確認你是該檔案所屬專案或單據的相關人;不是的話一律回「找不到這個檔案」,不回「沒有權限」,避免別人拿編號一個一個試。操作會變:系統認不出歸屬的舊檔(孤兒檔)會下載不了。
- 問卷:任務問卷的列表、答案、填答歷史、討論串,改成「該專案任一成員可讀」;空白查詢不再回整張表,直接拒絕。
- 專案內的各種查詢:流程留言、稽核退回歷程、流程範本、專案與控制項成員、任務指派、摘要報告、稽核輪次、工作項、稽核階段「目前進度」,都會反查「這筆是不是屬於網址上的那個專案、你是不是成員」。操作會變:摘要報告清單頁只列「我參與的專案」,習慣從這頁看全局的管理者會少看到東西。
- 任務歸屬判斷全系統只有一套:「這個任務屬於哪個專案」一律從稽核輪次反查,還沒指派人的任務也查得到歸屬。完成/退回、佐證、問卷、規劃頁、我的任務清單都用同一套判斷,未指派的任務不會被誤擋成 404 或 403。
- 公告:新增「發送範圍」(全公司或指定部門),讀取時依範圍過濾,點進看不到的公告回「找不到」;既有公告一律是「全公司」,行為不變。操作會變:公告表單多一個必選的「發送範圍」,選「指定部門」時部門欄才必填。
- 資產與掃描設定的下拉選單:設備、資訊系統、掃描設定檔的讀取要有對應的讀取權限(
device.read、information-system.read、detection-profile.read),缺權限的角色由 migration 自動補上。操作會變:真的沒權限時,下拉選單不再「安靜變空」,而是顯示「沒有權限」並鎖住欄位。 - AI 儀表板與意見回饋:AI 儀表板 26 支查詢各自申報要什麼權限,不再「一律當管理者」;意見回饋清單多一個「查看範圍」參數(只看我的/看全部),管理頁明確送「看全部」。
2.2 動不了不是自己的資料¶
- 任務完成與退回:只有該任務的被指派人與專案 manager 能按;弱點檢測的八個按鈕(開始、取消、刪除執行紀錄等)同一套規則。掃描跑完自動完成的那條路照常可用。操作會變:一般成員按別人任務的「完成」會收到 403(拒絕存取)提示。
- 只有作者能改刪:問卷討論、公告、意見回饋都比對作者本人。問卷討論改成軟刪除(畫面看得出「被移除」,不是整筆消失)。
- 寫入時反查填進來的東西:專案成員與任務指派寫入時確認填的任務、群組、控制項屬於這個專案;範本資源庫三條寫入路徑補歸屬、建立端加次數上限;SSP 參考文件刪除要確認文件屬於這份計畫;問卷資料夾與即時填答的身分改用登入身分,不信請求裡帶的名字。
- 全公司共用設定只有總部能改:LDAP、SMTP、登入政策、日誌轉送四處,子公司管理員改會被拒。操作會變:子公司管理員存檔時收到 403。
- 流程範本:驗證端點要權限且有長度與節點數上限;範本新增、修改一定經過檢查;起稽核輪次要求範本已發布。操作會變:用草稿範本起輪次會被擋。
- 停權立即生效:帳號被停權後,手上已發出的登入通行證下一個請求就失效、續期也被拒,網頁與即時通訊兩條路都擋。
- 管理員角色不可刪、不可停用:避免租戶把自己唯一的管理員角色刪掉後整個租戶沒人能管。
- 新租戶自帶三個範本角色:新建租戶時除了管理員角色,另建「一般成員」「稽核人員」「唯讀檢視者」三個範本角色(預勾常用權限),客戶不必從零勾起。既有租戶不受影響。
2.3 檢測 Agent 與防竄改¶
- Agent 每次連回雲端都要證明身分:Agent 登記時雲端多發一張長效通行證;之後心跳、確認收單、回報結果、下載證據檔四條路都要帶這張證,雲端每次驗章並查資料庫這台有沒有被撤銷或停用。操作會變:管理畫面按「撤銷」後,那台機器四條路當場全斷;被撤銷的機器重新登記會被拒,不會洗回正常。
- 重灌後接手原機器要證明:帶舊編號重新登記,必須用舊私鑰簽名證明自己是原機器,否則當新機器處理;登記時送的憑證申請(CSR)上的機器識別碼必須等於本次登記的機器。
- 時鐘偏差警告:Agent 登記與心跳時比對雲端時間,差超過 60 秒就醒目警告(只警告不中止)。時鐘偏差過大會讓證據檔上傳全部失敗。
- 驗簽工具拔不掉:負責核對簽章的零件(
cryptography、cffi)強制編進產品核心,不以可替換的原始檔附帶;打包版不理會「換掉要核對哪個目錄」的環境變數。 - 鎖定紀錄刪不掉:機器因竄改被鎖後,開機時除了看檔案標記也查資料庫;刪掉標記檔重開,資料庫有紀錄就照樣鎖並把標記補回。解鎖回執要附原廠簽過的解鎖碼,手寫回執不採信。竄改回報附帶的主機紀錄先遮蔽密碼。
- 開機查資料庫的放行範圍:資料庫真的連不上時放行並警示(不因資料庫暫時掛掉讓整套起不來);「連得上但帳號沒有讀取權限」或「缺帳密設定」改成拒絕開機,擋掉「改權限讓查詢失敗」的繞法。
2.4 憑證與設定¶
- 版控裡的密碼殘留清掉:資料庫管理員密碼、外部平台通行證、AI 金鑰、Google 雲端硬碟金鑰、過期登入通行證等從現存檔案清除(不改寫 git 歷史);開始掃描時不再把明文主機帳密多存一份進派工表。
- 密鑰不再回傳給前端:儲存設定頁的物件儲存密鑰,後端只回「有沒有設定過」,不回真值;新建儲存設定時密鑰必填(後端擋)。操作會變:密鑰欄顯示遮罩,沒改就不送,只改其他欄位不會洗掉密碼。
- 日誌轉送可加密:日誌轉送設定頁新增「傳輸加密」開關與「信任憑證」欄(選 UDP 時不能開加密)。操作會變:設定頁多兩個欄位,既有設定一律維持不加密。
- 郵件連線驗證對方身分:郵件設定新增「驗證伺服器憑證」開關與信任憑證欄(可貼內部 CA);新建設定預設驗證,既有設定升級後不變。寄信失敗時不再把整組郵件設定含密碼寫進紀錄檔。操作會變:郵件設定頁多兩個欄位;測試寄信時換了主機要重填密碼。
- 連線驗證與版本鎖定:GitHub 連線恢復憑證驗證;快取連線改用套件修好的那份;套件 monorepo 在用的套件版本鎖定檔(
poetry.lock)納入版控。 - 交出去的東西先處理:匯出 Excel、Word 時,
=、+、-、@開頭的內容當文字不當公式;日誌轉送的換行編碼,避免一筆被讀成兩筆;檔案預覽先驗真實格式,不在白名單或內容與副檔名不符的改成下載,HTML 預覽不執行裡面的程式。操作會變:部分以前能直接預覽的檔案改成下載。 - 各種上限:AI 儀表板與 AI 助手加逾時與次數上限,超過回 429(請求太頻繁);AI 助手訊息上限 4000 字;清單每頁筆數上限 1000;設定值打錯字退回正式模式;寫日誌失敗不連累使用者請求;弱點檢測規則包解析前擋惡意內容、壓縮檔炸彈上限、測試連線主機數上限。操作會變:AI 連按太快會看到「請稍後再試」。
2.5 刪掉的功能¶
- 三組沒人呼叫的任務管理功能。
- 開發用小工具
gen_comment.py與從沒被讀過的開關;jedi-common的[ai]選配相依。 - 全站成員名冊查詢入口
/issue/get_members(資料表與同步程式保留,意見回饋指派負責人還在用)。 - 「快速設定」獨立畫面兩個入口(專案規劃頁裡的快速配置不受影響)。操作會變:那兩個網址直接打不開。
- 密碼產生器兩份零引用的重複副本,只留
jedi-iam那一份;摘要報告兩支零呼叫方法。
3. 同期帶進的功能(v1.20.0 之後主線已完成)¶
- 專案規劃頁新增任務與平行流程(FR-112):規劃頁任務區塊可直接新增/刪除任務;新增任務時後端自己在流程圖上掛平行分支;合流閘道後的任務等所有兄弟分支結束才啟動;輪次離開規劃期後不可增減任務;卡住的任務管理人可「強制開始」。流程圖編輯器屬性面板只剩名稱,存檔被擋下時顯示是哪個節點有問題。
- Google Drive 應用程式設定頁(FR-110):Drive 整合的 OAuth 憑證從環境變數搬進「系統設定 → Google Drive 應用程式設定」頁,可貼上、驗證憑證對不對;平台憑證沒設定時租戶頁的「連接」鈕停用並提示。
- 證據自動分類 2.0(FR-107,部分):證據改由使用者上傳到掛輪次的暫存批次 → AI 分類 → 審閱確認 → 歸檔進對應任務;新增「AI 服務設定」頁讓租戶管理員填自己的 AI 金鑰。系統類選單依「設定 vs 管理」重新分兩組。分類容器進出貨包與端到端回歸未完成(見第 7 節)。
- 客戶端診斷包(FR-071,部分):每筆 log、存取紀錄、錯誤事件帶同一條追蹤編號;新增「系統設定 → 支援」頁看最近的系統錯誤並匯出診斷包;操作日誌頁加時間區間篩選;前後端接上錯誤收集站(設了連線字串才啟用)。log 分區維護排程修成真的能跑。
- 意見回饋併入套件(FR-099)與退役 12 個停用的舊選單(FR-103):對使用者無感,選單列表少了原本就看不到的項目。
- 登入頁小修:忘記密碼與 OTP 重送鈕的冷卻時間真的會鎖住按鈕。
4. Breaking Changes¶
- 雲端與檢測 Agent 必須同一次換版:舊 Agent 配新雲端會因沒帶通行證一直被拒;新 Agent 配舊雲端拿不到通行證會一直重試。兩邊只換一邊等於斷線。
- 對外 API:
/issue/get_members與「快速設定」相關端點下線;多支原本只要登入就能打的端點改要歸屬或權限(錯誤碼新增,前端三語文案已補)。 - 資料可見範圍:摘要報告清單、公告、意見回饋、問卷等的可見範圍收緊——這是修漏洞不是功能倒退,但使用者習慣會變(見第 2 節「操作會變」)。
- 開機查資料庫:產品主機的資料庫帳號沒有讀鎖定紀錄的權限時,改為拒絕開機。
5. DB Migration¶
主線(scripts/sql/manifest.tsv 新增 19 列)¶
FR-114 資安修正(5 支結構類,已進出貨基線)
- 2026-09-22-fr114-survey-discussions-soft-delete:問卷討論加軟刪除欄位。
- 2026-09-22-fr114-bulletin-send-scope:公告加「發送範圍」欄位,既有資料一律全公司。
- 2026-09-22-fr114-feedback-issues-insert-relax-org:意見回饋新增規則放寬——沒有部門的使用者也送得出去(原本會靜默失敗),租戶隔離不受影響。
- 2026-09-22-fr114-log-forwarding-tls:日誌轉送設定加「傳輸加密」與「信任憑證」欄位,既有設定一律不加密。
- 2026-09-24-fr114-vw-user-job-queue-project-from-round:「我的任務」清單的專案欄改從稽核輪次反查。
FR-114 補權限(2 支資料類,不進基線,安裝與升級時由 migrate 那一輪套)
- 2026-09-22-fr114-asset-read-capability-backfill:補 device.read、information-system.read 給缺的角色。
- 2026-09-23-fr114-detection-profile-read-capability-backfill:補 detection-profile.read 給缺的角色。刻意拿掉這幾顆權限的客戶庫也會被補回,升級後要再收一次。
同期功能(12 支)
- FR-103:2026-09-16-fr103-cm1833-retire-12-disabled-ui-routes(退役 12 個停用選單)。
- FR-107:2026-09-17-fr107-job-evidences-ai-classified(任務證據表支援 AI 歸檔來源)+四支選單登記與分組(ai-service-config-menu、ai-service-config-menu-icon-fix、system-menu-regroup、cloud-integrations-regroup)。
- FR-110:2026-09-17-fr110-google-drive-app-config-menu(Drive 應用程式設定頁選單)。
- FR-071:2026-09-18-fr071-cm1923-maintain-log-partitions-security-definer(log 分區維護函式修成能跑)、2026-09-18-fr0711-api-logs-request-id(存取紀錄加追蹤編號)、2026-09-18-fr071-support-page-menu(支援頁選單);僅 DEV 兩支:cm1920-system-logs-purge-debug-noise、cm1923-drain-default-partitions-DEV。
套件自帶 SQL¶
jedi-bulletin 001、jedi-issue 004、jedi-log 005 隨套件出貨,由 build 期攤平進安裝包、升級時自動套。
出貨基線¶
scripts/init/02-schema.sql 已重產納入上述結構類 migration;99-stamp.sql 隨本次版號重生,基線標記為 __init_baseline_v1.21.0b1__。
6. 相依套件版本¶
| 套件 | v1.20.0 | 本版 |
|---|---|---|
| jedi-common | 1.1.2 | 1.3.0 |
| jedi-iam | 1.1.3 | 1.4.3 |
| jedi-task-platform | 1.1.1 | 1.2.0 |
| jedi-file-upload | 1.1.2 | 1.3.0 |
| jedi-issue | 1.1.1 | 1.3.0 |
| jedi-survey | 1.1.2 | 1.2.0 |
| jedi-remote-agent | 1.1.2 | 1.2.0 |
| jedi-detection | 1.1.0 | 1.2.0 |
| jedi-log | 1.1.2 | 1.3.0 |
| jedi-ai-dashboard | 1.1.0 | 1.3.0 |
| jedi-ai-bot | 1.1.0 | 1.3.0 |
| jedi-integrity | 1.1.0 | 1.2.1 |
| jedi-bulletin | 1.1.0 | 1.2.0 |
| jedi-compliance-audit | 1.1.2 | 1.2.0 |
| jedi-asset | 1.1.0 | 1.2.0 |
| jedi-flow-engine | 1.1.2 | 1.4.0 |
| jedi-system-core | 1.1.1 | 1.2.0 |
| jedi-notification | 1.1.2 | 1.2.0 |
| jedi-evidence-classification | 1.1.0 | 1.3.0 |
其餘套件維持 v1.20.0 的版號。檢測 Agent 另出一版 release,與本版雲端配對使用。
7. 部署順序(188 驗證用)¶
- 188
/opt/guidant-ai-be與/opt/guidant-ai-fe都git pull到fix/security-b1本進版 commit(FE 一定要切到含資安修正的那個 commit,不能停在 main)。 - 開跑前確認沒有別的 build 在跑、磁碟有空間;smoke 指定專用臨時庫,不連 STG 那顆庫、不套 migration。
scripts/build/build_all.sh --all→build_bundle.sh封包。BE 版號是1.21.0b1、FE 是1.21.0-beta.1,封包按 BE 版號找三顆 image,FE image 需補一個1.21.0b1標籤。- 驗第 0 節三件事,再交決策者總測。
8. 已知 follow-up(不擋本版)¶
- 5B-5(CM-2061):舊版證據分類的五件(#89、#129~#132)等舊線退場(CM-1849)後確認。
- 第 6 批(CM-2071、CM-2072):資料結構補強與資料庫隔離牆(#23、#24、#41、#104、#105、#109),排在本版測過之後。
- 解鎖碼帳本檔毀損(#91):目前只記高等級警示、不拒絕開機——原廠還沒有「帳本壞了重新簽發」的流程,直接拒絕會讓機器永遠解不開。
- 不在本版處理:前端打包腳本內含套件庫帳密(#75,CM-1998);每套安裝同一組最高權限帳密、三環境公鑰並列(#98、#99,已裁暫緩);內部套件庫走明文(#101,已裁內網不修)。
- FR-107 未完成:分類容器 image 進出貨包、模型碼表換代、端到端回歸。
- 離線機器的指紋可被接手:Agent 離線時別人用它的機器指紋登記,會照「重灌後接手」的設計拿到同一列(既有設計,記為已知限制)。
9. 正式版待辦¶
- [ ] 188 全量 build 通過並驗完第 0 節三件事
- [ ] 決策者總測通過(安裝、升級、登入權限、專案流程、Agent、防竄改、設定頁七組)
- [ ] 四個 repo(BE、FE、jedi monorepo、檢測 Agent)
fix/security-b1合回主線 - [ ] 版號轉正
1.21.0(去 beta 後綴)+FE 對齊+重生99-stamp.sql+git tag 兩 repo+推 tag - [ ] spec-site 凍結快照
v1.21.0/(正式版才切,beta 不切) - [ ] 升級手冊補角色權限說明(升級會補三顆讀取權限,刻意拿掉的升級後要再收一次)
- [ ] 放行後依序上 STG/POC(
install.sh --upgrade,雲端與 Agent 同一次換)