FR-132 存取管理 — arc 收尾 SUMMARY(2026-10-09)

由 FR-132-LOG.md 八個棒的 block 濃縮。母卡 CM-2510,子卡 CM-2511~2600 共 76 張。上線版本 v1.26.0(BE main 01dca31a4、FE 0e2b1799、jedi 143c309e)。

§1

為什麼做

公司層權限是 RBAC 但四處沒接上:部門範圍只存不判、起訖日判了畫面設不了、33 支 API 只驗登入、123 個能力點三套命名;兩個資安漏洞(選單明細與 JWT is_admin 不過濾到期/停用指派)。目標照「誰 × 角色 × 範圍 × 時效」補完。

§2

做了什麼(行為差異)

面向 升級前 升級後
能力點 123 個、三套命名、大半只驗登入 208 個三段式(模組.資源.動詞),全部真擋,缺權限回 403 GRC_403022 並寫明缺哪顆
角色 逐筆勾 123 項 權限樹三層(分組 › 側欄頁 › 內頁,三支工作面子頁例外上樹);萬用字元 pattern;系統管理員 *.*.* 每租戶恰一個不可改;四個範例角色可改可刪;JSON 匯出匯入
指派 角色綁人、無時效 使用者 × 角色 × 範圍 × 起訖日;到期仍顯示並標已到期、判定與選單不採計;部門只當屬性(隔離不做)
畫面 角色管理、使用者管理 存取管理分組四頁(角色/指派/檢查存取/角色明細);帳號表單角色區唯讀+管理指派;342 顆按鈕照權限隱藏(專案內頁雙層)
升級 — 舊名自動改新名;新拆 90 顆依三類補授;grc.audit.read 補給會進專案的角色;全集管理員轉系統管理員、非全集保留旗標原樣轉;升級補授腳本改寫新表
任務情境 — 任務動作看任務權限;結案問卷與檢測紀錄持「檢視任務證據」可讀;問卷本體依情境守門
錯誤追蹤 功能在但出貨包沒 sentry-sdk 本版起隨包內建,設 SENTRY_DSN 即啟用,事件帶 release/environment/request_id
§3

改動範圍

  • BE:192 commits(arc 起點 518931af9)。新模組 api/permission_matrix/;common/authz/ 與 jedi-iam authz/(pattern 展開、log_only 機制、守門一致化);27 支主線 migration;出貨基線重產兩次;core/host_capabilities.py 與各套件 capability 宣告;release 1.26.0。
  • jedi:19 支套件改動並發版(jedi-iam 1.4.8→1.5.0 最大,52 檔)。
  • FE:72 commits,存取管理四頁、角色樹 composable、v-can 守衛、342 顆按鈕。
  • 文件:design.md、inventory 八份、spec 站四頁+退役舊頁+使用手冊章、release note、兩份 analysis、STATE/LOG。
§4

驗證

  • 69 張實作子卡首腦逐張從 HEAD 核 diff 並實打;決策者手測三批回饋全部落地。
  • 真擋後出貨五角色各建臨時帳號走遍側欄(0 個 403、0 錯誤提示),13 模組 31 支寫入端點 × 五角色 403 與角色設定全吻合。
  • 舊庫升級排練(190,基線 1.22.0):15 角色 21 帳號逐一比對,升級前權限零遺失;首腦獨立 SQL 展開 diff 複核。
  • 守衛測試 test_module_boundaries 117 綠(基線重產後三條紅轉綠)、test_fr132_*、test_role_templates。
  • 出包 smoke 9 項綠,新增探針④c 錯誤追蹤啟用。SBOM:四顆 image Critical/High 全 0。
  • 三環境升級後:311 支 migration、208 全 enforce、每租戶一個系統管理員、八容器 healthy。
§5

決策者裁示(全在 STATE「已定裁示」)

重點:D1~D12 照 design 定案、D12 部門隔離不做;部門範圍方式乙;不觀察直接真擋;出貨五角色與稽核員收窄;擁有者規則與 tree_page 例外;結案問卷視為證據;問卷本體依情境;公用角色不做;舊資料保留另開;排練用 190;jedi-iam 1.5.0;壞包同版號重出;arc-review 不做、e2e 不跑直接進版;site-regression 重建前發版不以 e2e 為 gate;三 repo 併回 main。

§6

已知 follow-up

site-regression 重建(另開 FR);乾淨安裝無基線庫能力點生成(另開 FR);提權入口限制(下一版);FR-B 專案層成員角色合併;舊資料與法規證據保留(討論串);GET /user/<停用 uid> 500;三條既有紅燈;排練庫待 drop;DEV .env 含 DSN。

§7

部署 handover

  • 三環境皆 1.26.0+01dca31a4;安裝包 188 /opt/guidant-ai-be/.build/bundle/guidant-ai-1.26.0.tar.gz(兩個 .BAD-* 壞包留對照);image 在 Harbor 1.26.0-01dca31a。
  • STG/POC 要收錯誤追蹤:各自 guidant.env 放 SENTRY_DSN 後 sudo guidantai restart。
  • 三台主機 reboot-required:190 已重開,188/189 未重開;下次升級若容器起不來(seccomp errno 524)重開再 sudo guidantai start。
  • tag v1.26.0 由決策者打(BE/FE)。
§8

✓ 已更新 / ✗ 漏做

✓ release note(canonical+spec 站鏡射+版本列表)、spec 快照 v1.26.0、spec 四頁+退役+手冊章(CM-2599)、design 已定裁示在 STATE、兩份 analysis、LOG 八個 block、STATE 結案版、memory 四條(site-regression gate、Nuitka 字串 import、STATE 待裁對 Notion、既有兩條)+同步個人目錄、CLAUDE.md DB_PASSWORD。 ✗ arc-review(決策者裁不做);e2e 回歸與存取管理四頁測案(裁停,隨 site-regression 重建);FR 站 README 總進度與 docs/features/README.md FR 登記表狀態欄(本棒未動,收 Done 後可一行改「已上線 v1.26.0」)。