쿼리 명령어
쿼리 명령어
그래프를 대량으로 적재·조회하는 쿼리 명령어입니다. 방화벽·NAC·스캐너 로그를 조회한 결과를 파이프라인으로 넘겨 그래프를 채우는 것이 기본 사용법입니다.
Note
모든 set/remove 배치 명령어는 기본적으로 dry-run으로 동작합니다. 각 행의 _status 필드에
수행 예정 작업이, 문제가 있으면 _error에 원인이 표시됩니다. 실제 반영하려면 run=t 옵션을
붙이세요.
수행 예정 작업이, 문제가 있으면 _error에 원인이 표시됩니다. 실제 반영하려면 run=t 옵션을
붙이세요.
범용 배치 명령어
등록된 모든 노드/엣지 타입에 사용합니다. 스키마에 정의된 속성과 같은 이름의 필드가 입력 행에 있으면 함께 저장됩니다.
| 명령어 | 입력 필드 | 용도 |
|---|---|---|
sonar-set-node-batch | type, value, display_name, source + 타입별 속성 | 노드 UPSERT |
sonar-set-edge-batch | src_type, src_value, dst_type, dst_value, rel_type, source + 엣지 속성 | 엣지 UPSERT (없는 노드는 함께 생성) |
sonar-set-graph-batch | sonar-set-edge-batch와 동일 | 동일 동작의 별칭 |
sonar-remove-node-batch | type, value | 노드 삭제 (속성·연결 엣지 함께 삭제) |
sonar-remove-edge-batch | src_type, src_value, dst_type, dst_value, rel_type | 엣지 삭제 |
json "[{\"type\":\"malware\", \"value\":\"Emotet\", \"malware_types\":[\"trojan\",\"bot\"], \"is_family\":\"true\"}]"
| sonar-set-node-batch run=t
json "[{\"src_type\":\"campaign\", \"src_value\":\"Op-X\", \"dst_type\":\"threat-actor\", \"dst_value\":\"APT99\", \"rel_type\":\"attributed-to\", \"confidence\":80}]"
| sonar-set-edge-batch run=t
검증 규칙
배치 명령어는 스키마 기준으로 입력을 검증하며, 위반 행은 오류로 처리됩니다
(dry-run에서는 _status=error와 _error로 표시).
- 미등록 타입 —
unknown node type,unknown src_type,unknown rel_type - 정의되지 않은 연결 조합 — 관계마다 허용되는 출발/도착 타입 조합이 정해져 있습니다.
예:
serves관계에user → cve를 넣으면unsupported combination오류. - 값 형식 불일치 — 형식이 정의된 타입은 값이 검증됩니다. 예:
network-service값이ip:port/tcp형식이 아니면invalid value format오류.
부분 업데이트
- 노드는
(type, value)기준으로 존재하면 갱신됩니다. 제공하지 않은 속성은 변경되지 않으므로, 바꿀 필드만 넣으면 됩니다. - 엣지는
(출발, 도착, 관계)기준으로 존재하면last_seen만 갱신됩니다.
자산 그래프 전용 명령어
자산 토폴로지 구축에 특화된 명령어로, 한 행으로 여러 노드·엣지를 한꺼번에 만듭니다.
| 명령어 | 필드 | 생성 결과 |
|---|---|---|
sonar-set-ipv4-node-batch | ip(필수), mac, hostname, user, zone | IP 노드 + MAC/호스트/사용자/네트워크 영역 노드와 관계 |
sonar-set-zone-node-batch | name(필수), display_name, cidr | 네트워크 영역 노드 |
sonar-set-domain-node-batch | domain(필수), ip | 도메인 노드 (+IP 연결) |
sonar-set-cve-node-batch | ip, cve_id(필수), cvss3_score, description, published, status | CVE 노드 + 취약점 보유 엣지 |
sonar-set-cpe-node-batch | cve_id, cpe(필수) | CPE 노드 + 영향 엣지 |
각 명령어에는 대응하는 sonar-remove-*-node-batch가 있습니다.
json "[{\"ip\":\"10.0.1.1\", \"mac\":\"AA:BB:CC:DD:EE:FF\", \"hostname\":\"web01\", \"zone\":\"dmz\"}]"
| sonar-set-ipv4-node-batch run=t
조회 명령어
| 명령어 | 용도 | 주요 옵션 |
|---|---|---|
sonar-graph-nodes | 노드 조회 | type, guid, value, min-risk, tag |
sonar-graph-edges | 엣지 조회 | guid, type, value, rel |
sonar-graph-attrs | 노드 속성 조회 | guid, type, value, attr |
sonar-graph-node-defs | 등록된 노드 타입 정의(이름·속성·값 형식) | locale |
sonar-graph-edge-defs | 등록된 관계 타입 정의(이름·속성·허용 조합) | locale |
sonar-graph-builders | 등록된 그래프 빌더 목록 | |
sonar-graph-running-builders | 실행 중인 빌더 |
빌더
앱은 30분 주기의 내장 빌더로 임직원·부서 명부를 그래프에 자동 동기화합니다
(임직원 노드, 부서 노드, 소속·부서장 엣지). 빌더 상태는 sonar-graph-builders로
확인합니다. 다른 앱도 자체 빌더를 등록할 수 있습니다 —
앱 확장 참고.