
CRML
Zeron Research Labs / CyberSec Consulting LLC · 程式設計
CRML(Cyber Risk Modeling Language)是一種開放、宣告式的語言,可用 YAML 或 JSON 描述網路風險模型,由 Zeron Research Labs 與 CyberSec Consulting LLC 維護。它不把風險假設鎖在試算表或某一家廠商的工具裡,而是讓你以可審閱的檔案定義模型、遙測對應與輸出,再用你原本就在使用的網路風險量化引擎來執行。作為開源風險工具,它以 Python 風險函式庫的形式提供,因此把風險當程式碼處理的團隊,能像對待任何其他設定一樣驗證、版本化並重現他們的數字。

關於 CRML
什麼是 CRML
CRML 是一種用來寫下網路風險模型的語言,而不是用來計算它們的。這個區別很重要。此格式描述情境、輸入、控制假設與預期輸出,而真正的數學運算留在你選擇的引擎裡,不論是 FAIR 風格的蒙地卡羅架構、貝氏或 QBER 方法,還是內部平台。由於宣告式風險模型只是文字,它可以放在 Git 裡、經過審閱,並在幾個月後以相同結果重新執行。
這就是「風險即程式碼」的概念。當法遵與安全假設變成可版本化的產物時,稽核人員與分析師就能看見模型建了什麼、用了哪些參數、哪些資料餵進了結果。這和一份沒人能重現的簡報有天壤之別。
那麼,這是給誰用的?主要是已經把設定當程式碼處理的團隊。宣告式風險模型唯有在你願意把它放進版本控制時才划算。否則就別碰。
目前最大的限制是成熟度。該專案自稱是密集開發中的草稿,因此格式與工具在版本之間可能變動,任何在其上打造的人都該預期會有變化。這是實實在在的成本。儘管如此,範疇很窄,而核心概念站得住腳。
開始使用
- 安裝 Python 3,接著用
pip install crml-lang與pip install crml-engine從 PyPI 加入套件。 - 以 YAML 或 JSON 撰寫一份情境文件,描述你的風險模型、遙測對應與輸出需求。
- 對照內附的 JSON 結構描述進行驗證,例如透過
crml-lang裡的validate輔助函式載入檔案。 - 若多個情境共用參照的 pack,就打包成一個投資組合,產生一份自成一體的產物。
- 把計畫交給你的量化引擎,或使用
crml-engine的確定性管線步驟來執行。
產品資訊
快速了解 CRML 的定價、支援平台與效能。
適合對象
這項工具最適合的使用者、任務與情境。
使用者
- 需要模型能經得起審閱的網路風險與安全分析師:CRML 把假設保存在你能比對的文字裡,前提是你對 YAML 與終端機感到自在。
- 必須說明某個數字如何產生的法遵與稽核團隊:此格式把輸入、參數與輸出一起記錄下來,因此證據不會散落在各工具之間。
- 已經在用 Python、具工程思維的風險管理者:這些套件能直接放進既有管線,不必學一套新平台。
任務
- 記錄一個風險情境,讓兩位分析師得到相同結果:共用格式消除了手做試算表帶來的逐季漂移。
- 比較各事業單位或供應商之間的風險:同一套模型結構到處適用,讓並排比較變得有意義。
- 對應 ATT&CK、CIS 或 NIST 等威脅與控制框架:CRML 以機器可讀的方式描述對應關係,而非脆弱的筆記。
- 藉由在有無某項控制的情況下為風險建模,來正當化一筆安全支出:這種可量化的架構能支撐那類前後對比。
情境
- 把風險模型從試算表與簡報移進版本控制,讓變更像程式碼一樣被審閱。
- 讓同一個模型跑過不同的量化引擎,而不必每次重寫。
- 隨需產出可供稽核的證據,因為對所建模型的描述就與模型本身放在一起。
主要功能
與引擎無關的模型描述
CRML 不強迫你採用某種量化方法。你以 YAML 或 JSON 描述模型,而 FAIR 蒙地卡羅架構、貝氏或 QBER 引擎,或你自己的平台都讀同一個檔案。這表示換引擎不再是重寫專案。差別很大。這正是它被打造來消除的實務痛點。
風險即程式碼工作流程
重點全在於把風險假設變成可版本化、可審閱的產物。因為模型是純文字,它們能融入 Git、pull request 與 CI,分析師因此能確切看見改了什麼、為什麼改。對早已生活在程式碼審閱裡的團隊來說,這就是風險工作的自然歸屬。不再有神祕數字。
結構描述驗證與具型別的模型
crml-lang 套件內含 Pydantic 模型、內附的 JSON 結構描述與結構化驗證器。在任何東西執行之前,你就會得到明確的通過或失敗,這能及早抓到格式錯誤的參數,而不是在浪費一次模擬之後。驗證報告會告訴你哪裡壞了,而不只是壞了。
投資組合打包
當多個情境共用參照的 pack 時,bundle_portfolio 會把他們折疊成一份自成一體的產物。打包能從磁碟讀取,也能直接從記憶體中的模型讀取,因此在沒有檔案系統的管線裡也能運作。結果是單一物件,你可以封存或交給另一個團隊。
確定性引擎管線
配套的 crml-engine 套件包含一個規劃步驟,能把投資組合變成確定性的管線計畫。它把「要跑什麼」的階段與「跑吧」分開,讓輸出可重現,也讓數字看起來怪時更容易除錯。
框架與目錄的彈性
ATT&CK、CIS、NIST、ISO 與 SCF 等威脅與控制框架,加上內部目錄,都能被描述,而不會把你綁死在其中任何一個。由於這些框架會隨時間改變,把對應關係保存在可版本化的格式裡,意味著更新不會默默弄壞你的模型。
優缺點
優點
- 以 MIT 授權開源,因此沒有授權費用,結構描述也可檢視。
- 與引擎無關的設計,讓你的模型不會綁死在單一廠商的量化工具上。
- 以文字為基礎的 YAML 與 JSON 模型能乾淨地融入 Git、審閱與自動化。
- 內附的結構描述驗證與具型別的 Python 模型會在模擬執行前抓到錯誤。
- 目前版本可從 PyPI 以 `crml-lang` 與 `crml-engine` 安裝,供 Python 3 使用。
缺點
- 該專案自稱是密集開發中的草稿,因此格式與套件在版本之間可能改變。
- 它是規格與函式庫,不是完成品,所以你得寫程式碼與 YAML,而不是點按介面。
- 沒有獨立的雲端服務或圖形化儀表板,這讓想要現成應用程式的團隊無法採用。
常見問題
它給你一套標準方式,寫下網路風險模型、其輸入與預期輸出。語言負責描述與驗證,而另一套引擎負責真正的量化。
相關內容
探索與 CRML 相關的工具、技能與文章。
CRML 替代方案
Forefront
Forefront · 程式設計Forefront 是一個用來打造開源 AI 的網頁平台。你可以用自己的資料微調主流的開源語言模型、評估它們的表現,再透過 API 執行,或匯出後自行架設。想要封閉式平台的便利、卻堅持要自己擁有模型與資料的開發者,就是這裡的目標客群。
Startkit
StartKit.AI · 程式設計Startkit 是一套用來打造 AI SaaS 與 AI 包裝產品的樣板。可以把它想成一個 AI 新創樣板,把枯燥的部分都先接好了:驗證、Stripe 與 Lemon Squeezy 付款、用量限制、交易型電子郵件,以及一套能與 OpenAI、Anthropic、Groq 或 Llama 溝通的 AI API 啟動套件。你複製儲存庫、設定價格,然後專心在產品中使用者真正願意付費的部分。它建構於 React 與 Tailwind 之上的 Next.js,所以大部分的樣板程式碼對你來說並不陌生。
Testim
Tricentis · 程式設計Testim 是專為網頁、行動與 Salesforce 應用程式打造的 AI 測試自動化平台,用來建立並執行端到端測試。它靠機器學習在介面變動時維持測試穩定,團隊因此少花時間修補壞掉的定位器。對於一款今天就能開始使用的自動化測試工具來說,這表現不算差。你透過在瀏覽器錄製動作來建立測試,需要更多控制時再補上 JavaScript。對忙碌的 QA 團隊來說,這是個可靠的選擇。
