예외 규칙 생성

지정한 시나리오에 새 예외 규칙을 등록합니다. 조건 트리에 부합하는 이벤트는 시나리오 매칭에서 제외됩니다.

필요 권한

관리자 이상의 계정으로 이용할 수 있습니다. 조건 트리는 단말 조건 최대 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
요청 매개변수
필수타입설명비고
typeO문자열시나리오 유형stream, batch 중 하나
scenario_guidO문자열시나리오 식별자36자 GUID
descriptionX문자열메모최대 2000자
exprsO문자열 맵조건 트리단말 표현식 또는 노드 표현식 객체
valid_fromO날짜유효 시작 일자형식: yyyy-MM-dd HH:mm:ssZ
valid_untilO날짜유효 종료 일자형식: 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 (배열, 필수): 자식 표현식 목록. 각 항목은 노드 또는 단말 표현식
  • 단말 표현식
    • 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_NULL
      • NUMBER: EQ, NEQ, GT, GTE, LT, LTE, IS_NULL, IS_NOT_NULL
      • BOOLEAN: EQ, NEQ, IS_NULL, IS_NOT_NULL
      • IP: EQ, NEQ, IS_NULL, IS_NOT_NULL
    • value (문자열|숫자|불리언): 비교 값. IS_NULL, IS_NOT_NULL인 경우 생략. IP 타입은 IPv4/IPv6 문자열로 입력

정상 응답

{
  "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"
}