本卡屬 FR-162(母卡見「母卡」欄),批 2,等 1a。把套件的對照服務接進主專案,並把 NIST 官方公布的三份對照資料清洗後灌進 DEV。只改 BE repo。

這張卡做什麼(白話)

1a 做好了對照庫的表與服務,這張卡做兩件事:①把套件服務註冊進主專案的依賴注入,讓後面的工作台與證據帶入能呼叫;②寫一支一次性腳本,把 NIST 官方公布的對照表(800-53↔ISO 27001:2022、800-171↔800-53)清洗後灌進資料庫,再跑規則產生 CMMC↔800-171。做完後 DEV 裡就有從 CMMC 一路對到 ISO 的完整鏈。

官方檔在哪、長什麼樣(首腦已解析)

/Users/chouraymond/Desktop/00_Compliance Manager/07_稽核法規文件/Mapping/sp800-53r5-to-iso-27001-mapping-2022-OLIR-2023-10-12-UPDATED.xlsx
  20 個 sheet(Relationships-AC、AT、AU…SR)+ Definitions;第 1 列表頭;
  A 欄 800-53 控制項(AC-01、AC-02(01) 形式,含 enhancement)、D 欄 ISO 元素;
  1,614 列、643 列有 D 欄;D 欄 121 個不同值=91 個 Annex A(A.5.1 格式,全部命中 DEV ISO catalog control_id)
  + 30 個 Clause 條文(5.2、7.5.1 格式,我們 ISO catalog 沒有 Clauses,先存著標 remarks='clause');
  Comments/Strength of Relationship 兩欄全空 → relationship 一律 intersects-with、confidence NULL
~/Projects/Billows/Audit-Manager/compliance-manager-be/common/util/input/NIST_800-53_to_800-171.xlsx
  單 sheet,A 欄 800-53(AC-02)、B 欄 800-171 逗號多值(3.1.1,3.1.2)→ 拆列;127 列
~/Projects/Billows/Audit-Manager/compliance-manager-be/common/util/input/sp800-53_control_mapping.xlsx
  ⚠️ 不要用:是 OLIR 前版加髒資料(IR sheet 整欄 Low/High、代號混寫)。本卡可順手 git rm 它與
  CMMC_NIST_800_171_Control_No_Mapping.xlsx(CMMC↔171 改規則生成),commit message 說明。
800-53 代號正規化:OLIR 寫 AC-01/AC-02(01),catalog 慣例 AC-1/AC-2.1 或 ac-2.1;800-53 沒有 catalog,
  本案統一存 OLIR 原寫法去前導零(AC-1、AC-2(1)),寫進 provenance 說明;兩份檔要用同一套正規化函式。

怎麼做

① DI:di_containers/oscal/oscal_containers.py 加 control_mapping_resolution_service = providers.Factory(ControlMappingResolutionService)、mapping_io_service、mapping_excel_service、cmmc_171_rule_generator(照 profile_resolution_service 那幾行)。

② 轉接腳本 scripts/import_official_control_mappings.py(一次性,走 BE app context 取 DI;--dry-run 印統計不寫):步驟 (a) 確認 022 的兩個參考框架版本存在;(b) 讀 OLIR xlsx → 建 mapping「NIST SP 800-53 Rev. 5 ↔ ISO/IEC 27001:2022」(source=800-53 fv、target=ISO fv id 331)、entries 控制項層 origin='official'、relationship='intersects-with'、method='manual'、provenance={{"source":"NIST OLIR #155","file":檔名,"published":"2023-10-12","imported_at":...}},Clause 列 remarks='clause';(c) 讀 NIST_800-53_to_800-171.xlsx → mapping「800-171 Rev. 2 ↔ 800-53 Rev. 5」同上;(d) 呼叫 1a 的規則生成器對 CMMC L1(fv 195)與 L2(fv 266)各建一個 mapping 到 800-171 r2。全部走 1a 的匯入服務(更新語意),所以重跑筆數不變。

③ 驗證解析整條鏈:腳本末尾印一筆 resolve(ISO fv 331, 'A.5.15', 'A.5.15_obj.4', [CMMC L2 fv 266]) 的結果,應回 CMMC AC.L2-3.1.1 控制項層(hops=3、relationship intersects-with、confidence 退路折扣)。回寫貼這段輸出。

手測(DEV)

紀律