需求

現在要重新設計產品核心架構, 先前只有套用OSCAL"概念", 現在要將正式的使用模式以及流程, 資料架構, 引入系統, 成為正式專業的 OSCAL GRC 系統 這邊整個捨棄原本討論的FR-037, 請用全新的需求進行 目前有幾個項目需要整個大調整

  • 外部套件
  • 主專案後端
  • 主專案前端 如下
§1

外部套件

  1. OSCAL 資料結構重新設計, jedi-oscal 整個砍掉重練, 進入v2.0, 符合OSCAL V1.2.2資料模型
    • 新版本的db schema 請參考 /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-037-2606-oscal-schema-gap-audit/oscal-catalog-and-roots-schema-v2.sql
    • 存放方式要依據正式的oscal物件以及欄位存放, 目前舊版本很多自定義欄位, 要調整完全符合oscal 物件的使用方式存放
    • 幫我設計一個專業的第三方套件模式, 可以被我的主專案運用, 因應各種情境讀寫資料給主專案使用
    • 不在原本jedi-oscal 下開發, 請新開一個新的套件資料夾 jedi-oscal-v2, 整個重新設計開發
    • 需要建立全新的model, db schema name 一樣先採用 oscalv2 後續完工會rename替代回oscal, 或是你建議直接drop oscal 重新建立也行, 開發資料庫會備份以及任意使用
§2

主專案邏輯

  1. 調整合規框架, 合規資源庫資料存放方式

合規框架

  • 合規框架主檔: oscal.oscal_frameworks -> rename oscal.frameworks
  • 合規框架版本: oscal.oscal_framework_versions -> rename oscal.framework_versions
  • catalog主檔以及其關聯資料庫對應結構更新, 這邊請參考Outline:
    • catalog 主檔: catalogs(會對應一個framework_versions)
    • control group: catalog_groups
    • control: catalog_controls
    • assessment object(AO): catalog_parts
    • 其他欄位使用方式,請參考sql schema
  • 匯入合規資源庫版本, 後面接的功能要調整成使用新的資料結構

合規資源庫

目前合規資源庫, 被設定為公版的稽核範本, 由專業的稽核顧問來制定以及維護自己的稽核範本, 會針對各種不同的稽核框架內容做設計, 當有客戶提出需求要協助做導入時, 就可以拿自有的合規資源庫, 來成立客戶專案, 輔導以及協助客戶完成整個稽核的流程

合規資源庫的調整, 目前會由三個物件組成

  • catalog
  • profile
  • ssp(公用版本用) 相關規則邏輯如下:
  1. 新增合規資源庫時, 會選擇一個framework_versions, 把該對應的catalog snapshot 一份起來, 給該合規資源庫用

  2. 會依據profile的設定, 決定有多少控制項, AO 要被納入這份合規資源庫

  3. 一樣要提供匯入ssp 功能, docx/excel 只是後面存放資料要改用新的資料庫架構

  4. 新增專案的模式會改變, 會使用最新版本以及發布的合規資源庫, snapshot定版複製一份給專案使用, 該專案後續都是用這份合規資源庫下的 catalog, profile, ssp, 來往後作業,

  5. 調整專案流程

專案流程

專案(project) -> 專案規劃(SSP) -> 稽核計畫(AP) -> 稽核(AS) -> 改善計劃(POA&M)

專案將會由下面幾個物件組成

  • projects: 專案主檔, 會有專案的基本資料, 引用哪一個合規資源庫以及版本, 屬於哪一種稽核的導入
  • project_audit_rounds: 專案稽核輪次, 每一輪的專案稽核紀錄, 舊的版本是用AP來做, 這設計是不對的, 改由新的table來替代, schema 參考下面, 有需要增加可以討論
id: int, auto_increse, pk
name: varchar(255), NN, 輪次名稱
round_no: int, 輪次編號
start_at: datetime, 開始時間
end_at: datetime, 結束時間
status: enum(尚未開始, 專案規劃種, 稽核規劃中, 稽核進行中, 改善計劃中, 結案), 狀態, 這邊參數可以討論
ssp_id: int, 關聯SSP, 可為null, 等到正式進入稽核階段SSP鎖定時,才會填入
created_at: datetime, 建立時間
updated_at: datetime, 最後更新時間
created_user: int, 建立人員
updated_user: int, 修改人員
  • ssp 系統安全計劃: 每個專案會有一個主要的SSP, 這會是專案的本體, 他會被持續的維護內容, 直到PM決定目前的內容已經足以進行稽核了, 會做啟動稽核的動作 在還沒啟動稽核前, 都是對專案公版的SSP來做編輯, 啟動之後, 系統會將當前的SSP做定版的動作, 此時就不能夠再修改SSP的內容了, 也同樣會複製一份起來做定版, 填入該project_audit_rounds對應的SSP資料(例如ssp_id)

    • 原本UI上的一些資料, 請幫我依照OSCAL的規範, 寫入該對應的物件
      • 受評標的 → system-characteristics
      • 人員/單位 → parties + roles
      • 證據 → by-component.links → back-matter
      • 實施計劃 → props(planned 日期)
      • 實作狀態 → props(implementation-status)
      • 控制實作描述, SoA → implemented-requirement(一條控制一筆) ├─ props │ ├─ applicability ← SoA(適用性) │ ├─ inclusion-justification ← SoA(理由) │ └─ implementation-status ← 實作狀態 └─ statements[].by-components[] ├─ description ← 控制項實作描述 └─ links(evidence) ← 證據綁定
  • ap 稽核計畫: 由稽核人員制定, 會提出他這次來稽核會要看什麼內容, 通常會在實際稽核前先給受檢單位, 讓他們提前準備 例如:

    • 要驗證控制項
    • 有哪些人, 設備, 服務, 地點要被稽核,
    • 什麼時間點
    • 會怎麼檢驗
    • 會用什麼工具或方式 目前的沒有這項流程, 要另外新增整個UI以及後端邏輯設計, 這邊請你建議做法, 請幫我參考外面專業產品或是OSCAL官方建議做法來做設計
  • as 稽核結果:

    • 稽核人員會依照稽核計畫的內容, 填寫檢查結果, 判定每一條的檢查狀況
    • 依照判定結果, 填寫系統風險,並且由哪幾條組成風險
    • 目前沒有填寫判定系統風險的設計, 需要另外製作要討論
  • poam 改善計劃:

    • PM會依據 AS 的 risk 來建立改善計劃, 設定milestone以及指派人員, 做限期改善
    • 等到確定都改善完畢後, 可以在啟動一個新的 audit_round, 但是是改善計劃用, 只會針對這次有缺失的項目做稽核
    • 這時候要進行公用版本的SSP維護, 將改善後的新證據, 以及提出說明補上, 再做一次稽核(覆核)
    • 結案判斷請幫我餐靠下面業務邏輯html教材
§4

開發模式

我想要用多個Agent的模式平行開發, 麻煩你規劃任務的時候, 規劃成可以平行開發的模式, 要加快開發速度, 規劃完告訴我你會怎麼安排

§5

注意事項

  • 先幫我分析這份整分需求, 開新的, ap, as, poam可能需要討論

  • 後端: 不要被OSCAL舊的流程以及資料影響, 這次要整個大調整, 討論時可能要用新舊流程對照來做討論, 後端部分我自己初步分析基本上是要整個大改

  • 前端: 合規框架, 合規資源庫, 專案, 專案總覽, 專案規劃, 任務執行, 到這幾階段UI應該是不會大更動 會改的應該是 AP, AR, POA&M 這幾個,

    AP的概念目前是完全沒有, 這邊應該是要另外做新的畫面

    AR的話只有一半, 目前是逐項填寫判定結果 但是應該還會有一個總結的動作 稽核人員應該會做總結, 列出你系統的風險, 然後是哪些項目造成這些風險的, 風險等級為何

    POA&M 應該是依照這些系統風險, 去設定改善計劃, 指派人員執行, 可以再從這邊發起新的一次稽核, 是針對改善用的, 只會針對要改善的項目來做稽核 這邊應該是小改,

    再麻煩你幫我分析跟判斷