Guidant AI v1.14.0 Release Note¶
| 項目 | 內容 |
|---|---|
| 版本 | 1.14.0(功能版號;主軸=License 控管全案上線 + 檢測基準內容管理) |
| 發布日期 | 2026-08-10 |
| 上一版本 | 1.13.0(2026-08-01) |
| 涵蓋區間 | 2026-08-01 ~ 2026-08-10 |
| 涵蓋需求 | FR-062 License 控管機制全案(.1~.10,含簽發端地基/產品端驗照/狀態機/執法/開通/簽發後台/通知/角色矩陣 license 維度/手動停權獨立軸/產品後台向 LC 請照)+ FR-060 檢測基準內容管理(拆表+分類+內容瀏覽) |
| 規模 | 跨 BE + FE + License Center(獨立 repo)三方;BE 134 commits(含 FR-060 25 支 + FR-062 44 支 + 其他收尾/文件/雜項)、FE 對應 commits、LC repo 今日 8 支;DB migration 24 支(fr058 尾聲 2 支 + fr059 尾聲 2 支 + fr060 全 6 支 + fr062 全 7 支 + 其他 7 支) |
| 適用部署 | dev(已驗);STG 已部署;POC 已部署(FR-062 於 2026-08-10 完成雙環境部署與請照實測;FR-060 已於 2026-08-07 完成三環境上版) |
| 部署性質 | 含 24 支 DB migration(三環境 DEV/STG/POC 已全數套用,見 §5)。新增獨立系統 License Center(獨立 repo license_center,獨立 DB,需另行部署見 §8)。新增必要環境變數:License 簽發公鑰清單(見 §4)。相依套件僅 jedi-auth 由 0.1.33 → 0.1.34。 |
0. 發版前回歸 gate¶
本版未執行 site-regression 自動 Core gate;FR-062 全案於 STG/POC 雙環境部署後由決策者逐項請照實測驗收通過(詳見 §9 部署 handover),FR-060 已於 2026-08-07 完成三環境上版並結案。放行依據為決策者當面驗收,非自動化 gate。
1. 概述¶
v1.14.0 是產品正式上線銷售前的最後一塊拼圖:License 控管機制全案落地。核心信任模型是「公司自建簽發端(License Center,獨立 repo 獨立 DB,私鑰不出機)+ 產品端只驗不簽」——簽章引擎、按模組授權、到期狀態機與通知、執法降級、序號開通與機器指紋綁定、簽發 Web 後台,一次到位並完成雙環境(STG/POC)部署與請照實測。
同版收官的還有 FR-060 檢測基準內容管理——把 v1.13.0 剛上線的「掃描設定檔庫」從「只有名字的不透明二進位檔」升級為「選之前先看得到內容」:控制項清單瀏覽、人工待判項標示、三軸分類、改名編輯,並修復拆表過程中發現的兩個靜默漏洞(停用 profile 仍可派工、通知信退化成 UUID)。
2. 重點新功能¶
2.1 FR-062 License 控管機制(全案十輪)¶
- 簽發端地基(.1):Ed25519 簽章引擎 + CLI + License Center 獨立 DB(
plans/license_issuance)。照檔格式歷經三次演進,現行 v2.1 三段式含send_email旗標。 - 產品端驗照(.2):
config.tenant_licenses資料模型、root 後台授權管理頁、FE 授權狀態頁;照綁頂層租戶,整條讀照鏈過租戶樹 resolve。 - 狀態機+橫幅(.3):每日排程 cron 推進
notify → grace → readonly,conditional UPDATE 冪等;FE 全域到期橫幅;root tenant 特判豁免。 - 執法進場(.4):
common/authz新增第六軸+全域唯讀 gate+選單/任務型態動態過濾;兩支環境開關(LICENSE_ENFORCEMENT_ENABLED/LICENSE_READONLY_GATE_ENABLED)可整體關閉;/license/前綴整段豁免防死鎖。 - 開通(.5):離線(機器碼 → 簽照 → 上傳)與線上(序號+指紋一鍵換照)兩路;線上路徑 License Center 開放公開 API,BE 代打並完整驗章。
- 簽發 Web 後台(.6):Tabler UI(pin 版入 static/vendor,不依賴 CDN)——客戶總覽、簽發/換發表單、詳情頁、照檔下載、客戶授權時間線。
- 通知+既有租戶發照 SOP(.7):notify/grace/readonly 三段到期信(收件人=三旗標聯集+root fallback);既有租戶發照護欄腳本(DEV 演練用)。
- 角色矩陣 license 維度(.8,驗收回饋追加):
ui-routes附is_licensed,FE 未授權能力點反灰空框並顯示原因,繞過 UI 直打 API 亦回 403;roles寫入端守門;建租戶 seed 第三道扣除未授權模組。 - 手動停權獨立欄位(.9,追加):停權升為獨立欄位,cron 每日排程不再覆寫人為決策;migration 回填刻意不寫
suspend_reason(該欄直接顯示給客戶)。 - 產品後台向 LC 請照(.10,追加):SaaS 續約從「LC 下載 → 產品上傳」兩趟手動搬檔,改為產品後台帶 API token 直打 LC 內部簽發 API 一鍵完成;LC 新增 API token 白名單+管理頁。
2.2 FR-060 檢測基準內容管理¶
- 控制項內容瀏覽:管理頁點進去可看完整控制項清單(編號/標題/說明/嚴重度/是否人工待判),可搜尋可篩選;摘要區直接給總數/自動檢查數/人工待判數,選之前就知道覆蓋率(實測 TWGCB-01-014 Ubuntu 22.04 覆蓋率僅 15%)。
- url 型基準內容抽取(CM-1072,延伸納入):外部網址型基準一樣看得到內容,BE 代下載(含 SSRF 五道防護),拿到 bytes 後走與壓縮檔完全相同的解析路徑;掃描路徑本身不變,仍是 agent 直接吃 URL。
- 三軸分類與改名:主檔拆表解決「name 是唯一索引一部分、改不動」的根因問題,新增標的類型/標的產品/基準體系三軸分類(存 DB 由 root 維護,非 FE 寫死),任務下拉依標的類型分組。
- 兩個靜默漏洞修復:拆表過程中
is_active守門一度靜默失效(已停用 profile 仍可派工)、通知信「掃描設定」欄位一度靜默退化成profile:<uuid>——皆已修復並補迴歸測試。
3. 重要修補¶
- FR-062.10 CM-1179:請照未指定
deployment_mode時改帶本站台DEPLOYMENT_MODE,避免 LC 用預設值猜測簽出錯誤照(POC 首發實際踩過此坑)。 - FR-062.9 CM-1173:migration 回填手動停權欄位時刻意不寫
suspend_reason,避免帶入內部備註誤顯示給客戶。 - CM-1150:選單剪掉 root-only 的 License 授權管理入口誤露出問題。
- CM-1151:新增租戶排除平台層 capability,修 IntegrityError。
- CM-1155:重複上傳同一張現行照改為冪等,不再插重複列。
- CM-1156:license 改綁頂層租戶,整條讀照鏈過租戶樹 resolve。
- CM-1157:跨租戶重複
license_id一律拒絕,四條落地路徑一處收斂。 - CM-1159:時鐘回撥判定加 24h 容差窗+專屬 error code。
- CM-1160:DOCX preselect-new 改 capability 判定+租戶管理員角色自動掛
is_admin。 - CM-1162:本地檔讀取端不再要求
STORAGE_CONFIG,寫入讀取兩端語意對齊。 - CM-1165②:未開通照專屬 error code,不再誤導成「綁錯機器」。
- FR-060:
_load_profile()is_active 守門None is False判定漏洞修復(無聲授權漏洞);_humanize_profile_param()通知信退化成 UUID 修復。 - FR-060:CM-1047 停用後無法以同名再建。
4. 環境變數¶
新增(License 控管必要):
- License 簽發公鑰清單寫死於
common/license/public_keys.py(三環境各自獨立 kid:DEV2ce3bb59a6f5a2ce/ STG04b1e65f100c6c8f/ POCf3b562a6d9755527),非 env var 形式,但新環境部署必須先進此檔並 commit 才 build image,順序顛倒會報「未知的 kid」。 LICENSE_ENFORCEMENT_ENABLED/LICENSE_READONLY_GATE_ENABLED(選配,預設true)——執法總開關,可整體關閉。
License Center(獨立服務)必要環境變數:私鑰、passphrase、DB 連線——請查 LC repo .env 或部署文件,一律不寫入版控。
沿用既有:檢測工具憑證加密沿用 FR-056 起的 DETECTION_TOOL_ENCRYPTION_KEY;FR-060 無新增環境變數。
5. DB Migration(24 支,三環境已全數套用)¶
依日期序(DEV/STG/POC 皆已套用完畢):
2026-08-01 fr058-20-sonarqube-scan-mode-label
2026-08-01 fr058-21-sonarqube-upload-scan-mode
2026-08-01 fr058-22-openscap-content-path-advanced
2026-08-01 fr059-1-detection-tool-profiles
2026-08-01 fr059-2-detection-profile-capability
2026-08-01 fr059-3-detection-profile-menu-route
2026-08-01 fr059-3-param-schema-options-source
2026-08-01 fr059-4-fix-detection-profile-menu-pid
2026-08-02 fr058-23-gcb-setup-guide-remove-demo-note
2026-08-02 fr058-24-sonarqube-setup-guide-remove-csharp-warning
2026-08-02 reverify-round-narrow-ap-reviewed-controls
2026-08-03 cm1047-dtp-tenant-index-partial
2026-08-03 fr060-1-detection-profile-split ⚠️ 662 行,拆表核心
2026-08-03 fr060-2-detection-profile-taxonomies
2026-08-03 fr060-3-param-schema-extraction-declaration
2026-08-04 fr060-1b-detection-profile-split-adaptive
2026-08-04 fr060-3-dpv-source-validators
2026-08-08 fr062-2-license-menu-route
2026-08-08 fr062-2-tenant-licenses
2026-08-09 fr062-tenant-license-events
2026-08-10 fr062-10-license-lc-events
2026-08-10 fr062-8-license-menu-restructure
2026-08-10 fr062-9-license-manual-suspend
2026-08-10 fr062-license-group-sort-last
⚠️ FR-060 拆表 migration(fr060-1)舊表未 DROP——原表 rename 為 detection_tool_profiles_deprecated_20260803 觀察期保留,另案處理。
License Center 端有自己獨立的 migration(license_center/scripts/sql/ 001/002),不進本專案 schema_migrations,走 LC repo 自己的部署 SOP。
6. 相依套件版本¶
jedi-auth0.1.33 → 0.1.34(CM-1046 根因層修正:建立使用者不帶/帶 nullorg_units時 500)。- 其餘 jedi-* 套件無版本變動。
7. FE 版本對齊¶
compliance-manager-fe package.json 同步 bump 至 1.14.0;本版 FE 主要變更:授權狀態頁、角色矩陣反灰、選單新增「授權管理」群組、向 LC 請照 dialog、檢測基準管理頁重構(拆六支子元件)與控制項詳細頁。
8. License Center(新增獨立系統,部署須知)¶
License Center 是本版新增的獨立部署單位,非本專案內建模組:
- Repo:
~/Projects/Billows/Audit-Manager/license_center/(獨立 DB,私鑰不出機,刻意與主產品分離) - DB 命名新標準:
license_center_dev/license_center_stg(同 188 主機),license_center_poc(189 主機),皆 port25432 - 服務:systemd
license-center.service,STG/POC 路徑/opt/license_center,port5062 - 完整部署 SOP 見 LC repo
docs/deployment-guide.html(以 STG 實戰部署為藍本) - 產品端與 LC 僅透過「簽好的 License 檔」或內部簽發 API(.10 新增)交互,無 DB 層共用
9. 部署順序與注意事項¶
- DB migration:依 §5 順序套用(三環境已完成)。
- License Center 先於產品 BE 部署:簽發鑰 keygen → 公鑰進
common/license/public_keys.py→ BE commit 並 build → LC 起服務 → 建 API token → 請照實測,順序顛倒會導致「未知的 kid」。 - BE:
git pull→ 重啟(main_app.py)。 - FE:同版 build 部署。
- 執法總開關確認:
LICENSE_ENFORCEMENT_ENABLED/LICENSE_READONLY_GATE_ENABLED上線前確認符合預期(預設皆為true)。 - root tenant 永不持照:root 無條件豁免執法,正式環境不應為 root 發照。
- 三環境公鑰共存不取代:新增 kid 不刪舊 kid,否則既有環境的照全部驗不過。
10. 已知限制與 follow-up¶
已知限制¶
- License Center 目前皆內網部署(
:5062),雲端公網(TLS/網域/防火牆)補驗尚待進行。 - FR-060 url 型基準內容會靜默偏離來源:掃描抓的是 URL 即時內容,控制項明細是某次抽取的快照,git 上游改了平台不會自動感知。決策者已裁定方向(比對 ETag/Last-Modified 甲案),可行性未驗證,另案處理。
- FR-060 三個欄位值仍是英文(檢查類型/適用角色/狀態),未決定是否翻譯。
Follow-up¶
design.md缺 FR-062.9 段落:手動停權獨立欄位的設計決策未落文件,屬已知缺口。- STG 兩租戶正式發照:BE/LC 已就緒,發照動作由決策者手動執行(現有 2 張為部署驗證照)。
- 正式環境簽發鑰:正式環境產出後必須先進
common/license/public_keys.py才能 build 出貨 image。 - CM-1143 遺留模組整鏈退役(cruise-project/resource/report+jedi-resource-store):Not started,全案後另議。
- 未套的三支 migration(決策者裁示這次不動):
2026-07-20-ssp-shared-metadata-DEV-cleanup、2026-08-01-fr058-22-openscap-content-path-advanced(已被本版套用,另兩支仍待)、2026-08-03-fr060-1-detection-profile-split-advanced。 - FR-060 舊表
detection_tool_profiles_deprecated_20260803未 DROP:觀察期後另案處理。 - FR-060 CM-1104:POC 12 支公版控制項抽取(管理員 UI 操作,非開發)。
11. 完整 changelog 索引¶
- FR-062 設計文件:
docs/features/FR-062-2608-license-management/design.md - FR-062 部署 SUMMARY(含 STG/POC 雙環境部署完整記錄):
docs/features/FR-062-2608-license-management/handoff/2026-08-10-fr062-deployment-SUMMARY.md - FR-062 STATE/LOG(living + append-only):
docs/features/FR-062-2608-license-management/handoff/fr062-STATE.md/fr062-LOG.md - FR-062 部署手冊:
docs/features/FR-062-2608-license-management/v1.14.0-deployment-guide.md - FR-060 全案收尾 SUMMARY:
docs/features/FR-060-2608-detection-profile-content-management/handoff/2026-08-03-fr060-arc-SUMMARY.md - FR-060 設計文件(D1–D19):
docs/features/FR-060-2608-detection-profile-content-management/design.md - License Center 部署手冊:
license_center/docs/deployment-guide.html - License Center CLAUDE.md(架構守則、安全鐵律、與主產品介面):
license_center/CLAUDE.md - 授權管理使用指南(平台管理員 + 租戶使用者兩視角):
docs/user-manual/ - 功能頁面 spec:
docs/specs/current/— License 授權管理/我的授權狀態頁面、system-admin/detection-profile-manage.md - Notion cases:CM-1054~1104(FR-060)、CM-1140~1183 一帶(FR-062 全案)
12. 相關文件索引¶
- FR-062:
docs/features/FR-062-2608-license-management/(design.md / discussion.md / handoff/) - FR-060:
docs/features/FR-060-2608-detection-profile-content-management/(design.md / discussion.md / handoff/) - License Center repo:
~/Projects/Billows/Audit-Manager/license_center/