本卡屬 FR-161(母卡見「母卡」欄),是 FR-161 開卡時順手查到的 FR-139 既有缺口,與本案主線無依賴。

問題是什麼(白話)

FR-139 定的規則是:資源庫綁的專案一旦送審、開始稽核,資源庫就不能再改,直到覆核輪回到「規劃中」才能再改。程式裡為這件事留了一個位置,但裡面是空的,所以現在資源庫在稽核中仍然可以修改。

稽核本身不受影響,因為稽核輪讀的是送審時另外複製出來的凍結版本。受影響的是:顧問以為資源庫已經鎖了,其實還能改;而且專案那邊直接看資源庫那一份(FR-139 一對一),所以專案頁看到的內容會在稽核中途變掉。FR-161 的同步服務也會因此連稽核中的資源庫一起更新。

在哪裡

common/authz/ssp.py  約 129~144 行  _guard_template_write:範本 SSP 寫入守門
                     (檢查 oscal.resource-library.update → verify_template_writable → before_template_write)
common/authz/ssp.py  約 157 行       before_template_write:「範本 SSP 寫入前的業務鎖掛點(例:綁定專案稽核中鎖寫);目前無額外條件。」→ return None
domain/oscal/service/ssp_project_resolver.py 約 153 行  is_writable:專案 living SSP 的寫入判斷,規則是「當前輪 status == planning 才放行」——可參照

FR-139 design D19 原文:只有綁定專案最新一輪是 planning 可改;送審後到結案(含 remediation、closed)一律鎖。覆核子輪回到 planning 時可改。判斷用白名單(只放行 planning),新增輪次狀態時預設是鎖。

怎麼修

手測

紀律