
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をインストールし、PyPIから
pip install crml-langとpip install crml-engineでパッケージを追加する。 - リスクモデル、テレメトリのマッピング、出力要件を記述したシナリオ文書をYAMLかJSONで書く。
- 同梱のJSONスキーマに対して検証する。たとえば
crml-langのvalidateヘルパーでファイルを読み込む。 - 複数のシナリオが共有パックを参照するならポートフォリオを束ね、自己完結した成果物を1つ生成する。
- 計画を定量化エンジンに渡すか、
crml-engineの決定論的パイプラインのステップで実行する。
AIツール情報
CRMLの料金、対応プラットフォーム、性能を簡単に確認できます。
こんな人におすすめ
このツールが最も力を発揮するユーザー、タスク、シーン。
ユーザー
- レビューに耐えるモデルを必要とするサイバーリスク・セキュリティのアナリスト:CRMLは前提を比較可能なテキストで保つ。YAMLとターミナルに抵抗がないことが条件だ。
- ある数値がどう生まれたかを示す必要があるコンプライアンス・監査チーム:このフォーマットは入力・パラメータ・出力をまとめて記録するので、証拠がツール間に散らばらない。
- すでにPythonを使う、エンジニア思考のリスク管理者:パッケージは新しいプラットフォームを覚えずに既存のパイプラインへ入る。
タスク
- 2人のアナリストが同じ結果を得られるようにリスクシナリオを記録する:共有フォーマットは、手作り表計算から生まれる四半期ごとのずれを取り除く。
- 事業部門やベンダー間でリスクを比較する:同じモデル構造がどこでも当てはまるので、並べての比較が意味を持つ。
- ATT&CK、CIS、NISTといった脅威・統制フレームワークを対応づける:CRMLはもろいメモではなく、機械可読な形で対応を記述する。
- 統制がある場合とない場合のリスクをモデル化してセキュリティ支出を正当化する:定量化可能な構成が、そうした前後比較を支える。
シーン
- リスクモデルを表計算やスライドからバージョン管理へ移し、変更をコードのようにレビューする。
- 同じモデルを、そのたびに書き直すことなく別々の定量化エンジンで実行する。
- 何をモデル化したかの記述がモデル自体の隣にあるので、監査対応の証拠をオンデマンドで生成する。
主な機能
エンジン非依存のモデル記述
CRMLは特定の定量化手法を押し付けない。モデルをYAMLかJSONで記述すれば、FAIR流のモンテカルロ構成、ベイズやQBERのエンジン、自社プラットフォームのいずれも同じファイルを読む。エンジンの乗り換えが書き直しプロジェクトでなくなる。大きな違いだ。まさにそれが取り除くために作られた実務上の苦痛である。
リスク・アズ・コードのワークフロー
狙いは全体として、リスクの前提をバージョン管理されたレビュー可能な成果物に変えることにある。モデルはプレーンテキストなので、Git、プルリクエスト、CIに収まる。アナリストは何がなぜ変わったかを正確に把握できる。コードレビューの中で生きているチームにとって、ここはリスク作業の自然な住処だ。謎の数字はもう要らない。
スキーマ検証と型付きモデル
crml-lang パッケージにはPydanticモデル、同梱のJSONスキーマ、構造化バリデータが入る。何かが動く前に明確な合否が得られるので、無駄なシミュレーションの後ではなく早い段階で不正なパラメータを捕まえられる。検証レポートは、何かが壊れたことだけでなく、どこが壊れたかを教える。
ポートフォリオの束ね
複数のシナリオが参照パックを共有すると、bundle_portfolio がそれらを1つの自己完結した成果物に畳み込む。束ねる処理はディスクからもメモリ上のモデルからも読めるので、ファイルシステムのないパイプラインでも動く。結果は、保管したり別のチームへ送ったりできる単一のオブジェクトだ。
決定論的エンジンパイプライン
姉妹パッケージ crml-engine には、ポートフォリオを決定論的パイプライン計画に変える計画ステップがある。「何を実行するか」の段階を「実行する」から分けておくので、出力が再現可能になり、数値がおかしいときのデバッグも楽になる。
フレームワークとカタログの柔軟性
ATT&CK、CIS、NIST、ISO、SCFといった脅威・統制フレームワークに加え、社内カタログも、そのどれにも縛られずに記述できる。こうしたフレームワークは時間とともに変わるため、対応をバージョン管理された形式で保てば、更新がモデルを黙って壊すことはない。
メリットとデメリット
メリット
- MITライセンスのオープンソースなので、ライセンス費用がかからず、スキーマを検査できる。
- エンジン非依存の設計により、モデルが単一ベンダーの定量化ツールに縛られない。
- テキストベースのYAMLとJSONモデルは、Git、レビュー、自動化にきれいに収まる。
- 同梱のスキーマ検証と型付きPythonモデルが、シミュレーション実行前にエラーを捕まえる。
- 現行版はPython 3向けに `crml-lang` と `crml-engine` としてPyPIからインストールできる。
デメリット
- プロジェクトは自らを開発中のドラフトと呼ぶので、フォーマットとパッケージがバージョン間で変わりうる。
- 仕様とライブラリであり完成品ではないので、UIをクリックするのではなくコードとYAMLを書くことになる。
- 独立したクラウドサービスやグラフィカルなダッシュボードがないため、既製のアプリを求めるチームには向かない。
よくある質問
サイバーリスクモデルとその入力、期待される出力を書くための標準的な手段を与える。記述と検証は言語が担い、実際の定量化は別のエンジンが行う。
関連コンテンツ
CRMLに関連するツール、スキル、記事を探す。
CRMLの代替ツール
Base Code
Base44 (Wix) · コーディング · 生産性向上Base CodeはBase44の共有クラウド開発環境だ。既存のGitHubリポジトリに対する変更をチャットで伝え、プレビューで確認し、プルリクエストとして返せる。
Google EmbeddingGemma 2
Google DeepMind · ライティング · 画像 · コーディングGoogle EmbeddingGemma 2 は 7 億 4000 万パラメータのオープンなモデルで、テキスト、コード、画像、音声、動画フレームを同じ 768 次元空間のベクトルに変え、スマートフォンやノート PC 上で動く。
GitGlow
GitGlow · コーディング · 生産性向上GitGlow は自分のコードと AI エージェントの変更を一つのレビューにまとめるデスクトップ Git クライアントだ。出荷前に、マシンから何が出ていくのかを確かめられる。
