데이터 모델

데이터 모델은 모든 로그 유형에서 통합된 필드 집합을 구성하는 방법을 제공합니다

개요

데이터 모델을 사용하여 다양한 로그 유형 전체에 걸쳐 통일된 필드 집합을 구성하려면 다음을 생성하십시오 매핑 다양한 로그 유형의 이벤트 필드와 통합된 데이터 모델 이름 간의. 다음을 활용할 수 있습니다 Panther 관리 데이터 모델사용자 지정 모델 생성.

데이터 모델 사용 사례

예를 들어 네트워크 트래픽 로그에서 특정 소스 IP 주소를 확인하는 디텍션이 있고 이를 여러 로그 유형에 사용하려 한다고 가정해 보십시오. 이러한 로그 유형은 서로 다른 범주(예: DNS, Zeek, Apache)를 넘는 것뿐만 아니라 서로 다른 공급업체에 걸쳐 있을 수 있습니다. 공통 로그 표준이 없으면 각 로그 유형은 소스 IP를 서로 다른 필드 이름으로 나타낼 수 있으며, 예를 들면 ipAddress, srcIP, 또는 ipaddr. 모니터링하려는 로그 유형이 많아질수록 이 검사 로직은 더 복잡하고 번거로워집니다. 예를 들어 다음과 같을 수 있습니다:

(event.get('ipAddress') == '127.0.0.1' or 
event.get('srcIP') == '127.0.0.1' or 
event.get('ipaddr') == '127.0.0.1')

대신 각 로그 유형에 대해 데이터 모델을 정의하면 이벤트의 필드 이름을 데이터 모델 이름으로 변환할 수 있으므로 디텍션은 단순히 데이터 모델 버전을 참조하면 됩니다. 위의 로직은 다음과 같이 단순화됩니다:

event.udm('source_ip') == '127.0.0.1'

Panther 관리 데이터 모델

기본적으로 Panther에는 다음과 같은 여러 로그 유형에 대한 내장 데이터 모델이 제공됩니다 AWS.S3ServerAccess, AWS.VPCFlowOkta.SystemLog. 현재 지원되는 모든 데이터 모델은 다음에서 확인할 수 있습니다 panther-analysis 리포지토리, 여기arrow-up-right.

지원되는 데이터 모델 매핑의 이름은 다음에 나열되어 있습니다 아래의 Panther 관리 데이터 모델 매핑 이름 표.

사용자 지정 데이터 모델 생성 방법

사용자 지정 데이터 모델은 Panther 콘솔에서, Panther 분석 도구(PAT)또는 Panther API에서 몇 가지 방법으로 생성할 수 있습니다. 각 방법에 대한 생성 지침은 아래 탭을 참조하십시오.

사용자 지정 데이터 모델 매핑은 다음을 사용할 수 있습니다 Panther 관리 데이터 모델에서 참조된 이름또는 자체 사용자 지정 이름. 각 매핑은 이름 이벤트 필드(다음과 함께 매핑 가능 경로 이전에 생성한 Snowflake 사용자 이름, 예를 들면 필드 경로) 또는 사용자가 정의한 메서드(다음과 함께 필드 메서드 이전에 생성한 Snowflake 사용자 이름, 예를 들면 메서드). 메서드로 매핑하는 경우, 메서드는 별도의 Python 파일에서 정의해야 합니다(CLI 워크플로우에서 작업하는 경우). 이는 YAML 파일에서 파일 이름또는 Python 모듈 필드로 콘솔에서 참조됩니다.

각 로그 유형에는 하나의 활성화된 데이터 모델만 지정할 수 있습니다(단일 데이터 모델은 여러 매핑을 포함할 수 있음). 기존 데이터 모델을 변경하거나 업데이트하려면 기존 것을 비활성화한 다음 새로 활성화된 것을 생성하십시오.

Panther 콘솔에서 새 데이터 모델을 생성하려면:

  1. Panther 콘솔의 왼쪽 탐색 창에서 디텍션.

  2. 을 클릭하세요 데이터 모델. .The list of Data Models in the Panther Console is displayed

  3. 오른쪽 상단에서 새로 만들기.

  4. 에서 설정에서 양식 필드를 작성하십시오.

    • 표시 이름: 이 데이터 모델에 대한 사용자 친화적인 표시 이름을 입력하십시오.

    • ID: 이 데이터 모델에 대한 고유 ID를 입력하십시오.

    • 로그 유형: 이 데이터 모델이 적용될 로그 유형을 선택하십시오. 데이터 모델당 하나의 로그 유형만 허용됩니다.

    • 사용: 이 데이터 모델을 활성화할지 비활성화할지 선택하십시오. In the Panther Console, the New Data Model screen is displayed. It contains fields for Display Name, ID, and Log Type. Under "Data Model Mappings" there are fields are Name, Field Path, and Field Method.

  5. 에서 데이터 모델 매핑에서, 생성하십시오 이름/필드 경로 이전에 생성한 Snowflake 사용자 이름, 예를 들면 이름/필드 메서드 쌍.

  6. 다음 필드 메서드 필드를 사용한 경우, 메서드를 Python 모듈 (선택 사항) 섹션의 명령을 실행하세요.

  7. 오른쪽 상단에서 클릭하세요 "Resource": "<secret ARN>".

에서 필드의 존재 여부 평가하기 경로

내부의 경로 값 내에서 특정 이벤트 필드가 존재하는지 확인하는 로직을 포함할 수 있습니다. 존재하면 매핑이 적용되고, 존재하지 않으면 매핑은 적용되지 않습니다.

예를 들어, 다음은 Panther 관리 gsuite_data_model.ymlarrow-up-right:

데이터 모델 사용하기

규칙에서 데이터 모델 참조

규칙에서 데이터 모델 필드를 참조하려면:

  1. 규칙의 YAML 파일에서 다음 LogTypes 필드에 적용하려는 데이터 모델의 로그 유형이 포함되어 있는지 확인하십시오:

  2. Rule의 모든 테스트 테스트 케이스에 로그 유형을 추가하십시오, p_log_type 필드에 붙여넣으세요.

  3. port 템플릿을 event.udm() 메서드 을 규칙의 Python 로직에서 사용하십시오:

Enrichment과 함께 데이터 모델 사용하기

Panther는 이벤트 객체에 대해 내장 메서드인 다음을 제공합니다 event.udm_path(). 이는 데이터 모델에 사용된 원래 경로를 반환합니다.

AWS.VPCFlow 로그 예시

아래 예에서 event.udm_path('destination_ip') 를 호출하면 'dstAddr'가 반환됩니다. 이는 해당 로그 유형의 데이터 모델에 정의된 경로이기 때문입니다.

이를 테스트하려면 다음 테스트 케이스를 사용할 수 있습니다:

테스트 케이스는 다음과 같은 Alert를 반환하며, Alert Context는 dstAddr 의 값을 포함합니다 (또는{"datakey": "datavalue"} )로서.

The screen shot shows a passing test in the Panther Console including the alert context with the data key and data value

enriched_data

데이터 모델 테스트 데이터 모델을 테스트하려면, 다음을 작성하십시오 단위 테스트 event.udm() 데이터 모델 매핑을 참조하는 디텍션을 위한, 해당 디텍션의 rule() 로직에서.

DataModel 명세 참조

DataModel 명세 필드의 전체 목록:

필드 이름

필수

설명

예상 값

AnalysisType

이 명세가 룰, 정책, 데이터 모델 또는 전역을 정의하는지 여부를 나타냅니다

datamodel

DataModelID

데이터 모델의 고유 식별자

문자열

표시 이름

아니요

UI 및 알러트에 표시할 이름입니다. 이 필드가 설정되지 않은 경우 DataModelID 이 표시명이 대신 표시됩니다.

문자열

사용

이 데이터 모델이 활성화되어 있는지 여부

부울

파일 이름

아니요

Python 데이터 모델 본문으로의 경로(파일 확장자 포함)

문자열

LogTypes

이 데이터 모델이 적용될 로그 유형

문자열의 단일 리스트 참고: 비록 LogTypes 가 문자열 리스트를 허용하지만, 데이터 모델당 하나의 로그 유형만 지정할 수 있습니다

Mappings

소스 필드 이름 또는 메서드에서 통합 데이터 모델 필드 이름으로의 매핑

데이터모델 Mappings

매핑은 로그 유형 필드를 통합된 데이터 모델 필드로 변환합니다. 각 Mappings 항목은 다음을 정의해야 합니다:

  • 이름: 디텍션에서 이 데이터 모델을 참조하는 방법.

  • 다음 중 하나:

    • 경로: 원래 로그 유형 스키마에서 필드로 가는 경로. 이 값은 단순 필드 이름 또는 JSON 경로일 수 있습니다. jsonpath-ng에 대한 자세한 정보는 pypi.org의 문서를 참조하십시오 여기arrow-up-right.

    • 메서드: 메서드의 이름. 메서드는 데이터 모델 명세에 나열된 파일에 정의되어야 합니다 파일 이름 필드에 붙여넣으세요.

예:

사용자를 사용할 것이며, 경로 다음의 값 SELECT CURRENT_ACCOUNT() 데이터 모델에는 USER_EMAIL 이벤트 필드의 존재 여부를 확인하는 로직이 있습니다. 자세한 내용은 에서 필드의 존재 여부 평가하기 경로.

Panther 관리 데이터 모델 매핑 이름

사용자를 사용할 것이며, Panther 관리 데이터 모델arrow-up-right 매핑 이름은 아래에 설명되어 있습니다. 자신의 데이터 모델 매핑을 생성할 때 아래의 이름을 사용자 지정 이름과 함께 사용할 수 있습니다.통합 데이터 모델 필드 이름

actor_user

설명

이벤트를 유발한 사용자의 ID 또는 사용자 이름.

assigned_admin_role

이벤트에서 사용자에게 할당된 관리자 역할 ID 또는 이름.

destination_ip

트래픽의 목적지 IP

destination_port

트래픽의 목적지 포트

이벤트 유형의 사용자 지정 설명. 이벤트 유형에 대한 기본 제공 지원은 글로벌 파일에서 찾을 수 있습니다,

event_type

panther_event_type_helpers.py http_status.

트래픽의 숫자형 HTTP 상태 코드

source_ip

트래픽의 소스 IP

source_port

트래픽의 소스 포트

user_agent

이벤트에서 클라이언트와 연관된 사용자 에이전트.

행동의 대상이 된 사용자(ID 또는 사용자 이름).

SELECT CURRENT_ACCOUNT()

행동의 대상이 된 사용자의 ID 또는 사용자 이름.

마지막 업데이트

도움이 되었나요?