# 콘텐츠 시그마 위협 룰 관리 기능 개발기

## 왜 이 기능이 필요할까?

최신 트렌드 위협 탐지룰인 Sigma 룰을 통해 위해 안랩도 위협 탐지 솔루션에 대한 트렌드에 발 맞추기 위함이며, 동시에 다른 자사 솔루션에서 자체 룰로 변환할 때 사용하고자 콘텐츠에서 위협 탐지룰 등을 추출해낸다.

> 시그마(Sigma) 룰이란?

다양한 보안 솔루션에서 사용할 수 있도록 위협 탐지 로직을 표준화한 오픈소스 포맷이다.

최근 아래와 같은 이유들로 인해 시그마 룰이 각광을 받기 시작하고 있다.

- 탐지 로직 표준화

SIEM(통합 보안 관제 시스템)마다 사용하는 쿼리 언어(Splunk, ELK, QRadar 등)가 모두 다릅니다. 시그마 룰은 YAML 형식의 공통 포맷을 사용하여 한 번만 작성하면 어떤 시스템에서든 변환해 활용할 수 있습니다.

- 대응 시간 단축

새로운 사이버 공격이나 랜섬웨어 유행 시, 위협 인텔리전스(IoC)를 빠르게 시그마 룰로 작성 및 배포하여 신속하게 공격을 차단할 수 있습니다.

- 규칙(Rule)의 공유 및 재사용

전 세계 보안 커뮤니티(SigmaHQ 등)에서 검증된 최신 위협 탐지 규칙을 쉽게 가져와 내 환경에 맞게 적용할 수 있습니다.

- 유연한 확장성

온프레미스(사내 구축형) 환경부터 Microsoft Sentinel, Google Chronicle 같은 클라우드 환경까지 파편화된 인프라 전체를 일관된 기준으로 모니터링할 수 있습니다.

## 기능에서 요구하는 필수 구현 사항

- AI 룰 생성 기능

    - 현재는 Sigma만 지원을 하며, 인프라 파트에서 Yara와 Snort 기능을 지원해주면 그때 추가 연동을 진행한다.

- 수동 룰 작성

    - 이때, 수동 룰 작성의 경우 Yara · Sigma · Snort 모두 작성 지원을 한다.

- 문법 검증

    - 룰의 로우 데이터와 타입을 서버에 넘겨주면, 서버에서는 룰 문법 검증 결과를 받아 검증 결과를 알려준다.

- 룰 CRUD

    - 룰 CRUD의 경우에는 VSCODE의 에디터 엔진인 모나코 에디터를 사용했는데, 모나코 에디터를 사용한 이유 중 하나는 코드 템플릿을 직접 만들면 코드 자동완성이나, 코드 강조 구문이 적용된다는 것이다. 그래서 코드 템플릿을 직접 만들어 (Sigma · Yara · Snort) 룰을 선택 및 조회했을 때 코드가 강조되도록 할 수 있었다.

## 도전적이었던 점

각 룰 별로 상태를 관리해야했는데, 한 콘텐츠에서 관리되는 룰의 개수는 무한정으로 한정짓지 않았다. 그러다보니 각각의 룰 별로 많은 상태를 관리하고 로직 처리를 해야하는 점이 생각보다 번거롭고 복잡했다. 또 위협 분석가분들이 이 기능을 어떻게 하면 쉽게 사용할 수 있을까 UX를 고민하며 설계를 했던 부분들이 무척이나 오래걸렸고, 상태가 복잡하다보니 추상화를 다양하게 하는 시도들을 했다. 시간이 조금 들긴했지만, 나름 상태 값이 담긴 비즈니스 로직들은 커스텀 훅(컴포저블)로 옮기고, 유틸과 같은 함수들은 헬퍼로, 그리고 컴포넌트는 SFC에서 별도의 컴포넌트로 만들어 임포트하는 방식으로 진행할 수 있었다.

## 어려웠던 점

기존 백오피스 코드가 한 템플릿 코드 안에서 컴포넌트들이 추상화되지 않은 채 반복되는 코드가 정말 많았는데, 이 코드들을 추상화하는 과정들이 조금 오래 걸렸다. 그 중에 다이얼로그 컴포넌트를 만들어놓았었는데, 개발을 하다보니 기본 확인 및 취소 컨펌에 대한 다이얼로그를 매 View 파일마다 매번 만들어 사용하는 불편함을 겪었다.

이 참에 기본 컨펌 다이얼로그 컴포넌트를 루트 레벨로 공통화시키고, 전역 상태를 통해 `onOk` , `onCancel` 콜백 함수 등을 통해 다이얼로그 관련 함수를 호출해 쉽게 접근할 수 있도록 변경할 수 있었다. 무척이나 DX 측면에서 발전할 수 있었으나, 기

아래 코드로 이제는 편하게 다이얼로그를 호출할 수 있게 되었다..

```javascript
const { dialog } = useDialog();

dialog.open({
  title: '위협 탐지룰 배포',
  content: '정말 배포하시겠어요?',
  onOk: () => {},
  onCancel: () => {},
  options: {
    autoClose: true,
  }
})
```

## 결과물

콘텐츠 상세 페이지 안에서 콘텐츠에 매핑되는 위협 탐지룰 관리 기능을 사용할 수 있다.

- 위협 탐지룰 조회

- 위협 탐지룰 AI 생성

- 위협 탐지룰 수동 추가 (모달 형태)

![Image](https://upload.cafenono.com/image/slashpagePost/20260515/005823_XgTMwELHrbvtepQO6J?q=80&s=1280x180&t=outside&f=webp)

- 위협 탐지룰 삭제

- 위협 탐지룰 배포

- 위협 탐지룰 문법 검증

![Image](https://upload.cafenono.com/image/slashpagePost/20260515/005814_ZzJ0uXrMRS6S1Fa3HH?q=80&s=1280x180&t=outside&f=webp)

For the site tree, see the [root Markdown](https://slashpage.com/timmy.md).
