2026년 1월 11일 일요일

Splunk의 xml 처리

xml 포맷을 갖는 sysmon 이벤트 로그. 가장 중요한 EventData 계층은 동일한 Data 자식 계층이 반복되는 중첩 구조를 가지고 있다. 
<Event>
	<System>
		<Provider Name="Linux-Sysmon" Guid="{ff032593-a8d3-4f13-b0d6-01fc615a0f97}"/>
		<EventID>5</EventID>
		<Version>3</Version>
		<Level>4</Level>
		<Task>5</Task>
		<Opcode>0</Opcode>
		<Keywords>0x8000000000000000</Keywords>
		<TimeCreated SystemTime="2026-01-04T18:12:34.451516000Z"/>
		<EventRecordID>8660</EventRecordID>
		<Correlation/>
		<Execution ProcessID="947" ThreadID="947"/>
		<Channel>Linux-Sysmon/Operational</Channel>
		<Computer>rocky</Computer>
		<Security UserId="0"/>
	</System>
	<EventData>
		<Data Name="RuleName">-</Data>
		<Data Name="UtcTime">2026-01-04 18:12:34.454</Data>
		<Data Name="ProcessGuid">{00000000-0000-0000-0000-000000000000}</Data>
		<Data Name="ProcessId">2481</Data>
		<Data Name="Image">&lt;unknown process&gt;</Data>
		<Data Name="User">root</Data>
	</EventData>
</Event>

다음은 xmlkv 명령어를 이용한 테이블 구조 변환 결과. 여러 개의 Data 계층이 하나의 필드로만 추출된다. 마지막 User 속성이 이전 속성을 덮어쓴 결과.


이때 xml 계층 경로를 지정할 수 있는 xpath를 사용하면 원하는 테이블 구조를 만들 수 있다.


json과 xml을 모두 지원하는 spath 명령어를 사용할 수도 있는데,


대신 데이터가 xml 태그로만 이루어져 있어야 함.


경로 지정 구문도 좀 더 단순한 편.


eval 명령어 함수로도 사용 가능.


댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스