스크립트 로그 파서

Starlark 구성 언어로 정의된 스크립트로 수신 로그를 파싱하기

개요

script 는 사용자 지정 로그 스키마에서 가능한 값 중 하나입니다 "format": "html", 사용자 지정 로그 스키마에서. 이 파서는 Panther가 각 수신 로그 이벤트에 대해 수행해야 하는 변환을 Starlark 구성 언어arrow-up-right를 사용하여 지정할 수 있게 해줍니다. Starlark는 Python과 많은 문법적 유사성을 공유합니다. Panther의 script 파서는 구조화된(JSON) 이벤트와 비구조화된 이벤트를 모두 처리할 수 있습니다.

다음과 같은 경우에 script 파서를 사용하는 것이 유용할 수 있습니다:

  • 비구조화된 로그를 파싱해야 하지만 다른 파서 옵션(csv, fastmatch, regex)으로는 충분하지 않은 경우

  • 데이터에 대해 변환을 수행해야 하지만 Panther에서 제공하는 스키마 변환 이 충분하지 않은 경우

이해하기 script "format": "html",

정의하기 function

DynamoDB의 원시 내용을 브라우징하는 것은 불가능합니다. script 파서를 구현하려면 Starlark function를 구현해야 합니다. 이 함수는 stringarrow-up-right 를 입력으로 받아야 하며 비어 있지 않은 사전arrow-up-right을 반환해야 합니다. 반환된 사전은 출력 이벤트의 형식을 정의합니다.

사용 가능한 함수

설정은 script 파서는 Starlark 명세arrow-up-right에 설명된 모든 원시 타입을 사용할 수 있습니다. 추가로 다음 함수를 사용할 수 있습니다:

함수 이름
설명

json.decode

JSON 문자열을 사전으로 디코딩합니다

json.encode

사전을 JSON 문자열로 인코딩합니다

base64.decode

base64로 인코딩된 문자열을 디코딩합니다

base64.encode

문자열에 대해 base64 인코딩을 수행합니다

제한사항

스크립트에 다음 제한사항이 적용됩니다:

  • 예외를 발생시키는 것은 허용되지 않습니다.

  • 임포트는 허용되지 않습니다.

JSON 처리

비록 script 가 주로 텍스트 로그에 사용되도록 설계되었지만, Panther에서 기본적으로 지원되는것들 외부에서 변환을 수행하려는 경우 JSON 로그에도 사용할 수 있습니다. script 이러한 이유로, json 파서는 문자열 타입의 JSON을 사전으로 변환할 수 있는

모듈이 사전 로드되어 있습니다. 예를 들어, 다음 구성은 라는 새 필드를 생성합니다 부울 값 배우자 이메일이 panther.com 도메인을 가지고 있으면 해당 필드는 true 그렇지 않으면

이해를 돕기 위해 위의 parse 함수는 Python 구문 강조와 함께 아래에 표시됩니다:

사용 예 script

다음 로그 라인이 Apache Common Log 형식을 사용하여 Panther로 전송된다고 가정해 보겠습니다:

이 로그 유형을 script로 파싱하려면 다음 함수를 정의하겠습니다:

다음 스키마 필드를 사용합니다:

위 로그가 이 파서로 정규화되면 다음과 같이 됩니다:

Last updated

Was this helpful?