UStackUStack
crml icon

crml

CRML (crml) ist eine Open-Source, deklarative Sprache für Cyber-Risk-Modelle mit YAML/JSON zur Definition von Modellen, Pipelines und Outputs.

crml

Was ist crml?

crml (CRML — Cyber Risk Modeling Language) ist eine Open-Source, deklarative Sprache für Cyber-Risk-Modeling. Sie ermöglicht die Beschreibung von Risikomodelen, Telemetrie-Mappings, Simulationspipelines, Abhängigkeiten und erforderlichen Outputs in einem YAML/JSON-Format – unabhängig von spezifischen Quantifizierungsmethoden, Simulations-Engines oder Control-/Threat-Frameworks.

Das Projekt unterstützt „Risk as Code“-Workflows, bei denen Annahmen und Modelldefinitionen in versionierten, überprüfbaren Artefakten (z. B. in Git) gespeichert werden. Ziel ist es, Cyber-Risikomodelle einfacher validierbar, reproduzierbar und austauschbar zwischen Teams und Tools zu machen, indem Inputs, Annahmen und Outputs standardisiert dargestellt werden.

Wichtige Features

  • Deklarative YAML/JSON-Modelbeschreibungen: Risikomodelle und Ausführungsanforderungen in einem portablen Format ausdrücken statt Logik in Tabellenkalkulationen oder einmaligen Tools zu vergraben.
  • Engine-agnostische Simulationsspezifikation: Simulationspipelines und Abhängigkeiten definieren, sodass verschiedene Simulations-Engines dieselbe Modelldefinition nutzen können (solange sie CRML-konform sind).
  • Control-/Attack-Framework-agnostische Mappings: Mappings zu Controls und Attacks darstellen, ohne das Modell an ein einziges Framework oder Katalog zu binden – hilfreich bei evolvierenden Frameworks.
  • Control-Effectiveness-Modeling: Modellierung, wie Controls Risiken reduzieren, inklusive „Defense in Depth“-Annahmen.
  • Median-basierte Parameterisierung für Lognormalverteilungen: Mediane direkt für Lognormalverteilungen angeben, passend zur CRML-Parameterisierung von Risikoverteilungen.
  • Strenge Validierung via JSON Schema: Modelldokumente vor der Simulation validieren, um strukturelle Fehler früh zu erkennen.

So nutzt du crml

  1. Projekt und Dokumentation holen: Starte im Repository (README und Docs sind im Repo enthalten) und installiere das Paket von PyPI.
  2. CRML-Dokument schreiben: Erstelle ein YAML/JSON-Dokument mit den zu laufenden Modelelementen – wie Telemetrie-Mappings, Abhängigkeiten, Simulationspipeline-Struktur und Output-Anforderungen.
  3. Dokument validieren: Nutze die schema-basierte Validierung des Projekts, um Fehler vor Simulationsläufen zu prüfen.
  4. Mit kompatibler Engine ausführen: Führe das Modell mit einer CRML-kompatiblen Simulationspipeline aus. Da CRML engine-agnostisch ist, kann dasselbe CRML-Dokument bei verschiedenen konformen Engines wiederverwendet werden.

Anwendungsfälle

  • Risikomodelle in Git überprüfbar machen: Spreadsheet- oder Präsentations-basierte Modelle in versionierte CRML-Dokumente umwandeln, damit Änderungen in Diffs sichtbar und auditiert werden können.
  • Modelle standardisiert austauschen: Ein einziges CRML-definiertes Risikomodell zwischen Analysten und Tools teilen, für konsistente Interpretation von Inputs/Annahmen/Outputs.
  • Quantifizierte Risikovergleiche mit expliziten Annahmen: Szenarien wie „mit vs. ohne Investition“ oder „über Zeiträume“ laufen, mit expliziten, validierten Modelldefinitionen verknüpften Annahmen.
  • Cyber-Risiken in Enterprise-Risk-Workflows einbinden: CRMLs standardisierte Input/Output-Darstellung für Nachverfolgbarkeit nutzen, wenn Cyber-Metriken in Enterprise-Risk- und Finanzplanungsprozesse fließen.
  • Mappings bei Framework-Änderungen anpassen: Bei Updates von Control- oder Threat-Frameworks (z. B. ATT&CK, NIST, ISO oder internen Katalogen) nur CRML-Mappings aktualisieren statt engine-spezifische Logik umzuschreiben.

FAQ

  • Ist crml produktionsreif? Das Repository gibt den Projektstatus als Draft an; es befindet sich in intensiver Entwicklung und kann sich jederzeit ändern. Die aktive Entwicklungsbranch ist crml-dev-1.3.

  • Welches Format verwendet crml für Modelldefinitionen? CRML nutzt ein YAML/JSON-Format, um Risikomodelle, Telemetrie-Mappings, Simulationspipelines, Abhängigkeiten und Output-Anforderungen zu beschreiben.

  • Zwingt crml zu einer spezifischen Risikiquantifizierungsmethode? Nein. Es ist implementierungs-agnostisch und engine-agnostisch, sodass Modelle ohne festgelegte Quantifizierungsmethode oder Simulations-Engine beschrieben werden können.

  • Wie reduziert crml Modellierungsfehler? Es unterstützt strenge Validierung mit JSON Schema, um Fehler in Modelldokumenten vor der Simulation zu erkennen.

  • Wo wird das Projekt verteilt? Die Repository-Metadaten geben an, es ist auf PyPI verfügbar.

Alternativen

  • Tabellenkalkulations- oder Folienbasierte Cyber-Risk-Modellierung: Häufig für qualitative oder semi-quantitative Arbeiten, aber diese Formate sind schwieriger zu validieren und konsistent reproduzierbar im Vergleich zu einem deklarativen, schema-validierten Dokumentansatz.
  • Enginespezifische Cyber-Risk-Modellierungs-Implementierungen: Tools, die Annahmen und Simulationslogik direkt in proprietäre Modellformate einbetten, können enger integriert sein, erfordern aber oft Umschreibungen beim Wechsel von Quant-Engines oder der Aktualisierung von Mappings.
  • Allgemeine deklarative Konfigurationsformate (z. B. Modellkonfigurationsdateien): Generische Formate eignen sich, um Parameter zu externalisieren, bieten aber typischerweise nicht CRMLs cyber-risk-spezifische Struktur für Telemetrie-Mappings, Simulationspipelines und standardisierte Outputs.
  • Andere „Risk as Code“-Modellierungsansätze: Ansätze, die Annahmen und Parameter versionieren, verbessern die Überprüfbarkeit, sind aber möglicherweise nicht speziell für Cyber-Risk-Modellierung über Control/Attack- und Engine-Kontexte hinweg konzipiert.
crml | UStack