UStackUStack
crml icon

crml

crml はYAML/JSONでサイバーリスクモデルを宣言的に記述。テレメトリ対応やシミュレーション連携、出力までエンジン非依存で定義できます。

crml

crml とは?

crml (CRML — Cyber Risk Modeling Language) は、オープンソースの宣言型言語で、サイバーリスクモデリング用です。YAML/JSON形式で、リスクモデル、テレメトリマッピング、シミュレーションパイプライン、依存関係、必要な出力を記述できます。特定の定量化手法、シミュレーションエンジン、制御/脅威フレームワークを要求しません。

このプロジェクトは、「Risk as Code」ワークフローをサポートするよう設計されています。前提条件とモデル定義をバージョン管理・レビュー可能なアーティファクト(例: Git内)に格納できます。これにより、入力、前提条件、出力を標準化し、サイバーリスクモデルをチームやツール間で検証・再現・交換しやすくします。

主な機能

  • 宣言型 YAML/JSON モデル記述: リスクモデルと実行要件をポータブル形式で表現。スプレッドシートやワンオフツールにロジックを埋め込むのではなく。
  • エンジン非依存のシミュレーション仕様: シミュレーションパイプラインと依存関係を定義。CRML準拠の異なるシミュレーションエンジンが同一モデル定義を利用可能。
  • 制御/攻撃フレームワーク非依存のマッピング: 単一フレームワークやカタログに縛られず制御・攻撃へのマッピングを表現。フレームワーク進化時にも対応。
  • 制御有効性モデリング: 制御がリスクを低減する方法をモデル化。「defense in depth」前提を含む。
  • 対数正規分布の中央値ベースパラメータ化: CRMLアプローチに沿ったリスク分布のパラメータ化で、対数正規分布の中央値を直接指定。
  • JSON Schema による厳密な検証: シミュレーション前にモデル文書を検証し、構造エラーを早期発見。

crml の使い方

  1. プロジェクトとドキュメントを取得: リポジトリ(READMEとdocsが含まれる)から開始し、PyPIで利用可能なパッケージをインストール。
  2. CRML文書を作成: 実行したいモデル要素(テレメトリマッピング、依存関係、シミュレーションパイプライン構造、出力要件など)を記述したYAML/JSON文書を作成。
  3. 文書を検証: プロジェクトのスキーマベース検証でシミュレーション前にエラーをチェック。
  4. 互換エンジンで実行: CRML互換のシミュレーションパイプラインでモデルを実行。エンジン非依存のため、同一CRML文書を異なる準拠エンジンで再利用可能。

ユースケース

  • Git でリスクモデルをレビュー可能に: スプレッドシートやデッキベースのモデル前提をバージョン管理されたCRML文書に変換。変更がdiffで可視化され監査可能。
  • チーム間でのモデル交換標準化: アナリストとツール間で単一のCRML定義リスクモデルを共有。入力/前提/出力が一貫して解釈。
  • 明示的前提での定量リスク比較: 「投資有無」や「期間横断」などのシナリオを実行し、前提を明示・検証済みモデル定義に紐付け。
  • サイバーリスクを企業リスクワークフローにマッピング: CRMLの標準入力/出力表現で、サイバーメトリクスが企業リスク・財務計画プロセスにフィード時のトレーサビリティを支援。
  • フレームワーク変更時のマッピング進化: 制御/脅威フレームワーク(例: ATT&CK、NIST、ISO、社内カタログ)更新時、エンジン固有ロジックを書き直さずCRMLマッピングを更新。

FAQ

  • crml は本番運用可能ですか? リポジトリではプロジェクトステータスを Draft と記載。激しい開発中で予告なく変更される可能性あり。アクティブ開発ブランチは crml-dev-1.3

  • crml はモデルをどのような形式で定義しますか? CRML は YAML/JSON 形式で、リスクモデル、テレメトリマッピング、シミュレーションパイプライン、依存関係、出力要件を記述。

  • crml は特定のリスク定量化手法を強制しますか? いいえ。implementation-agnostic および engine-agnostic を意図しており、特定定量化手法やシミュレーションエンジンを強制せずモデル記述可能。

  • crml はモデリングエラーをどのように低減しますか? JSON Schema を用いた 厳密な検証 をサポートし、シミュレーション前にモデル文書のエラーを検知。

  • プロジェクトはどこで配布されていますか? リポジトリメタデータで PyPI で利用可能と記載。

代替案

  • スプレッドシートやスライドベースのサイバーリスクモデル化: 定性的または半定量的作業で一般的ですが、これらの形式は宣言的でスキーマ検証されたドキュメントアプローチに比べて検証と再現が難しく、一貫性が保てません。
  • エンジン固有のサイバーリスクモデル化実装: 独自モデル形式に前提条件とシミュレーション論理を直接埋め込んだツールはより緊密に統合されますが、定量エンジンを切り替えたりマッピングを更新したりする際に書き直しが必要になることが多いです。
  • 汎用宣言的設定形式(例: モデル設定ファイル): 汎用形式でパラメータを外部化できますが、テレメトリマッピング、シミュレーションパイプライン、標準化出力のための CRML のサイバーリスク特化構造は通常提供されません。
  • その他の「Risk as Code」モデル化アプローチ: 前提条件とパラメータをバージョン管理するアプローチはレビュー性を向上させますが、コントロール/攻撃とエンジン環境にわたるサイバーリスクモデル化に特化して設計されていない場合があります。
crml | UStack