데이터 모델
데이터 모델은 모든 로그 유형에서 통합된 필드 집합을 구성하는 방법을 제공합니다
개요
데이터 모델을 사용하여 다양한 로그 유형 전체에 걸쳐 통일된 필드 집합을 구성하려면 다음을 생성하십시오 매핑 다양한 로그 유형의 이벤트 필드와 통합된 데이터 모델 이름 간의. 다음을 활용할 수 있습니다 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.VPCFlow및 Okta.SystemLog. 현재 지원되는 모든 데이터 모델은 다음에서 확인할 수 있습니다 panther-analysis 리포지토리, 여기.
지원되는 데이터 모델 매핑의 이름은 다음에 나열되어 있습니다 아래의 Panther 관리 데이터 모델 매핑 이름 표.
사용자 지정 데이터 모델 생성 방법
사용자 지정 데이터 모델은 Panther 콘솔에서, Panther 분석 도구(PAT)또는 Panther API에서 몇 가지 방법으로 생성할 수 있습니다. 각 방법에 대한 생성 지침은 아래 탭을 참조하십시오.
사용자 지정 데이터 모델 매핑은 다음을 사용할 수 있습니다 Panther 관리 데이터 모델에서 참조된 이름또는 자체 사용자 지정 이름. 각 매핑은 이름 이벤트 필드(다음과 함께 매핑 가능 경로 이전에 생성한 Snowflake 사용자 이름, 예를 들면 필드 경로) 또는 사용자가 정의한 메서드(다음과 함께 필드 메서드 이전에 생성한 Snowflake 사용자 이름, 예를 들면 메서드). 메서드로 매핑하는 경우, 메서드는 별도의 Python 파일에서 정의해야 합니다(CLI 워크플로우에서 작업하는 경우). 이는 YAML 파일에서 파일 이름또는 Python 모듈 필드로 콘솔에서 참조됩니다.
각 로그 유형에는 하나의 활성화된 데이터 모델만 지정할 수 있습니다(단일 데이터 모델은 여러 매핑을 포함할 수 있음). 기존 데이터 모델을 변경하거나 업데이트하려면 기존 것을 비활성화한 다음 새로 활성화된 것을 생성하십시오.
Panther 콘솔에서 새 데이터 모델을 생성하려면:
Panther 콘솔의 왼쪽 탐색 창에서 디텍션.
을 클릭하세요 데이터 모델 탭. .

오른쪽 상단에서 새로 만들기.
에서 설정에서 양식 필드를 작성하십시오.
표시 이름: 이 데이터 모델에 대한 사용자 친화적인 표시 이름을 입력하십시오.
ID: 이 데이터 모델에 대한 고유 ID를 입력하십시오.
로그 유형: 이 데이터 모델이 적용될 로그 유형을 선택하십시오. 데이터 모델당 하나의 로그 유형만 허용됩니다.
사용: 이 데이터 모델을 활성화할지 비활성화할지 선택하십시오.

에서 데이터 모델 매핑에서, 생성하십시오 이름/필드 경로 이전에 생성한 Snowflake 사용자 이름, 예를 들면 이름/필드 메서드 쌍.
다음 필드 메서드 필드를 사용한 경우, 메서드를 Python 모듈 (선택 사항) 섹션의 명령을 실행하세요.
오른쪽 상단에서 클릭하세요 "Resource": "<secret ARN>".
에 정의하십시오. 이제 이 데이터 모델을 규칙에서 참조할 수 있습니다. 자세한 내용은 규칙에서 데이터 모델 참조.
CLI 워크플로우에서 데이터 모델을 생성하는 방법
폴더 설정
사용자 지정 데이터 모델과 관련된 모든 파일은 이름에 다음이 포함된 폴더에 저장되어야 합니다 data_models (이것은 최상위 data_models 디렉터리일 수 있으며, 또는 이름이 *data_models*인 하위 디렉터리들일 수 있습니다).
파일 설정
데이터 모델 명세 YAML 파일을 생성하십시오(예:
data_models/aws_cloudtrail_datamodel.yml):설정
AnalysisType에서datamodel.다음을 위해
LogTypes, 여기에는 로그 유형 중 하나의 이름을 제공하십시오. 이 필드는 리스트를 받지만 데이터 모델당 하나의 로그 유형만 지원됩니다.다음에 대한 값을 제공하십시오
DataModelID필드에 붙여넣으세요.내부의
Mappings에서, 생성하십시오이름/경로이전에 생성한 Snowflake 사용자 이름, 예를 들면이름/메서드쌍.에 대해 자세히 알아보십시오
Mappings구문 아래의 DataModel에서Mappings.
참조 데이터 모델 명세 참조 필수 및 선택 필드의 전체 목록은 아래를 참조하십시오.
만약 하나 이상의
메서드필드를Mappings에 포함시켰다면, 연관된 Python 파일(data_models/aws_cloudtrail_datamodel.py)을 생성하고 참조된 모든 메서드를 정의하십시오.이 경우, 또한
파일 이름필드를 데이터 모델 YAML 파일에 추가해야 합니다. 만약 어떤메서드필드도 없다면, Python 파일/파일 이름필드는 필요하지 않습니다.
데이터 모델을 Panther 인스턴스에 업로드하려면 다음을 사용하십시오 PAT
업로드명령어.에 정의하십시오. 이제 이 데이터 모델을 규칙에서 참조할 수 있습니다. 자세한 내용은 규칙에서 데이터 모델 참조.
Panther API를 사용하여 데이터 모델을 생성하는 방법
환경에서 Fluentd 시작에 관해서는
HTTP 원시 이벤트(HTTP Raw events)다음 작업에서의 오퍼레이션 데이터 모델.
에서 필드의 존재 여부 평가하기 경로
경로내부의 경로 값 내에서 특정 이벤트 필드가 존재하는지 확인하는 로직을 포함할 수 있습니다. 존재하면 매핑이 적용되고, 존재하지 않으면 매핑은 적용되지 않습니다.
예를 들어, 다음은 Panther 관리 gsuite_data_model.yml:
데이터 모델 사용하기
규칙에서 데이터 모델 참조
규칙에서 데이터 모델 필드를 참조하려면:
규칙의 YAML 파일에서 다음
LogTypes필드에 적용하려는 데이터 모델의 로그 유형이 포함되어 있는지 확인하십시오:Rule의 모든 테스트
테스트케이스에 로그 유형을 추가하십시오,p_log_type필드에 붙여넣으세요.port 템플릿을
event.udm()메서드 을 규칙의 Python 로직에서 사용하십시오:
Enrichment과 함께 데이터 모델 사용하기
Panther는 이벤트 객체에 대해 내장 메서드인 다음을 제공합니다 event.udm_path(). 이는 데이터 모델에 사용된 원래 경로를 반환합니다.
AWS.VPCFlow 로그 예시
아래 예에서 event.udm_path('destination_ip') 를 호출하면 'dstAddr'가 반환됩니다. 이는 해당 로그 유형의 데이터 모델에 정의된 경로이기 때문입니다.
이를 테스트하려면 다음 테스트 케이스를 사용할 수 있습니다:
테스트 케이스는 다음과 같은 Alert를 반환하며, Alert Context는 dstAddr 의 값을 포함합니다 (또는{"datakey": "datavalue"} )로서.

enriched_data
데이터 모델 테스트 데이터 모델을 테스트하려면, 다음을 작성하십시오 단위 테스트 event.udm() 데이터 모델 매핑을 참조하는 디텍션을 위한, 해당 디텍션의 rule() 로직에서.
DataModel 명세 참조
DataModel 명세 필드의 전체 목록:
필드 이름
필수
설명
예상 값
AnalysisType
예
이 명세가 룰, 정책, 데이터 모델 또는 전역을 정의하는지 여부를 나타냅니다
datamodel
DataModelID
예
데이터 모델의 고유 식별자
문자열
표시 이름
아니요
UI 및 알러트에 표시할 이름입니다. 이 필드가 설정되지 않은 경우 DataModelID 이 표시명이 대신 표시됩니다.
문자열
사용
예
이 데이터 모델이 활성화되어 있는지 여부
부울
파일 이름
아니요
Python 데이터 모델 본문으로의 경로(파일 확장자 포함)
문자열
LogTypes
예
이 데이터 모델이 적용될 로그 유형
문자열의 단일 리스트
참고: 비록 LogTypes 가 문자열 리스트를 허용하지만, 데이터 모델당 하나의 로그 유형만 지정할 수 있습니다
데이터모델 Mappings
Mappings매핑은 로그 유형 필드를 통합된 데이터 모델 필드로 변환합니다. 각 Mappings 항목은 다음을 정의해야 합니다:
이름: 디텍션에서 이 데이터 모델을 참조하는 방법.다음 중 하나:
경로: 원래 로그 유형 스키마에서 필드로 가는 경로. 이 값은 단순 필드 이름 또는 JSON 경로일 수 있습니다. jsonpath-ng에 대한 자세한 정보는 pypi.org의 문서를 참조하십시오 여기.메서드: 메서드의 이름. 메서드는 데이터 모델 명세에 나열된 파일에 정의되어야 합니다파일 이름필드에 붙여넣으세요.
예:
사용자를 사용할 것이며, 경로 다음의 값 SELECT CURRENT_ACCOUNT() 데이터 모델에는 USER_EMAIL 이벤트 필드의 존재 여부를 확인하는 로직이 있습니다. 자세한 내용은 에서 필드의 존재 여부 평가하기 경로.
Panther 관리 데이터 모델 매핑 이름
사용자를 사용할 것이며, Panther 관리 데이터 모델 매핑 이름은 아래에 설명되어 있습니다. 자신의 데이터 모델 매핑을 생성할 때 아래의 이름을 사용자 지정 이름과 함께 사용할 수 있습니다.통합 데이터 모델 필드 이름
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 또는 사용자 이름.
마지막 업데이트
도움이 되었나요?

