UStackUStack
crml icon

crml

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 агностичен к движкам, один и тот же документ CRML можно переиспользовать в разных совместимых движках.

Сценарии использования

  • Делайте модели рисков проверяемыми в Git: Преобразуйте предположения из таблиц или презентаций в версионируемые документы CRML, чтобы изменения были видны в diff’ах и поддавались аудиту.
  • Стандартизируйте обмен моделями между командами: Делитесь одной моделью рисков, определённой в CRML, между аналитиками и инструментами для единообразной интерпретации входных данных, предположений и выводов.
  • Сравнение квантифицированных рисков с явными предположениями: Запускайте сценарии вроде «с инвестицией vs без» или «по периодам времени», сохраняя предположения явными и привязанными к валидированным определениям моделей.
  • Интеграция киберрисков в корпоративные процессы: Используйте стандартизированное представление входов/выходов CRML для обеспечения прослеживаемости при передаче киберметрик в процессы корпоративных рисков и финансового планирования.
  • Эволюция сопоставлений при изменениях фреймворков: При обновлениях фреймворков контролей или угроз (например, ATT&CK, NIST, ISO или внутренних каталогов) обновляйте сопоставления в CRML вместо переписывания логики под конкретный движок.

FAQ

  • Готов ли crml к продакшену?
    Репозиторий указывает статус проекта как Draft, он активно развивается и может измениться без уведомления. Активная ветка разработки — crml-dev-1.3.

  • В каком формате crml определяет модели?
    CRML использует формат YAML/JSON для описания моделей рисков, сопоставлений телеметрии, пайплайнов симуляций, зависимостей и требований к выводам.

  • Навязывает ли crml конкретный метод квантификации рисков?
    Нет. Он предназначен быть агностичным к реализациям и агностичным к движкам, позволяя описывать модели без навязывания метода квантификации или движка симуляций.

  • Как crml снижает ошибки моделирования?
    Поддерживает строгую валидацию с помощью JSON Schema для выявления ошибок в документах моделей перед симуляцией.

  • Где распространяется проект?
    Метаданные репозитория указывают, что он доступен на PyPI.

Альтернативы

  • Кибер-рисковое моделирование на основе таблиц или слайдов: Распространено для качественной или полу-количественной работы, но эти форматы сложнее проверять и воспроизводить последовательно по сравнению с декларативным подходом с проверкой по схеме.
  • Реализации кибер-рискового моделирования, специфичные для движка: Инструменты, встраивающие предположения и логику симуляций прямо в проприетарные форматы моделей, могут быть более тесно интегрированы, но часто требуют переписывания при смене количественных движков или обновлении сопоставлений.
  • Универсальные декларативные форматы конфигурации (например, файлы конфигурации моделей): Можно использовать общие форматы для внешнего хранения параметров, но они обычно не предоставляют структуру CRML, специфичную для кибер-рисков, для сопоставления телеметрии, пайплайнов симуляций и стандартизированных выводов.
  • Другие подходы «Risk as Code» к моделированию: Подходы, версионирующие предположения и параметры, могут улучшить проверяемость, но могут не быть предназначены специально для кибер-рискового моделирования в контекстах контролей/атак и движков.
crml | UStack