# 표준 필드

Panther의 로그 분석은 모든 로그 레코드에 표준화 필드(IP, 도메인 등)를 적용합니다. 이러한 필드는 모든 데이터 소스에서 속성의 표준 이름을 제공하여 빠르고 쉬운 데이터 연관을 가능하게 합니다.

예를 들어 각 데이터 소스에는 이벤트가 발생한 시간이 있지만 각 데이터 소스가 속성 이름을 동일하게 지정하지 않을 수 있으며 연결된 시간이 다른 데이터 소스와 일관된 시간대라는 보장이 없습니다.

Panther는 `p_event_time` 속성이 각 데이터 소스의 해당 이벤트 시간에 매핑되고 [UTC로 표준화됩니다](https://docs.panther.com/ko/data-onboarding/custom-log-types/reference#timestamps)。 이는 여러 데이터 소스를 쿼리할 때 `p_event_time`를 기준으로 조인하고 정렬할 수 있음을 의미합니다. 각 데이터 소스의 스키마가 서로 다름에도 불구하고

{% hint style="info" %}
추가된 모든 표준 필드는 `p_.로 시작합니다`
{% endhint %}

## 필수 필드

아래 필드들은 모든 로그 레코드에 추가됩니다:

<table data-header-hidden><thead><tr><th width="227.35377358490564">필드 이름</th><th width="150.8477048821628">유형</th><th>설명</th></tr></thead><tbody><tr><td><strong>필드 이름</strong></td><td><strong>유형</strong></td><td><strong>설명</strong></td></tr><tr><td><code>p_log_type</code></td><td><code>문자열</code></td><td>로그의 유형입니다.</td></tr><tr><td><code>p_row_id</code></td><td><code>문자열</code></td><td>행에 대한 고유 ID(UUID)입니다.</td></tr><tr><td><code>p_event_time</code></td><td><code>타임스탬프</code></td><td>로그 유형과 관련된 이벤트 시간이 여기에 복사되어 UTC로 표준화됩니다.<br><br>형식: <code>YYYY-MM-DD HH:MM:SS.fff</code></td></tr><tr><td><code>p_parse_time</code></td><td><code>타임스탬프</code></td><td>이벤트가 파싱된 현재 시간으로, UTC로 표준화됩니다.<br><br>형식: <code>YYYY-MM-DD HH:MM:SS.fff</code></td></tr><tr><td><code>p_schema_version</code></td><td><code>정수</code></td><td>이 행에 사용된 스키마의 버전입니다.</td></tr><tr><td><code>p_source_id</code></td><td><code>문자열</code></td><td>소스 통합에 대해 Panther가 생성한 내부 ID입니다.</td></tr><tr><td><code>p_source_label</code></td><td><code>문자열</code></td><td>소스 통합에 대해 사용자가 제공한 라벨(편집 시 변경될 수 있음)입니다.</td></tr><tr><td><code>p_source_file</code></td><td><code>객체</code></td><td>S3 소스에서만 사용 가능하며, 이 필드는 이벤트가 생성된 파일의 메타데이터(버킷 이름 및 오브젝트 키 포함)를 포함합니다.</td></tr><tr><td><code>p_header</code></td><td><code>객체</code></td><td>다음이 활성화된 경우 봉투 메타데이터를 포함합니다 <strong>봉투 필드 보존</strong> 이 <a href="../../data-onboarding/data-transports/aws/cloudwatch#envelope-field-retention">CloudWatch 로그 소스에 대해</a>입니다. 로그 그룹, 로그 스트림, 소유자 계정 및 구독 필터와 같은 정보가 포함됩니다.</td></tr></tbody></table>

{% hint style="info" %}
이벤트에 타임스탬프가 없으면 `p_event_time` 가 `p_parse_time`로 설정되며, 이는 이벤트가 파싱된 시간입니다.
{% endhint %}

다음 `p_source_id` 및 `p_source_label` 필드는 데이터가 어디에서 생성되었는지를 나타냅니다. 예를 들어 Panther에 여러 CloudTrail 소스를 등록하고 각 소스에 고유한 이름(예: "Dev Accounts", "Production Accounts", "HR Accounts" 등)을 지정했을 수 있습니다. 이러한 필드는 소스에 따라 데이터를 분리할 수 있게 해주며, Panther에서 디텍션을 구성할 때 유용합니다.

또한 아래 필드는 `panther_rule_matches` 데이터베이스의 모든 테이블 로그 레코드에 추가됩니다:

<table data-header-hidden><thead><tr><th width="279.2877939529675">필드 이름</th><th width="195.33333333333334">유형</th><th>설명</th></tr></thead><tbody><tr><td><strong>panther_rule_matches의 필드 이름</strong></td><td><strong>유형</strong></td><td><strong>설명</strong></td></tr><tr><td><code>p_alert_id</code></td><td><code>문자열</code></td><td>행과 관련된 alert의 ID입니다.</td></tr><tr><td><code>p_alert_creation_time</code></td><td><code>타임스탬프</code></td><td>행과 관련된 alert 생성 시간입니다.</td></tr><tr><td><code>p_alert_context</code></td><td>객체</td><td>rule의 alert_context() 함수에서 반환된 JSON 객체입니다.</td></tr><tr><td><code>p_alert_severity</code></td><td><code>문자열</code></td><td>alert 시점의 룰의 심각도 수준입니다. 이는 동적으로 설정될 수 있으므로 기본 심각도와 다를 수 있습니다.</td></tr><tr><td><code>p_alert_update_time</code></td><td><code>타임스탬프</code></td><td>행과 관련된 마지막 alert 업데이트 시간입니다.</td></tr><tr><td><code>p_rule_id</code></td><td><code>문자열</code></td><td>alert를 생성한 룰의 ID입니다.</td></tr><tr><td><code>p_rule_error</code></td><td><code>문자열</code></td><td>룰 실행 중 오류가 발생한 경우의 오류 메시지입니다.</td></tr><tr><td><code>p_rule_reports</code></td><td><code>map[string]array[string]</code></td><td>행과 관련된 사용자 정의 룰 보고 태그의 목록입니다.</td></tr><tr><td><code>p_rule_severity</code></td><td><code>문자열</code></td><td>룰의 기본 심각도입니다.</td></tr><tr><td><code>p_rule_tags</code></td><td><code>array[string]</code></td><td>행과 관련된 사용자 정의 룰 태그의 목록입니다.</td></tr></tbody></table>

## 지표(인디케이터) 필드

일반적인 보안 질문은 “어떤 인디케이터가 `언제든 관찰된 적이 있나요”입니다` 우리의 *어떤* 로그에서?” Panther의 [검색](https://docs.panther.com/ko/search/search-tool) 도구는 다양한 로그 소스의 데이터를 가로질러 검색하여 그 답을 찾을 수 있게 해줍니다.

로그 이벤트가 수집되면, [`인디케이터` 필드](https://docs.panther.com/ko/data-onboarding/custom-log-types/reference#indicators) 해당 스키마에서 어떤 필드의 값이 `p_any_` 필드로 추출되어 이벤트와 함께 추가 및 저장되어야 하는지를 식별합니다. 아래 표는 각 `p_any_` 인디케이터별로 어떤 `필드로 데이터가 추출되는지를 보여줍니다.`모든 `p_any_` 필드는 리스트입니다.

사용자 정의 스키마를 구성할 때 아래 표의 Indicator Name 열에 있는 값을 스키마의 [`인디케이터` 필드](https://docs.panther.com/ko/data-onboarding/custom-log-types/reference#indicators)에 사용할 수 있습니다. 아래의 각 행(다음 제외 `hostname`, `net_addr`및 `url`)은 [검색](https://docs.panther.com/ko/search/search-tool).

의 "Panther Fields" 옵션에 해당합니다. [표에 없는 필드 이름/값 쌍은](https://docs.panther.com/ko/search-tool#key-value-filter-expression) Search의 키/값 필터 표현식

{% hint style="info" %}
기능으로 검색할 수 있습니다—하지만 해당 필드들이 다른 로그 소스에서 (다른 문법으로) 대응되는 필드로 매핑되어 있지 않기 때문에, 정확히 검색된 필드 이름을 포함하는 로그 소스의 결과만 반환됩니다. `문자열`.
{% endhint %}

<table><thead><tr><th width="178.33333333333331">스키마에서 필드를 인디케이터로 지정하려면 해당 필드의 타입이</th><th width="213.67435158501445">인디케이터 이름</th><th>설명</th></tr></thead><tbody><tr><td>추출되는 필드</td><td>actor_id</td><td>p_any_actor_ids</td></tr><tr><td>값을 p_any_actor_ids에 추가합니다.</td><td>aws_account_id</td><td>p_any_aws_account_ids</td></tr><tr><td>값이 유효한 AWS 계정 ID이면 p_any_aws_account_ids에 추가합니다.</td><td>aws_arn<br></td><td>p_any_aws_arns,<br>p_any_aws_instance_ids,<br>p_any_aws_account_ids,<br>p_any_emails</td></tr><tr><td>값이 유효한 AWS ARN이면 p_any_aws_arns에 추가합니다.<br>ARN에 AWS 계정 ID가 포함되어 있으면 추출하여 p_any_aws_account_ids에 추가합니다.<br>ARN에 EC2 인스턴스 ID가 포함되어 있으면 추출하여 p_any_aws_instance_ids에 추가합니다.<br>ARN이 AWS STS Assume Role을 참조하고 이메일 주소를 포함하는 경우, 이메일 주소를 추출하여 p_any_emails에 추가합니다.</td><td>aws_instance_id</td><td>p_any_aws_instance_ids</td></tr><tr><td>값이 유효한 AWS 인스턴스 ID이면 p_any_aws_instance_ids에 추가합니다.</td><td>aws_tag</td><td>p_any_aws_tags</td></tr><tr><td>값을 p_any_aws_tags에 추가합니다.</td><td>cve</td><td>p_any_cves <code>다음 정규식과 일치하는 모든 값을 추출합니다</code> ^[Cc][Vv][Ee]-\d{4}-\d+$</td></tr><tr><td>그리고 p_any_cves에 추가합니다</td><td>domain</td><td>p_any_domain_names</td></tr><tr><td>값을 p_any_domain_names에 추가합니다.</td><td>email</td><td>p_any_emails <code>@</code> 값이 유효한 이메일 주소이면 값을 p_any_emails에 추가합니다. 값에서</td></tr><tr><td>hostname</td><td>앞부분은 p_any_usernames에도 채워집니다</td><td>p_any_domain_names, p_any_ip_addresses</td></tr><tr><td>값을 p_any_domain_names에 추가합니다.<br>값이 유효한 IPv4 또는 IPv6 주소이면 p_any_ip_addresses에 추가합니다.</td><td>ip</td><td>p_any_ip_addresses</td></tr><tr><td>값이 유효한 IPv4 또는 IPv6 주소이면 p_any_ip_addresses에 추가합니다.</td><td>mac</td><td>p_any_mac_addresses</td></tr><tr><td>값이 유효한 IEEE 802 MAC-48, EUI-48, EUI-64 또는 20바이트 IP over InfiniBand 링크-레이어 주소이면 p_any_mac_addresses에 추가합니다.</td><td>md5</td><td>p_any_md5_hashes</td></tr><tr><td>값이 유효한 md5이면 값을 p_any_md5_hashes에 추가합니다.</td><td>mitre_attack_technique</td><td>p_any_cves <code>p_any_mitre_attack_techniques</code> \b[Tt]\d{4}(?:\.\d{3})?\b <code>그리고 p_any_mitre_attack_techniques에 추가합니다. 예를 들어 필드 값이</code>"Technique: T1234" <code>인 경우 p_any_mitre_attack_techniques에는</code></td></tr><tr><td>net_addr</td><td>앞부분은 p_any_usernames에도 채워집니다</td><td>["T1234"] <code>형식의 값에서 추출하여</code> &#x3C;host>:&#x3C;port></td></tr><tr><td>호스트 부분을 p_any_domain_names에 추가합니다.<br>호스트 부분이 유효한 IPv4 또는 IPv6 주소이면 p_any_ip_addresses에도 추가합니다.</td><td>serial_number</td><td>p_any_serial_numbers</td></tr><tr><td>값을 p_any_serial_numbers에 추가합니다.</td><td>sha1</td><td>p_any_sha1_hashes</td></tr><tr><td>값이 유효한 sha1이면 p_any_sha1_hashes에 추가합니다.</td><td>sha256</td><td>p_any_sha256_hashes</td></tr><tr><td>값이 유효한 sha256이면 p_any_sha256_hashes에 추가합니다.</td><td>trace_id</td><td>p_any_trace_ids</td></tr><tr><td>url</td><td>앞부분은 p_any_usernames에도 채워집니다</td><td><p>값을 p_any_trace_ids에 추가합니다.<br>세션 ID 및 문서 ID와 같은 태그 필드는 관련 이벤트 시퀀스의 전체 활동을 추적하기 위해 다른 로그의 요소와 연결하는 데 사용됩니다.<br></p><p>"http://" 또는 "https://" 이후의 호스트 부분을 파싱하여 추출합니다.</p></td></tr><tr><td>호스트 부분을 p_any_domain_names에 추가합니다.<br>호스트 부분이 유효한 IPv4 또는 IPv6 주소이면 p_any_ip_addresses에 추가합니다.</td><td>username</td><td>p_any_usernames <code>값을 p_any_domain_names에 추가합니다.</code> 값을 p_any_usernames에 추가합니다.<br><br>이 필드는 또한 <code>@</code> 인디케이터로 표시된 값으로 채워집니다. 이메일 값에서</td></tr></tbody></table>

## 앞부분은 이 필드에 추가됩니다. <a href="#enrichmentfields" id="enrichmentfields"></a>

확장(엔리치먼트) 필드 [Panther 룰 엔진은 ](https://docs.panther.com/ko/enrichment/custom)조회 테이블 `에서 조회된 일치 항목을 가져와 키` p\_enrichment

```json
{ 
    를 사용하여 다음 JSON 구조로 이벤트에 해당 데이터를 추가합니다:
        'p_enrichment': { 
            <조회 테이블 이름>: {
            ...
	    <조회 테이블 이름>: {
        }    
    }
} 
```

<table><thead><tr><th width="250">&#x3C;로그에서 일치한 키>: &#x3C;조회된 일치 행>,</th><th width="122.33333333333331">유형</th><th>엔리치먼트 필드 이름</th></tr></thead><tbody><tr><td><code>에서 조회된 일치 항목을 가져와 키</code></td><td>객체</td><td>엔리치먼트 필드 설명</td></tr><tr><td><code>일치하는 행이 발견된 조회 결과의 딕셔너리입니다.</code></td><td>문자열</td><td><code>일치하는 행이 발견된 조회 결과의 딕셔너리입니다.</code> p_match <code>에서 조회된 일치 항목을 가져와 키</code>는</td></tr></tbody></table>

## 내의 각 일치 행의 데이터에 주입됩니다.

그 값은 이벤트에서 일치한 값입니다.

"all\_logs" 뷰 *어떤* Panther는 표준 필드가 포함된 모든 데이터 소스에 대한 뷰를 관리합니다. `이를 통해 "어떤 활동이 있었나"와 같은 질문에 답할 수 있습니다, 예를 들어`어떤 악성 IP로부터의

활동이 있었는지, 그리고 있었다면 어디에서였는지를 묻는 질문에 답할 수 있습니다. `95.123.145.92`:

```sql
아래 쿼리는 IP 주소와 관련된 레코드가 로그 타입별로 몇 건인지 보여줍니다
 SELECT
p_log_type, count(1) AS row_count
FROM panther_views.public.all_logs
     WHERE p_occurs_between('2020-1-30', '2020-1-31')
AND array_contains('95.123.145.92'::variant, p_any_ip_addresses)
```

GROUP BY p\_log\_type

## 이 결과에서 활동이 표시된 특정 로그로 피벗할 수 있습니다.

디텍션에서의 표준 필드

Panther의 표준 필드는 디텍션에서 사용할 수 있습니다. `예를 들어 아래의 Python 룰은 GuardDuty 경고가`:

```python
Critical
    로 태그된 리소스에 있을 때 트리거됩니다.
        def rule(event):
            if 'p_any_aws_tags' in event:
                for tag in event['p_any_aws_tags']:
    if 'critical' in tag(): 
```
