UStackUStack
crml icon

crml

crml è un linguaggio open source dichiarativo per cyber risk modeling: modelli e pipeline in YAML/JSON, engine- e framework-agnostic.

crml

Cos'è crml?

crml (CRML — Cyber Risk Modeling Language) è un linguaggio open source dichiarativo per il cyber risk modeling. Ti permette di descrivere modelli di rischio, mapping della telemetria, pipeline di simulazione, dipendenze e output richiesti usando un formato YAML/JSON, senza richiedere un metodo di quantificazione specifico, un motore di simulazione o un framework di controlli/minacce.

Il progetto è progettato per supportare workflow “Risk as Code”, in cui assunzioni e definizioni di modello possono risiedere in artefatti versionati e revisionabili (es. in Git). L'obiettivo è rendere i modelli di cyber risk più facili da validare, riprodurre e scambiare tra team e tool, standardizzando la rappresentazione di input, assunzioni e output.

Caratteristiche Principali

  • Descrizioni di modelli dichiarative in YAML/JSON: Esprimi modelli di rischio e i loro requisiti di esecuzione in un formato portatile, invece di incorporare logica in fogli di calcolo o tool usa-e-getta.
  • Specifica di simulazione engine-agnostic: Definisci pipeline di simulazione e dipendenze in modo che diversi motori di simulazione possano consumare la stessa definizione di modello (purché conformi a CRML).
  • Mapping agnostic per framework di controlli/attacchi: Rappresenta i mapping a controlli e attacchi senza vincolare il modello a un singolo framework o catalogo, utile quando i framework evolvono.
  • Modeling dell'efficacia dei controlli: Modella come i controlli riducono il rischio, incluse assunzioni di “defense in depth”.
  • Parametrizzazione basata su mediana per distribuzioni lognormali: Specifica direttamente le mediane per distribuzioni lognormali, in linea con il modo in cui le distribuzioni di rischio sono parametrizzate nell'approccio CRML.
  • Validazione rigorosa via JSON Schema: Valida i documenti di modello prima della simulazione per intercettare errori strutturali precocemente.

Come Usare crml

  1. Ottieni il progetto e la documentazione: Parti dal repository (README e docs inclusi nei contenuti del repo) e installa il pacchetto disponibile su PyPI.
  2. Scrivi un documento CRML: Crea un documento YAML/JSON che descrive gli elementi del modello da eseguire, come mapping della telemetria, dipendenze, struttura della pipeline di simulazione e requisiti di output.
  3. Valida il documento: Usa la validazione basata su schema del progetto per controllare errori prima di eseguire simulazioni.
  4. Esegui con un motore compatibile: Esegui il modello usando una pipeline di simulazione compatibile con CRML. Poiché CRML è engine-agnostic, lo stesso documento CRML può essere riutilizzato su diversi motori conformi.

Casi d'Uso

  • Rendere i modelli di rischio revisionabili in Git: Converti assunzioni di modelli basati su fogli di calcolo o presentazioni in documenti CRML versionati, così i cambiamenti sono visibili nelle diff e possono essere auditati.
  • Standardizzare lo scambio di modelli tra team: Condividi un unico modello di rischio definito in CRML tra analisti e tool, per interpretare consistentemente gli stessi input/assunzioni/output.
  • Confronto di rischio quantificato con assunzioni esplicite: Esegui scenari come “con vs. senza investimento” o “tra periodi temporali” mantenendo assunzioni esplicite e legate a definizioni di modello validate.
  • Mappare cyber risk a workflow di rischio enterprise più ampi: Usa la rappresentazione standardizzata di input/output di CRML per supportare tracciabilità quando metriche cyber alimentano processi di rischio enterprise e pianificazione finanziaria.
  • Evolvere i mapping con i cambiamenti dei framework: Quando framework di controlli o minacce (es. ATT&CK, NIST, ISO o cataloghi interni) si aggiornano, aggiorna i mapping CRML invece di riscrivere logica di modeling specifica del motore.

FAQ

  • crml è pronto per la produzione? Il repository indica che lo stato del progetto è Draft e che è in pesante sviluppo e può cambiare senza preavviso. Nota anche che il branch di sviluppo attivo è crml-dev-1.3.

  • Che formato usa crml per definire i modelli? CRML usa un formato YAML/JSON per descrivere modelli di rischio, mapping della telemetria, pipeline di simulazione, dipendenze e requisiti di output.

  • crml impone un metodo specifico di quantificazione del rischio? No. È progettato per essere implementation-agnostic e engine-agnostic, così puoi descrivere modelli senza imporre un metodo di quantificazione o motore di simulazione specifico.

  • Come crml riduce gli errori di modeling? Supporta validazione rigorosa usando JSON Schema per intercettare errori nei documenti di modello prima della simulazione.

  • Dove è distribuito il progetto? I metadati del repository indicano che è disponibile su PyPI.

Alternative

  • Cyber risk modeling basato su fogli di calcolo o slide: Comune per lavori qualitativi o semi-quantitativi, ma questi formati sono più difficili da validare e riprodurre in modo consistente rispetto a un approccio dichiarativo con documenti validati tramite schema.
  • Implementazioni di cyber risk modeling specifiche per l’engine: Strumenti che incorporano assunzioni e logica di simulazione direttamente in formati di modello proprietari possono essere più integrati, ma spesso richiedono riscritture quando si cambia engine quantitativo o si aggiornano i mapping.
  • Formati di configurazione dichiarativi generici (ad esempio, file di configurazione di modelli): È possibile usare formati generici per esternalizzare i parametri, ma tipicamente non forniscono la struttura specifica per cyber risk di CRML per il mapping della telemetria, le pipeline di simulazione e gli output standardizzati.
  • Altri approcci di modeling “Risk as Code”: Approcci che versionano assunzioni e parametri possono migliorare la recensibilità, ma potrebbero non essere progettati specificamente per il cyber risk modeling tra contesti control/attack ed engine.
crml | UStack