변환
수집 시 데이터 구조 변형
개요
변환(Transformations)은 Panther로 수집될 때 데이터의 형태를 수정하기 위해 맞춤 로그 소스 스키마에서 사용할 수 있는 함수입니다. 그런 다음 데이터는 새 형식으로 저장됩니다.
변환은 저장된 데이터를 탐지 및 쿼리 로직의 요구에 맞추도록 도와주며, 임시 데이터 조작의 필요성을 제거하고 탐지 작성 및 검색을 가속화합니다.
다음 변환들이 제공됩니다:
변환 실행 순서
변환이 수행되는 특정한 순서가 있어 변환들이 예측 가능한 방식으로 순차적으로 적용되도록 합니다. 실행 순서는 위의 개요에 있는 변환 목록에 제공된 순서.
정의된 순서를 따라 데이터를 정확하게 변환하세요. 순서상의 각 변환은 이전 변환이 남긴 상태의 데이터를 기반으로 작동합니다. 이 순서를 알면 일관성을 유지하고 예기치 않은 결과를 피할 수 있습니다.
변환 결합
개별 변환은 더 복잡한 데이터 변환을 달성하기 위해 쌍이나 연속으로 결합할 수 있습니다. 이를 통해 특정 데이터 요구사항을 충족하고 효율적인 탐지 생성 및 검색 작업을 촉진하기 위한 더 큰 유연성과 사용자 정의가 가능합니다.
예를 들어 개인 식별 번호(PIN)를 포함하는 필드가 있다고 가정해보겠습니다. 보안상 해당 필드 이름을 덜 노출되는 것으로 변경하면서 동시에 PIN을 가려 마스킹하려고 합니다.
이를 달성하려면 이름 변경 변환을 사용하여 필드 이름을 추상적인 것으로 변경할 수 있습니다. 예를 들어 필드 이름을 userId.
다음으로, mask 변환을 userId 필드에 적용하여 PIN의 숫자를 미리 정의된 개수의 별표로 대체하세요. 이렇게 하면 PIN이 숨겨져 데이터 프라이버시가 보장됩니다.
다음과 같이 이름 변경 및 mask 지시문을 함께 포함하는 필드 스키마를 정의할 수 있습니다:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
이름 변경
이름 변경설정은 이름 변경 transformation은 필드의 이름을 변경합니다. 이는 데이터 소스 전반에 걸쳐 필드 이름을 표준화하거나, 데이터 구조의 명확성을 높이거나, 잘못된 문자나 예약어가 포함된 필드 이름을 조정할 때 유용할 수 있습니다.
다음과 같은 이름 변경 지시문으로 필드 스키마를 정의하면:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
copy
copy설정은 copy transformation은 중첩된 필드의 값을 다른 최상위 필드로 복사합니다. 이는 JSON 구조를 평탄화(flatten)하려는 경우에 유용할 수 있습니다. 원한다면 새로 정의한 필드를 지표별로 보여줍니다.
다음과 같은 copy 지시문으로 필드 스키마를 정의하면:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
concat
concat설정은 concat transformation을 사용하면 여러 필드의 값을 새로운 필드의 값으로 연결(concatenate)할 수 있습니다. 생성된 결합 필드는 예를 들어 보강(enrichment)을 위한 키로 사용할 수 있습니다.
값의 유형 정의되어 있더라도 타임스탬프 을(를) 가진 필드는 연결 연산에 사용할 수 없습니다.
을(를) 사용하려면 concat결과를 저장할 string 필드를 선언하세요. 내부의 concat내에서 경로(paths), 선택적으로 구분자(separator). 내부의 경로(paths)내에서는 결합하려는 기존 스키마 필드를 지정하기 위해 절대 경로를 사용해야 합니다. 이러한 필드의 순서는 연결 순서를 결정합니다. 만약 구분자(separator) 가 정의되지 않으면 기본 구분자는 빈 문자열("")입니다."").
다음과 같은 concat 지시문으로 필드 스키마를 정의하면:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
split
split설정은 split transformation을 사용하면 구분자를 기준으로 문자열 필드를 분할하여 특정 값을 추출할 수 있습니다. 분할된 결과 필드는 개별 스키마 필드로 취급할 수 있으므로 이를 로 사용하도록 지시하는 플래그로 지정할 수 있습니다. Split 변환은 비정형 데이터 형식을 표준화된 필드로 정규화(normalize)하는 데에도 도움이 됩니다.
타입이 string 인 필드만 다른 필드로 분할될 수 있습니다(즉, split:from: 값은 type: string).
을(를) 사용하려면 split을(를) 포함하는 필드여야 합니다). 결과를 저장하려면 객체(object), 배열(array), JSON을 제외한 임의의 원시(primitive) 타입 필드를 선언하세요. 내부의 split 지시문에는 다음 필수 필드를 포함하세요:
from: 분할할 필드의 절대 경로를 제공하세요.구분자(separator): 분할할 문자를 제공하세요.index: 분할로 생성된 배열에서 값을 가져올 위치를 제공하세요.
다음과 같은 split 지시문으로 필드 스키마를 정의하면:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
또한 배열 요소를 분할하기 위해 split 을(를) 사용할 수 있습니다. 예를 들어 다음 스키마를 사용하면:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
mask
mask설정은 mask transformation을 사용하면 로그에서 민감한 정보를 숨길 수 있습니다. 마스킹(masking)은 특정 데이터의 기밀성을 보호해야 할 때 유용합니다.
마스킹 기법은 두 가지가 있습니다:
난독화(Obfuscation) (해시라고도 함): 이 기법은 선택적 솔트(salt) 값을 사용하여 데이터를 해시합니다. 이 기법을 사용하면 값의 참조 무결성(referential integrity)이 유지됩니다.
가림(Redaction): 이 기법은 민감한 값을
REDACTED또는 사용자가 제공한 다른 문자열로 대체합니다. 이 기법을 사용하면 값의 참조 무결성이 손실됩니다.
특정 필드를 마스킹하면 나중에 Panther의 검색 도구 를 사용해 원래 값을 쿼리할 수 없지만, 해시된 값으로는 검색할 수 있다는 점을 유의하세요.
난독화(해싱)
수신 데이터를 해싱하면 향상된 보안을 제공하면서도 향후 사용성을 유지할 수 있습니다. 해싱의 보호를 강화하려면 솔트를 포함할 수 있습니다.
난독화를 사용하려면 스키마의 대상 필드에 mask를 포함하세요. 아래의 mask에 유형, 그리고 선택적으로 salt.
를 포함하세요 유형 의 값은 사용하려는 해싱 알고리즘입니다. 지원되는 값에는 다음이 포함됩니다:
sha256md5sha1sha512
옵션인 salt key의 값은 사용자가 선택한 문자열입니다. 이 값은 해싱되기 전에 필드 값에 추가됩니다.
{"key": {"inner_key": [{"nested_key": "nested_value"}, {"nested_key": "nested_value2"}]}} mask의 경우, 대상 필드의 유형 값은 항상 string로 설정되어야 합니다. 실제 입력 데이터는 어떤 타입이든 될 수 있지만, type: string 가 필요합니다. 마스킹된 후 값은 데이터 레이크에 문자열로 저장되기 때문입니다.
다음과 같은 mask 다음과 같은 지시문:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
가림(Redaction)
수신 데이터를 가리면 미리 정의된 값으로 대체합니다. 이 기법은 민감한 정보에 접근하거나 복구할 수 없도록 보장하려는 경우에 유용합니다.
가림을 사용하려면 스키마의 대상 필드에 mask를 포함하세요. 아래의 mask에 type: redact, 그리고 선택적으로 에서.
를 포함하세요. 에서 선택적 에서 키는 실제 이벤트 값을 대체할 문자열 값을 가집니다. 만약 REDACTED가 포함되지 않으면 기본값인
{"key": {"inner_key": [{"nested_key": "nested_value"}, {"nested_key": "nested_value2"}]}} mask의 경우, 대상 필드의 유형 값은 항상 string로 설정되어야 합니다. 실제 입력 데이터는 어떤 타입이든 될 수 있지만, type: string 가 필요합니다. 마스킹된 후 값은 데이터 레이크에 문자열로 저장되기 때문입니다.
다음과 같은 mask 다음과 같은 지시문:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
isEmbeddedJSON
isEmbeddedJSON"username": "XXXX"
때때로 JSON 값이 문자열 안에 임베디드된 형태로 전달됩니다. 문자열 내부의 이스케이프된 JSON을 Panther가 파싱하도록 하려면 isEmbeddedJSON: true object, 타임스탬프 값 와 json.
다음과 같은 isEmbeddedJSON 다음과 같은 지시문:
다음과 같은 페이로드를 변환하게 됩니다:
다음과 같이:
Last updated
Was this helpful?

