# Cloudflare 로그

## 개요

Panther는 Cloudflare의 [Logpush](https://developers.cloudflare.com/logs/about/) 서비스를 통해 Cloudflare 로그를 수집할 수 있으며, 이 서비스는 로그를 Amazon Web Services(AWS) S3, Google Cloud Storage(GCS) 또는 Azure Blob Storage로 직접 스트리밍합니다.

{% hint style="info" %}
Cloudflare의 Logpush는 Cloudflare Enterprise 고객에게만 제공됩니다. 이 페이지의 일부 Cloudflare 로그 유형(예: [감사 로그](https://developers.cloudflare.com/logs/reference/log-fields/account/audit_logs))는 Logpush 없이 가져올 수 있지만, Panther에서 지원하는 스키마는 Logpush로 전달될 때의 데이터 구조에 의존합니다.
{% endhint %}

{% hint style="info" %}
Panther는 Cloudflare에서 제공되는 30개 이상의 로그 유형 중 4개를 기본적으로 지원합니다. Cloudflare 데이터세트에 지원되지 않는 로그 유형이 포함되어 있다면, 대신 다음을 생성하는 것이 좋습니다. [S3 Data Transport 소스](/ko/data-onboarding/data-transports/aws/s3.md).

다음 중 아무거나 연결할 수 있습니다. [Panther에서 관리하는 Cloudflare 스키마](#supported-log-types) (단, [`Cloudflare.Firewall`](#cloudflare.firewall)제외) 이 사용자 지정 로그 소스에 그대로 적용할 수 있습니다. Firewall 로그의 경우, 관리형 [`Cloudflare.Firewall`](#cloudflare.firewall) 스키마를 복제하고 `kind` 필드를 편집하여 `required: true`.

추가 로그 유형의 경우, [Infer Schema](https://docs.panther.com/data-onboarding/custom-log-types#how-to-infer-a-schema) 기능을 사용해 샘플 이벤트에서 구조를 자동 생성하여 새 사용자 지정 스키마를 만드세요.
{% endhint %}

## Cloudflare 로그를 Panther에 온보딩하는 방법

Cloudflare 로그를 S3 버킷, GCS 버킷 또는 Azure Blob 소스로 스트리밍하여 Panther로 수집할 수 있습니다.

### 사전 요구 사항

{% tabs %}
{% tab title="AWS S3" %}

* AWS 계정에 새 S3 버킷을 생성하세요.
  * Cloudflare 로그 전용으로 새 S3 버킷을 만드는 것을 권장합니다. 기본 설정을 사용할 수 있습니다.
  * 버킷을 생성하는 리전을 기록해 두세요. Cloudflare에 제공해야 합니다.
    {% endtab %}

{% tab title="GCP GCS" %}

* Google Cloud Platform(GCP) 계정에 새 GCS 버킷을 생성하세요.
  * Cloudflare 로그 전용으로 새 GCS 버킷을 만드는 것을 권장합니다. 기본 설정을 사용할 수 있습니다.
    {% endtab %}

{% tab title="Azure Blob" %}

* Azure 계정에 새 Blob 스토리지를 생성하세요.
  * Cloudflare 로그 전용으로 새 Blob 스토리지를 만드는 것을 권장합니다. 기본 설정을 사용할 수 있습니다.
    {% endtab %}
    {% endtabs %}

### 1단계: Panther에서 Cloudflare 소스 설정

1. Panther Console의 왼쪽 탐색 모음에서 **구성하세요.** > **로그 소스**.
2. 을 클릭한 다음 **새로 만들기**.
3. “Cloudflare”를 검색한 다음 해당 타일을 클릭하세요.
   * 슬라이드 아웃 패널에서 **전송 메커니즘** 오른쪽 상단의 드롭다운은 다음 항목으로 미리 채워집니다 **AWS S3 Bucket** 옵션. 이 선택을 그대로 두거나 **Google Cloud Storage** 또는 **Azure Blob Storage**.
4. 을 클릭한 다음 **설정 시작**.
5. 선택한 Data Transport를 구성하려면 Panther 문서를 따르세요: [AWS S3](/ko/data-onboarding/data-transports/aws/s3.md), [Google Cloud Storage](/ko/data-onboarding/data-transports/google/cloud-storage.md) 또는 [Azure Blob Storage](/ko/data-onboarding/data-transports/azure/blob-storage.md).

### 2단계: Logpush를 구성하여 로그를 클라우드 스토리지 위치로 스트리밍

{% hint style="info" %}
Logpush 작업의 데이터세트 유형을 선택할 때, Cloudflare에는 계정 범위 데이터와 영역 범위 데이터 옵션이 있다는 점을 참고하세요. [감사 로그](#cloudflare.audit) 는 계정 범위이고, 반면 [Firewall](#cloudflare.firewall), [HttpRequest](#cloudflare.httprequest), 및 [Spectrum](#cloudflare.spectrum) 는 영역 범위입니다.
{% endhint %}

{% tabs %}
{% tab title="AWS S3" %}

* Cloudflare의 [Amazon S3로 Logpush 활성화 문서](https://developers.cloudflare.com/logs/get-started/enable-destinations/aws-s3/).
  {% endtab %}

{% tab title="GCP GCS" %}

* Cloudflare의 [Google Cloud Storage로 Logpush 활성화](https://developers.cloudflare.com/logs/get-started/enable-destinations/google-cloud-storage/) 문서.
  {% endtab %}

{% tab title="Azure Blob" %}

* Cloudflare의 [Microsoft Azure로 Logpush 활성화](https://developers.cloudflare.com/logs/get-started/enable-destinations/azure/) 문서.
  {% endtab %}
  {% endtabs %}

## Panther에서 관리하는 탐지 규칙

참조하세요 [Panther에서 관리하는](/ko/detections/panther-managed.md) 의 Cloudflare에 대한 룰 [panther-analysis GitHub 저장소에 있습니다](https://github.com/panther-labs/panther-analysis/tree/master/rules/cloudflare_rules).

## 지원되는 로그 유형

### Cloudflare.Audit

Cloudflare UI에서 이벤트 필드를 선택할 때, Panther에서 필요로 하는 `다음 항목을 반드시 포함하세요.`, `ID`, 및 `ResourceType` 필드

```yaml
# Panther가 생성함; 수정하지 마세요. (@generated)
schema: Cloudflare.Audit
parser:
  native:
    name: Cloudflare.Audit
description: 감사 로그는 Cloudflare 계정 내에서 수행된 변경 내역을 요약합니다. 감사 로그에는 로그인 및 로그아웃과 같은 계정 수준 작업뿐 아니라 영역 구성 변경도 포함됩니다.
referenceURL: https://developers.cloudflare.com/logs/reference/log-fields/account/audit_logs
fields:
  - name: ActionResult
    description: 작업이 성공했는지 여부
    type: boolean
  - name: ActionType
    description: 수행된 작업 유형
    type: string
  - name: ActorEmail
    description: 행위자의 이메일
    type: string
    indicators:
      - 이메일
  - name: ActorID
    description: Cloudflare 시스템에서 행위자의 고유 식별자
    type: string
    indicators:
      - username
  - name: ActorIP
    description: 행위자의 물리적 네트워크 주소
    type: string
    indicators:
      - ip
  - name: ActorType
    description: 감사 추적을 시작한 사용자의 유형
    type: string
  - 이름: ID
    required: true
    description: 감사 로그의 고유 식별자
    type: string
  - name: Interface
    description: 감사 로그의 진입점 또는 인터페이스
    type: string
  - name: Metadata
    description: 추가 감사 로그 관련 정보입니다. Metadata는 key:value 쌍으로 구성됩니다. Key와 Value 형식은 ResourceType에 따라 달라질 수 있습니다.
    type: json
  - name: NewValue
    description: 감사 대상 항목의 새 값을 포함합니다.
    type: json
  - name: OldValue
    description: 감사 대상 항목의 이전 값을 포함합니다.
    type: json
  - name: OwnerID
    description: 작업을 수행한 사용자 또는 대신 수행된 사용자의 식별자입니다. 사용자가 직접 작업한 경우 이 값은 ActorID와 동일합니다.
    type: string
    indicators:
      - username
  - name: ResourceID
    description: Cloudflare 시스템 내 리소스의 고유 식별자
    type: string
  - name: ResourceType
    required: true
    description: 변경된 리소스의 유형
    type: string
  - name: When
    required: true
    description: 변경이 발생한 시점
    type: timestamp
    timeFormats:
      - cloudflare
    isEventTime: true
```

### Cloudflare.Firewall

Cloudflare UI에서 이벤트 필드를 선택할 때 Panther에서 필요로 하는 "Datetime" 필드를 반드시 포함하세요.

참조: [Cloudfare 로그 필드 Firewall에 대한 문서.](https://developers.cloudflare.com/logs/reference/log-fields/#firewall-events)

```yaml
schema: Cloudflare.Firewall
description: Cloudflare Firewall 로그입니다. Cloudflare UI에서 이벤트 필드를 선택할 때 Panther에서 필요로 하는 "Datetime" 필드를 반드시 포함하세요.
referenceURL: https://developers.cloudflare.com/logs/log-fields#firewall-events
fields:
    - name: Action
      description: Cloudflare Firewall이 이 요청에 대해 수행한 최상위 작업의 코드
      type: string
    - name: ClientASN
      description: 방문자의 ASN 번호
      type: bigint
    - name: ClientASNDescription
      description: 문자열로 된 방문자의 ASN
      type: string
    - name: ClientCountry
      description: 요청이 발생한 국가
      type: string
    - name: ClientIP
      description: 방문자의 IP 주소(IPv4 또는 IPv6)
      type: string
      indicators:
        - ip
    - name: ClientIPClass
      description: '방문자 IP 주소의 분류. 가능한 값: unknown | clean | badHost | searchEngine | whitelist | greylist | monitoringService |securityScanner | noRecord | scan | backupService | mobilePlatform | tor'
      type: string
    - name: ClientRefererHost
      description: 리퍼러 호스트
      type: string
      indicators:
        - hostname
    - name: ClientRefererPath
      description: 방문자가 요청한 리퍼러 경로
      type: string
    - name: ClientRefererQuery
      description: 방문자가 요청한 리퍼러 쿼리 문자열
      type: string
    - name: ClientRefererScheme
      description: 방문자가 요청한 리퍼러 URL 스킴
      type: string
    - name: ClientRequestHost
      description: 방문자가 요청한 HTTP 호스트 이름
      type: string
      indicators:
        - hostname
    - name: ClientRequestMethod
      description: 방문자가 사용한 HTTP 메서드
      type: string
    - name: ClientRequestPath
      description: 방문자가 요청한 경로
      type: string
    - name: ClientRequestProtocol
      description: 방문자가 요청한 HTTP 프로토콜 버전
      type: string
    - name: ClientRequestQuery
      description: 방문자가 요청한 쿼리 문자열
      type: string
    - name: ClientRequestScheme
      description: 방문자가 요청한 URL 스킴
      type: string
    - name: ClientRequestUserAgent
      description: 방문자의 사용자 에이전트 문자열
      type: string
    - name: Datetime
      required: true
      description: 이벤트가 엣지에서 발생한 날짜와 시간
      type: timestamp
      timeFormats:
        - cloudflare
      isEventTime: true
    - name: Description
      description: 이 이벤트에 대한 룰 설명
      type: string
    - name: EdgeColoCode
      description: 이 요청을 처리한 Cloudflare 데이터 센터의 공항 코드
      type: string
    - name: EdgeResponseStatus
      description: 브라우저에 반환된 HTTP 응답 상태 코드
      type: smallint
    - name: Kind
      description: '이벤트의 종류. 현재 가능한 값은 firewall뿐입니다.'
      type: string
    - name: MatchIndex
      description: 체인 내 룰 일치 인덱스
      type: bigint
    - name: Metadata
      description: 추가 제품별 정보입니다. Metadata는 key:value 쌍으로 구성됩니다. Key와 Value 형식은 Cloudflare 보안 제품에 따라 다를 수 있으며 시간이 지나며 변경될 수 있습니다.
      type: json
    - name: OriginResponseStatus
      description: 브라우저에 반환된 HTTP 원본 응답 상태 코드
      type: smallint
    - name: OriginatorRayID
      description: challenge/jschallenge를 발행한 요청의 RayID
      type: string
      indicators:
        - trace_id
    - name: RayID
      description: 요청의 RayID
      type: string
      indicators:
        - trace_id
    - name: Ref
      description: 이 이벤트에 대한 사용자 정의 룰 참조
      type: string
    - name: RuleID
      description: 이 요청에 의해 트리거된 Cloudflare 보안 제품별 RuleID
      type: string
    - name: Source
      description: 이 요청에 의해 트리거된 Cloudflare 보안 제품
      type: string
```

### Cloudflare.HttpRequest

Cloudflare UI에서 이벤트 필드를 선택할 때 Panther에서 필요로 하는 "EdgeStartTimestamp" 필드를 반드시 포함하세요.

참조: [Cloudfare 로그 필드 Request에 대한 문서.](https://developers.cloudflare.com/logs/reference/log-fields/#http-requests)

```yaml
schema: Cloudflare.HttpRequest
description: Cloudflare HTTP 요청 로그입니다. Cloudflare UI에서 이벤트 필드를 선택할 때 Panther에서 필요로 하는 "EdgeStartTimestamp" 필드를 반드시 포함하세요.
referenceURL: https://developers.cloudflare.com/logs/log-fields#http-requests
fields:
    - name: BotDetectionIDs
      description: 요청에 대해 수행된 Bot Management 휴리스틱 디택션과 연관된 ID 목록입니다. Logpush v2에서만 제공됩니다.
      type: array
      element:
        type: bigint
    - name: BotScore
      description: Cloudflare Bot Score(Bot Management 고객에게 제공되며, 활성화를 위해 계정 팀에 문의하세요)
      type: bigint
    - name: BotScoreSrc
      description: Bot Score가 계산된 기반 디택션 엔진 또는 소스. 가능한 값: Not Computed | Heuristics | Machine Learning | Behavioral Analysis | Verified Bot
      type: string
    - name: BotTags
      description: 봇 트래픽 유형(사용 가능한 경우). 가능한 값 목록은 Bot Tags를 참조하세요. Logpush v2에서만 제공됩니다.
      type: array
      element:
        type: string
    - name: CacheCacheStatus
      description: unknown | miss | expired | updating | stale | hit | ignored | bypass | revalidated
      type: string
    - name: CacheReserveUsed
      description: 이 요청을 제공하는 데 Cache Reserve가 사용되었습니다. Logpush v2에서만 제공됩니다.
      type: boolean
    - name: CacheResponseBytes
      description: 캐시가 반환한 바이트 수
      type: bigint
    - name: CacheResponseStatus
      description: 캐시가 엣지에 반환한 HTTP 상태 코드; 모든 요청(캐시 불가능한 요청 포함)은 캐시를 거칩니다. CacheStatus 필드도 참조하세요.
      type: smallint
    - name: CacheTieredFill
      description: 이 요청을 제공하는 데 Tiered Cache가 사용되었습니다
      type: boolean
    - name: ClientASN
      description: 클라이언트 AS 번호
      type: bigint
    - name: ClientCountry
      description: 클라이언트 IP 주소의 국가
      type: string
    - name: ClientDeviceType
      description: 클라이언트 장치 유형
      type: string
    - name: ClientIP
      description: 클라이언트의 IP 주소
      type: string
      indicators:
        - ip
    - name: ClientIPClass
      description: unknown | clean | badHost | searchEngine | whitelist | greylist | monitoringService | securityScanner | noRecord | scan |backupService | mobilePlatform | tor
      type: string
    - name: ClientMTLSAuthCertFingerprint
      description: mTLS 인증 중 클라이언트가 제시한 인증서의 SHA256 핑거프린트입니다. mTLS 연결의 첫 번째 요청에만 채워집니다. Logpush v2에서만 제공됩니다.
      type: string
      indicators:
        - sha256
    - name: ClientMTLSAuthStatus
      description: mTLS 인증 상태입니다. mTLS 연결의 첫 번째 요청에만 채워집니다. Logpush v2에서만 제공됩니다. 가능한 값: unknown | ok | absent | untrusted | notyetvalid | expired
      type: string
    - name: ClientRegionCode
      description: 클라이언트 IP 주소의 ISO-3166-2 지역 코드
      type: string
    - name: ClientRequestBytes
      description: 클라이언트 요청의 바이트 수
      type: bigint
    - name: ClientRequestHost
      description: 클라이언트가 요청한 호스트
      type: string
      indicators:
        - hostname
    - name: ClientRequestMethod
      description: 클라이언트 요청의 HTTP 메서드
      type: string
    - name: ClientRequestPath
      description: 클라이언트가 요청한 URI 경로
      type: string
    - name: ClientRequestProtocol
      description: 클라이언트 요청의 HTTP 프로토콜
      type: string
    - name: ClientRequestReferer
      description: HTTP 요청 리퍼러
      type: string
      indicators:
        - hostname
    - name: ClientRequestScheme
      description: 방문자가 요청한 URL 스킴입니다. Logpush v2에서만 제공됩니다.
      type: string
      indicators:
        - hostname
    - name: ClientRequestSource
      description: 요청이 외부 소스 또는 Cloudflare 내부의 다른 서비스에서 온 것인지 식별합니다. 가능한 값 목록은 ClientRequestSource 필드를 참조하세요. Logpush v2에서만 제공됩니다.
      type: string
      indicators:
        - hostname
    - name: ClientRequestURI
      description: 클라이언트가 요청한 URI
      type: string
    - name: ClientRequestUserAgent
      description: 클라이언트가 보고한 사용자 에이전트
      type: string
    - name: ClientSrcPort
      description: 클라이언트 소스 포트
      유형: int
    - name: ClientSSLCipher
      description: 클라이언트 SSL 암호화 스위트
      type: string
    - name: ClientSSLProtocol
      description: 클라이언트 SSL(TLS) 프로토콜
      type: string
    - name: ClientTCPRTTMs
      description: TCP 왕복 시간(SRTT)의 평활화된 평균값입니다. 연결의 초기 요청에서는 연결 설정 중에만 측정됩니다. 동일한 연결의 후속 요청에서는 해당 요청이 수신될 때까지의 전체 연결 수명 동안 측정됩니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: ClientXRequestedWith
      description: X-Requested-With HTTP 헤더
      type: string
    - name: ContentScanObjResults
      description: 콘텐츠 검사 결과 목록.
      type: array
      element:
        type: string
    - name: ContentScanObjTypes
      description: 콘텐츠 유형 목록.
      type: array
      element:
        type: string
    - name: Cookies
      description: Cookies의 문자열 key-value 쌍.
      type: json
    - name: EdgeCFConnectingO2O
      description: 요청이 Cloudflare 엣지의 여러 영역을 거쳐 루프된 경우 True입니다. 이는 orange to orange(o2o) 요청으로 간주됩니다. Logpush v2에서만 제공됩니다.
      type: boolean
    - name: EdgeColoCode
      description: 요청을 수신한 데이터 센터의 IATA 공항 코드
      type: string
    - name: EdgeColoID
      description: Cloudflare 엣지 colo ID
      type: bigint
    - name: EdgeEndTimestamp
      description: 엣지가 클라이언트에 대한 응답 전송을 완료한 시각의 타임스탬프
      type: timestamp
      timeFormats:
        - cloudflare
    - name: EdgePathingOp
      description: 이 요청에 대해 어떤 유형의 응답이 발행되었는지 나타냅니다(unknown = 특정 작업 없음)
      type: string
    - name: EdgePathingSrc
      description: 보안 검사에 따라 요청이 어떻게 분류되었는지 자세히 설명합니다(unknown = 특정 분류 없음)
      type: string
    - name: EdgePathingStatus
      description: 이 요청 처리 방식을 결정하는 데 어떤 데이터가 사용되었는지 나타냅니다(unknown = 데이터 없음)
      type: string
    - name: EdgeRateLimitAction
      description: 차단 룰이 수행한 작업입니다. 수행한 작업이 없으면 비어 있습니다.
      type: string
    - name: EdgeRateLimitID
      description: 차단(금지) 또는 시뮬레이션 작업을 트리거한 rate-limiting 룰의 내부 룰 ID입니다. 작업이 없으면 0입니다.
      type: string
    - name: EdgeRequestHost
      description: 엣지에서 원본으로 보내는 요청의 Host 헤더
      type: string
      indicators:
        - hostname
    - name: EdgeResponseBodyBytes
      description: 클라이언트에 반환된 HTTP 응답 본문의 크기입니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: EdgeResponseBytes
      description: 엣지가 클라이언트에 반환한 바이트 수
      type: bigint
    - name: EdgeResponseCompressionRatio
      description: 엣지 응답 압축 비율
      type: float
    - name: EdgeResponseContentType
      description: 엣지 응답 Content-Type 헤더 값
      type: string
    - name: EdgeResponseStatus
      description: Cloudflare가 클라이언트에 반환한 HTTP 상태 코드
      type: smallint
    - name: EdgeServerIP
      description: 원본에 요청을 보내는 엣지 서버의 IP
      type: string
      indicators:
        - ip
    - name: EdgeStartTimestamp
      required: true
      description: 엣지가 클라이언트로부터 요청을 받은 시각의 타임스탬프
      type: timestamp
      timeFormats:
        - cloudflare
      isEventTime: true
    - name: EdgeTimeToFirstByteMs
      description: Cloudflare 엣지에서 측정한 TTFB(Time To First Byte)의 전체 관점입니다. TCP 연결이 설정된 후 시작되며 Cloudflare가 응답의 첫 바이트를 사용자에게 반환하기 시작할 때 끝납니다. TLS 핸드셰이크 시간(새 연결의 경우)과 원본 응답 시간을 포함합니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: FirewallMatchesActions
      description: Cloudflare 방화벽 제품이 이 요청에 대해 수행한 작업 배열입니다. 이 작업과 관련된 개별 방화벽 제품은 FirewallMatchesSources에서 찾을 수 있으며, 해당 RuleId는 FirewallMatchesRuleIDs에서 찾을 수 있습니다. 배열의 길이는 FirewallMatchesRuleIDs 및 FirewallMatchesSources와 동일합니다. 가능한 작업: allow | log | simulate | drop | challenge | jschallenge | connectionClose | challengeSolved | challengeFailed | challengeBypassed | jschallengeSolved | jschallengeFailed | jschallengeBypassed | bypass
      type: array
      element:
        type: string
    - name: FirewallMatchesRuleIDs
      description: 요청과 일치한 방화벽 제품의 RuleIDs 배열입니다. RuleID와 연관된 방화벽 제품은 FirewallMatchesSources에서 찾을 수 있습니다. 배열의 길이는 FirewallMatchesActions 및 FirewallMatchesSources와 동일합니다.
      type: array
      element:
        type: string
    - name: FirewallMatchesSources
      description: 요청과 일치한 방화벽 제품입니다. 동일한 제품이 여러 번 나타날 수 있으며, 이는 서로 다른 룰 또는 작업이 활성화되었음을 의미합니다. RuleIDs는 FirewallMatchesRuleIDs에서, 작업은 FirewallMatchesActions에서 찾을 수 있습니다. 배열의 길이는 FirewallMatchesRuleIDs 및 FirewallMatchesActions와 동일합니다. 가능한 소스: asn | country | ip | ipRange | securityLevel | zoneLockdown | waf | firewallRules | uaBlock | rateLimit |bic | hot | l7ddos | sanitycheck | protect
      type: array
      element:
        type: string
    - name: JA3Hash
      description: SSL/TLS 클라이언트를 프로파일링하는 데 사용되는 JA3 핑거프린트의 MD5 해시입니다. Logpush v2에서만 제공됩니다.
      type: string
      indicators:
        - md5
    - name: OriginDNSResponseTimeMs
      description: 원본 이름에 대한 DNS 응답을 수신하는 데 걸린 시간입니다. 보통 몇 밀리초가 걸리지만 CNAME 레코드를 사용하면 더 길어질 수 있습니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: OriginIP
      description: 원본 서버의 IP
      type: string
      indicators:
        - ip
    - name: OriginRequestHeaderSendDurationMs
      description: 연결을 설정한 후 원본에 요청 헤더를 보내는 데 걸린 시간입니다. 이 값은 일반적으로 0입니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: OriginResponseBytes
      description: 원본 서버가 반환한 바이트 수
      type: bigint
    - name: OriginResponseDurationMs
      description: 업스트림 응답 시간으로, 요청을 수신한 첫 번째 데이터 센터에서 측정됩니다. Argo Smart Routing과 Tiered Cache에 걸린 시간, 그리고 원본 서버에 연결하고 응답을 받는 데 걸린 시간을 포함합니다. 이 필드는 OriginResponseTime을 대체합니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: OriginResponseHeaderReceiveDurationMs
      description: Cloudflare가 요청 헤더 전송을 완료한 후 원본이 응답 헤더를 반환하는 데 걸린 시간입니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: OriginResponseHTTPExpires
      description: RFC1123 형식의 원본 'expires' 헤더 값
      type: timestamp
      timeFormats:
        - '%a, %d %b %Y %H:%M:%S %Z'
    - name: OriginResponseHTTPLastModified
      description: RFC1123 형식의 원본 'last-modified' 헤더 값
      type: timestamp
      timeFormats:
        - '%a, %d %b %Y %H:%M:%S %Z'
    - name: OriginResponseStatus
      description: 원본 서버가 반환한 상태
      type: smallint
    - name: OriginResponseTime
      description: 원본이 응답을 엣지로 반환하는 데 걸린 나노초 수
      type: bigint
    - name: OriginSSLProtocol
      description: 원본에 연결할 때 사용된 SSL(TLS) 프로토콜
      type: string
    - name: OriginTCPHandshakeDurationMs
      description: 원본과 TCP 핸드셰이크를 완료하는 데 걸린 시간입니다. 원본 연결이 재사용되면 0입니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: OriginTLSHandshakeDurationMs
      description: 원본과 TLS 핸드셰이크를 완료하는 데 걸린 시간입니다. 원본 연결이 재사용되면 0입니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: ParentRayID
      description: 이 요청이 Worker 스크립트를 사용해 이루어진 경우 상위 요청의 Ray ID
      type: string
      indicators:
        - trace_id
    - name: RayID
      description: 요청의 ID
      type: string
      indicators:
        - trace_id
    - name: RequestHeaders
      description: RequestHeaders의 문자열 key-value 쌍
      type: json
    - name: ResponseHeaders
      description: ResponseHeaders의 문자열 key-value 쌍
      type: json
    - name: SecurityAction
      description: 종료 작업을 트리거한 보안 룰의 룰 작업입니다(있는 경우).
      type: string
    - name: SecurityActions
      description: Cloudflare 보안 제품이 이 요청에 대해 수행한 작업 배열입니다. 이 작업과 관련된 개별 보안 제품은 FirewallMatchesSources에서 찾을 수 있으며, 해당 RuleIds는 FirewallMatchesRuleIDs에서 찾을 수 있습니다. 배열의 길이는 FirewallMatchesRuleIDs 및 FirewallMatchesSources와 동일합니다. 가능한 작업: allow | log | simulate | drop | challenge | jschallenge | connectionClose | challengeSolved | challengeFailed | challengeBypassed | jschallengeSolved | jschallengeFailed | jschallengeBypassed | bypass
      type: array
      element:
        type: string
    - name: SecurityLevel
      description: 이 요청 시점에 구성된 보안 수준입니다. IP Reputation 시스템의 민감도를 결정하는 데 사용됩니다.
      type: string
    - name: SecurityRuleDescription
      description: 종료 작업을 트리거한 보안 룰의 룰 설명(있는 경우)
      type: string
    - name: SecurityRuleID
      description: 종료 작업을 트리거한 보안 룰의 룰 ID(있는 경우)
      type: string
    - name: SecurityRuleIDs
      description: 요청과 일치한 보안 룰 ID 배열입니다. RuleID와 연관된 방화벽 제품은 FirewallMatchesSources에서 찾을 수 있습니다. 배열의 길이는 FirewallMatchesActions 및 FirewallMatchesSources와 동일합니다.
      type: array
      element:
        type: string
    - name: SecuritySources
      description: 요청과 일치한 Cloudflare 보안 제품 배열입니다. 동일한 제품이 여러 번 나타날 수 있으며, 이는 서로 다른 룰 또는 작업이 활성화되었음을 의미합니다. RuleIDs는 FirewallMatchesRuleIDs에서, 작업은 FirewallMatchesActions에서 찾을 수 있습니다. 배열의 길이는 FirewallMatchesRuleIDs 및 FirewallMatchesActions와 동일합니다. 가능한 소스: asn | country | ip | ipRange | securityLevel | zoneLockdown | waf | firewallRules | uaBlock | rateLimit |bic | hot | l7ddos | sanitycheck | protect
      type: array
      element:
        type: string
    - name: SmartRouteColoID
      description: Argo Smart Routing을 사용하는 경우 원본 서버에 연결하는 데 사용된 Cloudflare 데이터 센터입니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: UpperTierColoID
      description: Tiered Cache를 사용하는 경우 캐시된 복사본이 있는지 확인한 “상위 계층” 데이터 센터입니다. Logpush v2에서만 제공됩니다.
      type: bigint
    - name: WAFAction
      description: 트리거된 경우 WAF가 취한 작업
      type: string
    - name: WAFAttackScore
      description: WAF 디택션 모듈이 생성한 전체 요청 점수.
      type: bigint
    - name: WAFFlags
      description: '추가 구성 플래그: simulate (0x1) | null'
      type: string
    - name: WAFMatchedVar
      description: 가장 최근에 일치한 변수의 전체 이름
      type: string
    - name: WAFProfile
      description: low | med | high
      type: string
    - name: WAFRCEAttackScore
      description: RCE 공격에 대한 WAF 점수.
      type: bigint
    - name: WAFRuleID
      description: 적용된 WAF 룰의 ID
      type: string
    - name: WAFRuleMessage
      description: 트리거된 룰과 연관된 룰 메시지
      type: string
    - name: WAFSQLiAttackScore
      description: SQLi 공격에 대한 WAF 점수.
      type: bigint
    - name: WAFXSSAttackScore
      description: XSS 공격에 대한 WAF 점수.
      type: bigint
    - name: WorkerCPUTime
      description: Worker 실행에 소요된 시간(마이크로초)입니다. 해당하는 경우입니다.
      type: bigint
    - name: WorkerStatus
      description: Worker 데몬에서 반환된 상태
      type: string
    - name: WorkerSubrequest
      description: 이 요청이 Worker 하위 요청인지 여부
      type: boolean
    - name: WorkerSubrequestCount
      description: 이 요청을 처리할 때 Worker가 발행한 하위 요청 수
      type: bigint
    - name: WorkerWallTimeUs
      description: Worker 호출 시작과 종료 사이에 경과한 실제 시간(마이크로초).
      type: bigint
    - name: ZoneID
      description: 내부 영역 ID
      type: bigint
    - name: ZoneName
      description: 영역의 사람이 읽을 수 있는 이름(예: cloudflare.com). Logpush v2에서만 제공됩니다.
      type: string
    - name: JA4
      description: SSL/TLS 클라이언트를 프로파일링하는 데 사용되는 JA4 핑거프린트.
      type: string
    - name: JA4Signals
      description: 이 JA4 핑거프린트에 대해 계산된 요청 간 통계입니다. JA4Signals 필드는 key:value 쌍으로 구성되며, 값은 숫자입니다.
      type: json
    - name: LeakedCredentialCheckResult
      description: 유출된 자격 증명 검사 결과.
      type: string
```

### Cloudflare.Spectrum

Cloudflare UI에서 이벤트 필드를 선택할 때 Panther에서 필요로 하는 "Timestamp" 필드를 반드시 포함하세요.

참조: [Cloudfare 로그 필드 Spectrum 이벤트에 대한 문서.](https://developers.cloudflare.com/logs/reference/log-fields/#spectrum-events)

```yaml
schema: Cloudflare.Spectrum
description: Cloudflare Spectrum 로그입니다. Cloudflare UI에서 이벤트 필드를 선택할 때 Panther에서 필요로 하는 "Timestamp" 필드를 반드시 포함하세요.
referenceURL: https://developers.cloudflare.com/logs/log-fields#spectrum-events
fields:
    - name: Application
      description: 이벤트가 발생한 애플리케이션의 고유 공개 ID
      type: string
    - name: ClientASN
      description: 클라이언트 AS 번호
      type: bigint
    - name: ClientBytes
      description: Spectrum 서비스가 클라이언트로부터 읽은 바이트 수
      type: bigint
    - name: ClientCountry
      description: 클라이언트 IP 주소의 국가
      type: string
    - name: ClientIP
      description: 클라이언트의 IP 주소
      type: string
      indicators:
        - ip
    - name: ClientMatchedIpFirewall
      description: 연결이 어떤 IP Firewall 룰과 일치했는지 여부; UNKNOWN | ALLOW | BLOCK_ERROR | BLOCK_IP | BLOCK_COUNTRY | BLOCK_ASN | WHITELIST_IP |WHITELIST_COUNTRY | WHITELIST_ASN
      type: string
    - name: ClientPort
      description: 클라이언트 포트
      유형: int
    - name: ClientProto
      description: 클라이언트가 사용한 전송 프로토콜; tcp | udp | unix
      type: string
    - name: ClientTcpRtt
      description: 클라이언트와 Spectrum 사이의 TCP 왕복 시간(나노초)
      type: bigint
    - name: ClientTlsCipher
      description: 클라이언트와 Spectrum 사이에 협상된 암호화 스위트
      type: string
    - name: ClientTlsClientHelloServerName
      description: 클라이언트에서 Spectrum으로 보낸 Client Hello 메시지의 서버 이름
      type: string
    - name: ClientTlsProtocol
      description: 클라이언트와 Spectrum 사이에 협상된 TLS 버전; unknown | none | SSLv3 | TLSv1 | TLSv1.1 | TLSv1.2 | TLSv1.3
      type: string
    - name: ClientTlsStatus
      description: 클라이언트에서 Spectrum으로의 TLS 세션 상태를 나타냅니다; UNKNOWN | OK | INTERNAL_ERROR | INVALID_CONFIG | INVALID_SNI | HANDSHAKE_FAILED | KEYLESS_RPC
      type: string
    - name: ColoCode
      description: 요청을 수신한 데이터 센터의 IATA 공항 코드
      type: string
    - name: ConnectTimestamp
      description: 연결의 양쪽 구간(client/edge, edge/origin 또는 nexthop)이 모두 설정된 시각의 타임스탬프
      type: timestamp
      timeFormats:
        - cloudflare
    - name: DisconnectTimestamp
      description: 연결이 종료된 시각의 타임스탬프
      type: timestamp
      timeFormats:
        - cloudflare
    - name: Event
      description: connect | disconnect | clientFiltered | tlsError | resolveOrigin | originError
      type: string
    - name: IpFirewall
      description: 연결 시점에 IP Firewall이 활성화되어 있었는지 여부
      type: boolean
    - name: OriginBytes
      description: Spectrum이 원본에서 읽은 바이트 수
      type: bigint
    - name: OriginIP
      description: 원본 IP 주소
      type: string
      indicators:
        - ip
    - name: OriginPort
      description: 원본 포트
      유형: int
    - name: OriginProto
      description: 원본이 사용한 전송 프로토콜; tcp | udp | unix
      type: string
    - name: OriginTcpRtt
      description: Spectrum과 원본 사이의 TCP 왕복 시간(나노초)
      type: bigint
    - name: OriginTlsCipher
      description: Spectrum과 원본 사이에 협상된 암호화 스위트
      type: string
    - name: OriginTlsFingerprint
      description: 원본 인증서의 SHA256 해시
      type: string
    - name: OriginTlsMode
      description: 업스트림 연결이 암호화되는지 여부와 방식; unknown | off | flexible | full | strict
      type: string
    - name: OriginTlsProtocol
      description: Spectrum과 원본 사이에 협상된 TLS 버전; unknown | none | SSLv3 | TLSv1 | TLSv1.1 | TLSv1.2 | TLSv1.3
      type: string
    - name: OriginTlsStatus
      설명: Spectrum에서 origin으로의 TLS 세션 상태; UNKNOWN | OK | INTERNAL_ERROR | INVALID_CONFIG | INVALID_SNI | HANDSHAKE_FAILED | KEYLESS_RPC
      type: string
    - 이름: ProxyProtocol
      설명: 주어진 연결에 적용되는 프록시 프로토콜의 형식; off | v1 | v2 | simple
      type: string
    - 이름: Status
      설명: 연결 종료 사유를 나타내는 코드
      type: bigint
    - 이름: Timestamp
      required: true
      설명: 이벤트가 발생한 시각의 타임스탬프
      type: timestamp
      timeFormats:
        - cloudflare
      isEventTime: true
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.panther.com/ko/data-onboarding/supported-logs/cloudflare.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
