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은 엔진 중립성을 목표로 하므로 동일한 CRML 문서를 서로 다른 호환 엔진에서 재사용할 수 있습니다.

사용 사례

  • Git에서 리스크 모델 검토 가능하게 하기: 스프레드시트나 데크 기반 모델 가정을 버전 관리된 CRML 문서로 변환하여 변경 사항이 diff에서 보이고 감사받을 수 있게 합니다.
  • 팀 간 모델 교환 표준화: 분석가와 도구 간에 단일 CRML 정의 리스크 모델을 공유하여 동일한 입력/가정/출력이 일관되게 해석되도록 합니다.
  • 명시적 가정으로 정량화된 리스크 비교: “투자 유무” 또는 “시간대별” 시나리오를 실행하면서 가정을 명시적이고 검증된 모델 정의에 연결합니다.
  • 사이버 리스크를 기업 리스크 워크플로에 매핑: 사이버 메트릭이 기업 리스크 및 재무 계획 프로세스에 입력될 때 CRML의 표준화된 입력/출력 표현으로 추적성을 지원합니다.
  • 프레임워크 변경에 따른 매핑 진화: 제어 또는 위협 프레임워크(예: ATT&CK, NIST, ISO 또는 내부 카탈로그)가 업데이트될 때 엔진별 모델링 로직을 다시 작성하는 대신 CRML 매핑을 업데이트합니다.

자주 묻는 질문

  • crml은 프로덕션 준비가 되었나요? 리포지토리에서 프로젝트 상태가 Draft이며, 적극적인 개발 중이고 통지 없이 변경될 수 있다고 명시되어 있습니다. 활성 개발 브랜치는 crml-dev-1.3입니다.

  • crml은 모델을 어떤 형식으로 정의하나요? CRML은 리스크 모델, 텔레메트리 매핑, 시뮬레이션 파이프라인, 의존성 및 출력 요구사항을 설명하기 위해 YAML/JSON 형식을 사용합니다.

  • crml은 특정 리스크 정량화 방법을 강제하나요? 아니요. 구현 중립엔진 중립을 목표로 하여 특정 정량화 방법이나 시뮬레이션 엔진을 강제하지 않고 모델을 설명할 수 있습니다.

  • crml은 모델링 오류를 어떻게 줄이나요? 시뮬레이션 전에 모델 문서의 오류를 잡아내기 위해 JSON Schema를 사용한 엄격한 검증을 지원합니다.

  • 프로젝트는 어디서 배포되나요? 리포지토리 메타데이터에 따라 PyPI에서 제공됩니다.

대안

  • 스프레드시트 또는 슬라이드 기반 사이버 리스크 모델링: 정성적 또는 반정량적 작업에 흔히 사용되지만, 선언형이고 스키마 검증된 문서 접근 방식에 비해 검증과 일관된 재현이 더 어렵습니다.
  • 엔진별 사이버 리스크 모델링 구현: 독점 모델 형식에 가정과 시뮬레이션 로직을 직접 내장한 도구는 더 긴밀하게 통합될 수 있지만, 정량 엔진을 변경하거나 매핑을 업데이트할 때 종종 재작성이 필요합니다.
  • 범용 선언형 구성 형식 (예: 모델 구성 파일): 일반 형식으로 매개변수를 외부화할 수 있지만, 일반적으로 텔레메트리 매핑, 시뮬레이션 파이프라인, 표준화된 출력에 대한 CRML의 사이버 리스크 전용 구조를 제공하지 않습니다.
  • 기타 “Risk as Code” 모델링 접근 방식: 가정과 매개변수를 버전 관리하는 접근 방식은 검토성을 향상시킬 수 있지만, 컨트롤/공격 및 엔진 컨텍스트 전반의 사이버 리스크 모델링을 위해 특별히 설계되지 않을 수 있습니다.
crml | UStack