---
title: 第〇步「掛不上去的清單」
subtitle: 拿自家 FR-126／FR-134 材料當測資，在 DEV 走一遍 CRA 31 條，記下哪裡掛不上、哪裡畫面怪
eyebrow: FR-135 CRA 合規框架 · 第〇步實測 · 2026-10-11
lede: 這是測資，不是宣稱 Guidant AI 符合 CRA。目的是在系統裡實際走一遍，找出第二期該補的欄位與功能。末段總結依出現次數排序。
---

## 測試環境與做法

- **環境**：只動 DEV（本機 `guidant_ai_dev`），帳號 blsadmin（租戶 Billows Tech）。
- **框架**：seed 在 jedi-oscal-v2 套件 `jedi_oscal_v2/migrations/002-cra-2024-catalog-seed.sql`（statement 原文）＋ `003-cra-2024-catalog-guidance.sql`（建議證據），框架代號 `CRA_2024`、版本 `2024/2847`、3 群 31 條。
- **資源庫**：「CRA 公版」，Profile 納入全部 31 條，SSP 範本的受評標的填假產品「示範產品（假）」，已發布。
- **專案**：「CRA 第〇步測試（Guidant AI 自評）」，流程範本選「自我評估稽核」。
- **證據**：上傳 4 份到專案程序書池，依控制項對應掛上：

| 代號 | 檔案 | 來源 |
|---|---|---|
| MX | FR126-SR-matrix.html | FR-126 安全需求符合性矩陣（81 條 SR，看程式初步核實） |
| AR | FR126-test-audit-report.html | FR-126 資安測試審計報告（測試案例實跑） |
| SB | sbom-cyclonedx-1.6.json | FR-134 SBOM（DEV 既有掃描，掃的是 primevue 源碼，**不是 Guidant AI 本體**） |
| VR | source-scan-report.pdf | FR-134 弱點掃描報告（同一次掃描，1576 元件／120 弱點） |

- **操作方式**：資源庫、專案、掛證據都打和前端相同的 API，順序與欄位照前端程式碼；畫面觀察是讀前端元件得出的，**沒有用瀏覽器實際點過**。凡寫「畫面上」的地方都是讀碼推論，需人工在瀏覽器複核。

## 一、逐條結果

原因分類：**A** 沒有對應材料 ／ **B** 畫面沒地方放 ／ **C** 一條包多件事，證據混在一起 ／ **D** 證據粒度太粗（只能掛整份檔，指不到檔內哪一段）／ **E** 其他。

### Annex I Part I（14 條）

| 控制項 | 掛了什麼 | 掛不上／不完整的原因 | 畫面怪的地方 |
|---|---|---|---|
| CRA.I.1 | MX、AR | D：只能掛整份矩陣，無法指向「威脅建模→SR」那一段；C：風險評估、安全開發流程、適用性判定三件事混在一條 | — |
| CRA.I.2.a | VR、SB、AR | E：SBOM 是範例源碼，不是自家產品；「發版當下未修漏洞逐筆判斷不可利用」沒有材料 | — |
| CRA.I.2.b | MX（SR-03.3、06.6、09.2） | A：「可重設回原始狀態」沒有材料；C：預設安全設定與可重設是兩件事 | — |
| CRA.I.2.c | 無 | A：產品沒有自動安全更新、預設開啟、可延後的機制，也沒有測試 | — |
| CRA.I.2.d | MX、AR（SR-01、SR-02） | C：存取控制與「回報可能的未授權存取」是兩件事，後者沒有告警材料 | — |
| CRA.I.2.e | MX（SR-03、06.1／06.4／06.8） | D：SR 編號只能寫在說明欄，檔案本身掛整份 | — |
| CRA.I.2.f | MX（SR-09.3、09.4、04.10、08.6） | A：FR-064 竄改偵測沒有可掛的報告檔；「回報資料損毀」沒有材料 | — |
| CRA.I.2.g | MX（SR-05.4、05.5） | A：只涵蓋資料外送，產品本身處理範圍的最小化沒有材料 | — |
| CRA.I.2.h | MX（SR-07.1～07.9） | C：抗 DoS 與「事件後維持基本功能」是兩件事，後者沒有材料 | — |
| CRA.I.2.i | MX（SR-07.8、09.7） | —（本條借來驗「標不適用」，見第三節） | — |
| CRA.I.2.j | MX（SR-03.5、09.2、04.1） | D | — |
| CRA.I.2.k | MX（SR-09.5、04.8、04.11） | D | — |
| CRA.I.2.l | MX（SR-08.1～08.6） | A：「使用者可選擇關閉紀錄」這半句沒有材料；C | — |
| CRA.I.2.m | 無 | A：使用者永久刪除全部資料、安全轉移，沒有對應 SR 也沒有測試 | — |

### Annex I Part II（8 條）

| 控制項 | 掛了什麼 | 掛不上／不完整的原因 | 畫面怪的地方 |
|---|---|---|---|
| CRA.II.1 | SB、VR | E：同 I.2.a，SBOM 不是自家產品（FR-127 出貨 SBOM 在 DEV 沒有可下載的產物） | 下載的檔名是「Evidence upload_SBOM-…」，掃描綁的任務名直接變成檔名開頭 |
| CRA.II.2 | VR | A：報告能證明「識別」，「無延遲修補、安全更新與功能更新分開發布」沒有材料；C | — |
| CRA.II.3 | AR、VR | E：「定期」需要多次執行紀錄，單份報告證明不了頻率 | — |
| CRA.II.4 | 無 | A：沒有公開揭露已修漏洞的頁面或公告 | — |
| CRA.II.5 | 無 | A：沒有 CVD 政策文件 | — |
| CRA.II.6 | 無 | A：沒有對外漏洞通報聯絡窗口 | — |
| CRA.II.7 | 無 | A：安裝版升級（`install.sh --upgrade`）有說明，但沒有「安全發送」的驗證材料（簽章、完整性檢查）可掛 | — |
| CRA.II.8 | 無 | A：沒有安全通告（advisory）範本或發布紀錄 | — |

### Annex II（9 條）

| 控制項 | 掛了什麼 | 掛不上／不完整的原因 | 畫面怪的地方 |
|---|---|---|---|
| CRA.A2.1 | 無 | A＋B：證據是「隨產品附上的資訊本身」，系統沒有「填一段資訊、指出它在產品哪裡」的欄位，只能上傳截圖 | — |
| CRA.A2.2 | 無 | A＋B：同上；依賴 II.5、II.6 先有 | — |
| CRA.A2.3 | 無 | B：受評標的的「系統識別碼」欄位可以放，但那是 SSP 範圍欄位，不會跟這條控制項連起來 | — |
| CRA.A2.4 | 無 | A＋B | — |
| CRA.A2.5 | 無 | A：要從 I.1 風險評估產出，現在沒有 | — |
| CRA.A2.6 | 無 | —（借來驗「標不適用」；自評不出具 EU 符合性聲明） | — |
| CRA.A2.7 | 無 | A＋B：支援期結束日是一個日期，系統沒有地方存，只能寫在說明文字裡 | — |
| CRA.A2.8 | 無 | C：一條包 (a)～(f) 六件事，只能掛整份使用手冊 | — |
| CRA.A2.9 | 無 | —（借來驗「標不適用」；選擇性條款） | — |

## 二、跨條目的系統問題

### 規劃頁看不到條文與建議證據

- 規劃頁組控制項樹時，控制項的說明寫死成空字串（前端 `ProjectPlanningView.vue` 組樹那段 `description: ''`），後端 `/ssp/<uid>/control-tree` 也不回 statement 與 guidance。
- 結果：顧問在規劃頁只看得到中文標題（例如「資料最小化」），看不到法條原文，也看不到建議證據。原文和建議證據只在「合規框架管理」的控制樹裡看得到。
- CMMC 靠評估目標（AO）的文字補上「要查什麼」，CRA 第一期不建 AO，這個缺口就直接露出來。

### 無評估目標時，準備期一個工作都不會開

- 建專案回 `job_count: 0`，BE log：`generate_prep_jobs ... jobs=0 skipped=31 cloned_templates=0`。
- 原因：準備期收證據工作的流程範本有兩個來源——AO 上的流程範本（建資源庫時只替 AO 建），或資源庫的 `template_uid`（退路）。CRA 沒有 AO；而新建資源庫的 API 不寫 `template_uid`，**DEV 全部 14 個資源庫的 `template_uid` 都是空的**。所以「無 AO 時每條控制項開一筆工作」這條退路，在 DEV 從來沒有被走過。
- 啟動稽核的前置條件「準備期工作完成」目前一律放行，所以流程沒有卡住，但準備期等於空轉，沒有任何工作可以派給客戶收證據。

### 證據只能掛整份檔

- 控制項的程序書對應以「一份檔」為單位，不能指向檔內某一節或某幾條 SR。FR-126 一份矩陣要掛 12 條控制項，每條實際依據的 SR 只能另外寫進說明欄。
- 控制項詳情 API 的 `reference_documents` 回空陣列，但程序書對應（document-mappings）有資料——同一件事有兩套掛法，規劃頁讀的是後者。

### 部分更新會把實作狀態清空

- 只送「實作說明」更新控制項，回來的 `implementation_status` 從 `unknown` 變成空。原因是請求格式的每個欄位預設都是空值，服務端用「有沒有這個鍵」判斷要不要寫，空值就被當成「要清空」。前端每次都送全部欄位所以沒遇到，未來的匯入器或批次 API 會踩到。本次已手動還原 17 條。

### 資源庫與框架的其他小問題

- 新建資源庫的 API 回應寫 `publish_status: draft`，但同一筆在列表是 `published`（`enable=1`）。
- 用一般租戶管理員建的「CRA 公版」是租戶庫（`scope` 空），不是系統公版；要成為給所有客戶用的公版，發布要 platform-admin，這次沒做。
- 程序書池上傳後 `file_size` 回空。
- 前端新增框架時代號寫死 `CMMC_2`；CRA 只能靠 seed 進來，畫面上無法新建非 CMMC 框架。
- 框架管理頁的控制項清單排序是先序號、再群組，三群交錯顯示（I.1、II.1、A2.1、I.2.a、II.2…），不是依群組排。
- guidance 在框架 catalog 上，但資源庫與專案是「建立當下整份複製」。本次資源庫與專案在 guidance 灌入前就建好，所以都沒有建議證據；要讓「CRA 公版」有 guidance，得重建資源庫或另補。

## 三、「標不適用」是否排除稽核範圍（第 3 棒修完後實測）

- 第 3 棒（CM-2678，commit `3ca6884b7`）修完後，BE 已自動重載；標不適用時 `applicability` 確實同步寫成 `not-applicable`。
- 標了 3 條不適用：CRA.I.2.i、CRA.A2.6、CRA.A2.9。
- 推進到「稽核計畫填寫」：系統提醒「尚未指派稽核員」（軟提醒，畫面確認後可繼續），確認後推進成功。
- 稽核計畫的查核控制項 **28 條，3 條不適用都被排除**。修正有效。
- 準備期工作是否仍顯示：本專案準備期本來就 0 個工作（見第二節），**無從驗證「不適用的控制項準備期工作是否仍顯示」**，要等準備期能開出工作後再測。
- 專案目前停在「稽核計畫填寫」階段，沒有退回規劃。

## 四、總結：第二期要補的（依出現次數排序）

| 排名 | 要補的東西 | 出現次數 | 涉及條目 |
|---:|---|---:|---|
| 1 | **規劃頁顯示條文原文與建議證據** | 31 | 全部 |
| 2 | **無 AO 時準備期也要開得出工作**（資源庫要有收證據流程範本，或建資源庫時替控制項層建一份） | 31 | 全部 |
| 3 | **流程與文件類證據的產生工具**（CVD 政策、通報窗口、安全通告、公開揭露頁、更新與支援期聲明的範本）——產品本身沒有材料，系統也沒有幫客戶產出的地方 | 13 | I.2.c、I.2.m、II.2、II.4～II.8、A2.1、A2.2、A2.4、A2.5、A2.7 |
| 4 | **證據指向檔內某段**（掛整份檔＋指定章節／SR 編號，取代寫在說明欄） | 11 | I.1、I.2.b、I.2.d～I.2.l |
| 5 | **評估目標（AO）拆分**，讓一條多件事的證據分開放 | 7 | I.1、I.2.b、I.2.d、I.2.h、I.2.l、II.2、A2.8 |
| 6 | **Annex II 的「資訊本身」欄位**（例如支援期結束日、通報窗口網址存成結構化欄位，並標出在產品哪裡） | 6 | A2.1～A2.4、A2.7、A2.8 |
| 7 | **自家產品的 SBOM 進系統**（FR-127 出貨 SBOM 能匯進第三方元件風險模組當證據） | 2 | I.2.a、II.1 |
| 8 | 定期執行的證明（同一掃描或測試的多次紀錄） | 1 | II.3 |

第 1、2 項是系統層、影響全部 31 條，且不限 CRA（任何無 AO 的框架都會遇到）；第 3～6 項是「CRA 內容本身」要補的。

另外兩個小 bug（部分更新清空實作狀態、資源庫建立回應的發布狀態不一致）建議另開小卡。
