배치 탐지 시나리오 생성

새 배치 탐지 시나리오를 생성합니다. 기존 시나리오의 설정은 배치 탐지 시나리오 수정 API로 변경할 수 있습니다.

필요 권한

관리자 이상의 계정으로 이용할 수 있습니다.

HTTP 요청

POST /api/sonar/batch-rules
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
     -d priority="LOW" \
     -d name="웹 취약점 스캔" \
     -d schedule="*/30 * * * *" \
     -d msg="웹 취약점 스캔: $dst_ip" \
     -d query="table duration=30m weblog | search status >= 400 | stats count as error_count, dc(path) as page_count by src_ip | search error_count > 100" \
     -X POST \
     https://HOSTNAME/api/sonar/batch-rules
요청 매개변수
필수타입설명비고
priorityO문자열중요도LOW, MEDIUM, HIGH 중 하나
guidX문자열배치 탐지 시나리오 GUID미설정 시 무작위 생성. 36자
nameO문자열배치 탐지 시나리오 이름최소 1자, 최대 255자
descriptionX문자열설명최대 2,000자
msgO문자열메시지 템플릿최소 1자, 최대 2,000자. $field 형식의 매크로 사용 가능
enabledX불리언탐지 활성화 여부미설정 시 기본값 true
category_guidX문자열시나리오 분류 GUID36자
scheduleO문자열실행 주기CRON 일정 문법 사용. 최대 360자
durationX32비트 정수분석 대상 기간초 단위. 최소 1초, 최대 31536000초(365일)
datetruncX32비트 정수시간 절사1, 60, 3600, 86400 중 하나(초 단위)
dataset_guidX문자열데이터셋 GUIDdataset_guid와 query 중 하나는 필수 입력. 36자
queryX문자열쿼리 문자열dataset_guid와 query 중 하나는 필수 입력. from, to 쿼리 매개변수 사용 가능
address_group_guidX문자열주소 그룹 GUID36자
address_fieldX문자열주소 필드주소 그룹에 등록할 대상 필드. 최대 50자
ticket_repo_guidX문자열티켓 분류 GUID36자
ticket_assignee_guidX문자열티켓 담당자 GUID36자
ticket_suppress_intervalX32비트 정수중복 티켓 축약 기간초 단위. 0 지정 시 축약 비활성화
event_suppress_intervalX32비트 정수중복 이벤트 제거 기간초 단위. 0 지정 시 중복 제거 비활성화
suppress_keyX문자열중복 기준 필드$field 형식의 매크로 지원. 최대 2,000자
keep_aliveX불리언축약 타이머 유지 여부축약 타이머 유지 시 true, 초기화 시 false
audit_category_guidX문자열소명 분류 GUID36자
reviewer_guidX문자열소명 1차 검토자 계정 GUID36자
auditor_guidX문자열소명 2차 검토자 계정 GUID36자
audit_daysX32비트 정수소명 제출 마감 시한일 단위
employee_key_fieldX문자열사번 필드 이름최대 50자
alarm_group_guidX문자열알람 그룹 GUID36자
field_orderX문자열근거 자료 필드 출력 순서쉼표로 구분된 필드 이름 목록. 파이프 문자 사용 불가. 최대 2,000자
user_noteX문자열시나리오 요약 정보최대 2,000자

정상 응답

{
  "guid": "410fe6af-b2f8-4674-af70-8d5b12ddc3fe"
}
  • guid (문자열): 생성된 배치 탐지 시나리오 GUID

오류 응답

필수 매개변수가 누락된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "null-argument",
  "error_msg": "name should be not null"
}
매개변수 값의 길이가 잘못된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'address_field' 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."
}
일정 CRON 문법이 잘못된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "schedule has wrong cron expression format: * * * * * *"
}
데이터셋과 쿼리 모두 지정하지 않은 경우

HTTP 상태 코드 400 응답

{
  "error_code": "null-argument",
  "error_msg": "query should be not null"
}
시간 절사 값이 유효하지 않은 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "datetrunc should be one of 1 (1 second), 60 (1 minute), 3600 (1 hour), 86400 (1 day)."
}
field_order에 파이프 문자가 포함된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "field_order doesn't allow pipe characters."
}
이름이 중복된 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "duplicated batch rule name: 웹 취약점 스캔"
}
시나리오 생성 권한이 없는 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "no-permission"
}