예외 규칙 생성
지정한 시나리오에 새 예외 규칙을 등록합니다. 조건 트리에 부합하는 이벤트는 시나리오 매칭에서 제외됩니다.
필요 권한
관리자 이상의 계정으로 이용할 수 있습니다. 조건 트리는 단말 조건 최대 50개, 그룹 노드 최대 10개, 트리 깊이 최대 3 단계까지만 허용됩니다. 메모는 2000자, 필드명은 1~128자(A-Z, a-z, 0-9, _, ., -)까지 허용됩니다.
HTTP 요청
POST /api/sonar/exception-rules
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"type": "stream",
"scenario_guid": "4d2f8a31-9b21-4d12-8a90-7f1c1a2b3c4d",
"description": "사내 정기 점검 IP 예외",
"exprs": {
"operator": "AND",
"operands": [
{
"field": "src_ip",
"type": "IP",
"operator": "EQ",
"value": "192.0.2.10"
}
]
},
"valid_from": "2026-04-01 00:00:00+0900",
"valid_until": "2026-05-01 00:00:00+0900"
}' \
https://HOSTNAME/api/sonar/exception-rules
요청 매개변수
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| type | O | 문자열 | 시나리오 유형 | stream, batch 중 하나 |
| scenario_guid | O | 문자열 | 시나리오 식별자 | 36자 GUID |
| description | X | 문자열 | 메모 | 최대 2000자 |
| exprs | O | 문자열 맵 | 조건 트리 | 단말 표현식 또는 노드 표현식 객체 |
| valid_from | O | 날짜 | 유효 시작 일자 | 형식: yyyy-MM-dd HH:mm:ssZ |
| valid_until | O | 날짜 | 유효 종료 일자 | 형식: yyyy-MM-dd HH:mm:ssZ. valid_from 보다 이후 시각이어야 함 |
exprs 객체 속성
조건 트리는 노드 표현식과 단말 표현식의 조합으로 구성됩니다.
- 노드 표현식
- operator (문자열, 필수): 노드 연산자.
AND,OR,NOT,SRC_IP,DST_IP,SRC_IP_DST_IP중 하나.NOT은 1개 자식,SRC_IP/DST_IP는 1개 자식,SRC_IP_DST_IP는 2개 자식만 허용 - operands (배열, 필수): 자식 표현식 목록. 각 항목은 노드 또는 단말 표현식
- operator (문자열, 필수): 노드 연산자.
- 단말 표현식
- field (문자열, 필수): 필드명.
^[a-zA-Z0-9_.-]{1,128}$형식 - type (문자열, 필수): 필드 타입.
STRING,NUMBER,BOOLEAN,IP중 하나 - operator (문자열, 필수): 비교 연산자. 타입별 허용 연산자가 다름
STRING:EQ,NEQ,STARTS_WITH,ENDS_WITH,CONTAINS,IS_NULL,IS_NOT_NULLNUMBER:EQ,NEQ,GT,GTE,LT,LTE,IS_NULL,IS_NOT_NULLBOOLEAN:EQ,NEQ,IS_NULL,IS_NOT_NULLIP:EQ,NEQ,IS_NULL,IS_NOT_NULL
- value (문자열|숫자|불리언): 비교 값.
IS_NULL,IS_NOT_NULL인 경우 생략.IP타입은 IPv4/IPv6 문자열로 입력
- field (문자열, 필수): 필드명.
정상 응답
{
"guid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
- guid (문자열): 새로 생성된 예외 규칙의 식별자
오류 응답
필수 매개변수가 누락된 경우
HTTP 상태 코드 400 응답
{
"error_code": "null-argument",
"error_msg": "type should be not null"
}
시나리오를 찾을 수 없는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "scenario not found: 4d2f8a31-9b21-4d12-8a90-7f1c1a2b3c4d"
}
메모가 2000자를 초과한 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "description is too long"
}
유효 기간이 잘못된 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-argument",
"error_msg": "valid_from should be earlier than valid_until"
}
조건 트리 제한을 초과한 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-argument",
"error_msg": "too many conditions: 51"
}
조건 트리 형식이 잘못된 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-argument",
"error_msg": "unsupported operator for type [STRING]: GT"
}
권한이 없는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "no-permission"
}