실시간 탐지 시나리오 생성
새 실시간 탐지 시나리오를 생성합니다.
필요 권한
관리자 이상의 계정으로 이용할 수 있습니다.
HTTP 요청
POST /api/sonar/stream-rules
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
-d priority="HIGH" \
-d name="알려진 봇넷 대역 접속" \
-d msg="알려진 봇넷 대역 접속: $dst_ip" \
-d schema_code="session" \
-d commands="[{'template_id': 3, 'query': 'matchnet invert=t field=dst_ip guid=697393b6-aecf-4e9d-a32c-8724cd8f067e verify=f', 'field_name': 'dst_ip', 'args':{'subnet':'697393b6-aecf-4e9d-a32c-8724cd8f067e'}}]" \
-X POST \
https://HOSTNAME/api/sonar/stream-rules
요청 매개변수
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| priority | O | 문자열 | 중요도 | LOW, MEDIUM, HIGH 중 하나 |
| guid | X | 문자열 | 실시간 탐지 시나리오 GUID | 36자 |
| name | O | 문자열 | 실시간 탐지 시나리오 이름 | 최소 1자, 최대 255자 |
| description | X | 문자열 | 실시간 탐지 시나리오 설명 | 최대 2,000자 |
| msg | O | 문자열 | 메시지 템플릿 | 최소 1자, 최대 2,000자 |
| enabled | X | 불리언 | 활성화 여부 | true 혹은 false |
| category_guid | X | 문자열 | 시나리오 분류 GUID | 36자 |
| schema_code | O | 문자열 | 정규화 스키마 식별자 | 최소 1자, 최대 50자 |
| source_type | X | 문자열 | 탐지 대상 | LOGGER 또는 LOGGER_MODEL. 미지정 시 LOGGER |
| logger_guids | O | 배열 | 수집기 GUID 목록 | |
| logger_model_guids | X | 배열 | 수집기 모델 GUID 목록 | source_type이 LOGGER_MODEL인 경우 사용 |
| commands | O | 배열 | 실시간 탐지 명령어 목록 | 1개 이상의 명령어 필요. 하단 설명 참조 |
| address_group_guid | X | 문자열 | 주소 그룹 GUID | 36자 |
| address_field | X | 문자열 | 주소 필드 | 주소 그룹에 등록할 필드 이름. 최대 50자 |
| ticket_issue_cond | X | 문자열 | 티켓 발생 조건 | NEVER, ETIR_THRESHOLD, ALWAYS 중 하나 |
| ticket_repo_guid | X | 문자열 | 티켓 분류 GUID | ticket_issue_cond가 NEVER가 아닌 경우 필수. 36자 |
| ticket_assignee_guid | X | 문자열 | 티켓 할당자 GUID | 지정 시 담당자 자동 할당 |
| ticket_suppress_interval | X | 32비트 정수 | 중복 티켓 축약 기간 | 초 단위. 0 또는 미설정 시 동일 티켓을 병합하지 않음 |
| event_suppress_interval | X | 32비트 정수 | 중복 이벤트 제거 기간 | 초 단위. 0 또는 미설정 시 중복 이벤트를 제거하지 않음 |
| suppress_key | X | 문자열 | 중복 기준 필드 | $field 형식으로 매크로 사용 가능. 최대 2,000자 |
| keep_alive | X | 불리언 | 축약 타이머 유지 여부 | 축약 타이머 유지 시 true, 초기화 시 false |
| audit_category_guid | X | 문자열 | 소명 분류 GUID | 미설정 시 자동 소명 요청이 비활성화됨. 36자 |
| reviewer_guid | X | 문자열 | 1차 검토자 계정 GUID | 36자 |
| auditor_guid | X | 문자열 | 소명 확인 계정 GUID | 미설정 시 부서장 전결. 36자 |
| audit_days | X | 32비트 정수 | 소명 제출 마감 시한 | 최소 1일, 최대 365일 |
| employee_key_field | X | 문자열 | 사번 필드 이름 | 미설정 시 자동 소명 요청이 비활성화됨. 최대 50자 |
| alarm_group_guid | X | 문자열 | 알람 그룹 GUID | 36자 |
| field_order | X | 문자열 | 근거 자료 필드 출력 순서 | 최대 2,000자 |
| user_note | X | 문자열 | 소명 요청 메시지 | 최대 2,000자 |
| mitre_techniques | X | 문자열 목록 | MITRE ATT&CK 테크닉 ID | 쉼표로 구분된 테크닉 ID 목록. 설정 시 연관 택틱 자동 포함 |
| mitre_tactics | X | 문자열 목록 | MITRE ATT&CK 택틱 ID | 쉼표로 구분된 택틱 ID 목록. 택틱만 단독 지정 시 사용 |
| signature_app | X | 문자열 | 시그니처 앱 이름 |
commands의 각 배열 요소는 아래와 같이 정의합니다:
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| template_id | O | 32비트 정수 | 실시간 탐지 명령어 템플릿 ID | |
| query | O | 문자열 | 부분 쿼리 문자열 | |
| field_name | X | 문자열 | 대상 필드 이름 | |
| args | X | 맵 | 인자 키/값 | |
| invert | X | 불리언 | 반전 여부 |
정상 응답
{}
오류 응답
필수 매개변수가 누락된 경우
HTTP 상태 코드 400 응답
{
"error_code": "null-argument",
"error_msg": "schema_code should be not null"
}
매개변수 값의 길이가 잘못된 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "'schema_code' must be shorter than or equal to 50 characters."
}
잘못된 중요도 값을 사용한 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "priority should be one of 'LOW', 'MEDIUM', 'HIGH'."
}
식별자가 GUID 형식이 아닌 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-param-type",
"error_msg": "category_guid should be guid type."
}
실시간 탐지 명령어 목록이 유효한 JSON 형식이 아닌 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "'commands' parameter should follow valid JSON syntax"
}
정규화 스키마가 존재하지 않는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "schema not found: unknown"
}
시나리오 생성 권한이 없는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "no-permission"
}