# GCP 로그

## 개요

Panther는 수집을 지원합니다 [Google Cloud Platform(GCP)](https://cloud.google.com/) 로그를 일반적인 [데이터 전송](https://docs.panther.com/data-onboarding/data-transports) 옵션을 통해.

{% hint style="info" %}
GCP 로그를 Panther에 연결하려면 다음을 사용하는 것이 권장됩니다. [Pub/Sub 데이터 전송 소스](/ko/data-onboarding/data-transports/google/pubsub.md) 와 [로그 싱크](https://cloud.google.com/logging/docs/routing/overview#sinks)를 함께 사용하면 지연 시간이 가장 짧아져 대략 5분 정도가 됩니다.

대안으로, 다음을 사용하는 경우 [Google Cloud Storage(GCS) 데이터 전송 소스](/ko/data-onboarding/data-transports/google/cloud-storage.md) 를 로그 싱크와 함께 사용하면 로그가 Panther에 시간 단위로만 전달됩니다.
{% endhint %}

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

### 사전 요구 사항

* Google Cloud 서비스에 대한 기본 Data Access 감사 로깅 구성을 설정합니다:
  1. GCP 콘솔에서 다음으로 이동합니다. **IAM 및 관리자** 서비스. 탐색 표시줄에서 다음을 클릭합니다. **감사 로그**.
  2. 을 클릭한 다음 **기본 구성 설정**.\ <img src="/files/75ba469899b73bc9277bf8e0a5fe2857435e6a22" alt="The GCP IAM &#x26; Access console is shown. An arrow is drawn from the &#x22;Audit Log&#x22; option in the navigation bar to a &#x22;Set default configuration&#x22; button." data-size="original">
  3. 다음 **로그 유형** 탭에서 다음 유형의 확인란을 선택합니다. **관리자 읽기**, **데이터 읽기**, 및 **데이터 쓰기**.\
     ![A page title reads "Set default Data Access audit log configuration." Under a "Log types" header are three checked boxes—their labels read "Admin Read," "Data Read," and "Data Write"](/files/d398808956cc58aeddeeb98b3f354413f98b8076)
  4. 을 클릭한 다음 **저장**.

{% hint style="info" %}
Google Cloud 서비스에 대한 기본 Data Access 감사 로그 구성을 설정하는 방법은 GCP 문서에서도 확인할 수 있습니다: [기본 구성 설정](https://cloud.google.com/logging/docs/audit/configure-data-access#config-console-default).
{% endhint %}

### 1단계: Panther에서 Google Cloud 소스 생성

1. Panther Console의 왼쪽 탐색 모음에서 **구성 > 로그 소스**.
2. 을 클릭한 다음 **새로 만들기**.
3. "GCP"를 검색한 다음 Google Cloud 타일을 클릭합니다.
4. 슬라이드아웃 패널에서 **전송 메커니즘** 오른쪽 상단의 드롭다운에서 다음을 선택합니다. **Google Cloud Pub/Sub**.
   * 다음의 어떤 [데이터 전송](/ko/data-onboarding/data-transports.md) 옵션이든 사용할 수 있지만, Pub/Sub를 다음과 함께 사용하는 것이 권장됩니다. [로그 싱크](https://cloud.google.com/logging/docs/routing/overview#sinks)이며, 이는 다음 단계에서 구성하게 됩니다.
5. 선택한 항목을 구성하기 위한 Panther 문서를 따르세요. [데이터 전송](/ko/data-onboarding/data-transports.md).
   * Pub/Sub를 선택한 경우 다음을 따르세요. [Pub/Sub 소스 지침](/ko/data-onboarding/data-transports/google/pubsub.md#how-to-set-up-a-cloud-pub-sub-log-source-in-panther).

### 2단계: GCP가 로그를 데이터 전송 소스로 푸시하도록 구성

* 선택한 데이터 전송 소스로 로그를 전달하는 방법은 GCP 문서를 참조하세요.
  * 다음을 사용하는 경우 [Pub/Sub](/ko/data-onboarding/data-transports/google/pubsub.md) 또는 [Google Cloud Storage](/ko/data-onboarding/data-transports/google/cloud-storage.md) 를 데이터 전송으로 사용하는 경우, [로그 싱크를 구성합니다](https://cloud.google.com/logging/docs/routing/overview#sinks).
    * 로그 싱크에서 포함 또는 제외 필터를 구성하는 방법에 대한 안내는 Panther 지식 베이스 문서를 참조하세요. [GCP 로그에 대한 포함 필터](https://help.panther.com/articles/8343852886-what-inclusion-filter-should-i-use-in-my-gcs-logging-sink-to-only-push-panther-supported-gcp-logs-to-panther) 및 [GCP 통합에서 로그 제외](https://help.panther.com/articles/5981620705-how-can-i-exclude-logs-from-my-panther-gcp-integration).

## 동영상 안내: GCS를 사용한 설정

{% hint style="warning" %}
아래 동영상은 GCP 로그를 다음을 사용해 전달하는 방법을 보여주지만 [GCS](/ko/data-onboarding/data-transports/google/cloud-storage.md), 다음을 사용하는 것이 권장됩니다 [Pub/Sub](/ko/data-onboarding/data-transports/google/pubsub.md) GCS 대신, 더 낮은 지연 시간을 제공하기 때문입니다.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=byp13_x-usg>" %}

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

참조하세요 [Panther에서 관리하는](https://docs.panther.com/detections/panther-managed) Google Cloud Platform용 규칙은 [panther-analysis GitHub 저장소에 있습니다](https://github.com/panther-labs/panther-analysis/tree/main/rules).

## 지원되는 로그 유형

### GCP.AccessTransparency

액세스 투명성 로그는 Google 직원이 고객 콘텐츠에 접근할 때 수행한 활동을 기록합니다. 이러한 로그는 액세스에 대한 근거와 수행된 작업과 같은 사항을 기록함으로써 Google Cloud 지원 운영에 대한 가시성을 제공하고 규정 준수 요구 사항을 충족하는 데 도움을 줍니다.

자세한 내용은 [액세스 투명성 로그에 대한 GCP 문서](https://cloud.google.com/assured-workloads/access-transparency/docs/reading-logs).

```yaml
schema: GCP.AccessTransparency
description: |
  액세스 투명성 로그는 Google 직원이 고객 콘텐츠에 접근할 때 수행한 활동을 기록합니다.
  이러한 로그는 Google Cloud 지원 운영에 대한 가시성을 제공하고 규정 준수 요구 사항을 충족하는 데 도움을 줍니다.
referenceURL: https://cloud.google.com/assured-workloads/access-transparency/docs/reading-logs
fields:
  - name: logName
    required: true
    description: 이 로그 항목이 속한 로그의 리소스 이름입니다.
    type: string
    validate:
      allowContains: ['cloudaudit.googleapis.com%2Faccess_transparency']
  - name: severity
    description: 로그 항목의 심각도입니다. 기본값은 LogSeverity.DEFAULT입니다.
    type: string
  - name: insertId
    description: 로그 항목의 고유 식별자입니다.
    type: string
  - name: resource
    description: 이 로그 항목을 생성한 모니터링된 리소스입니다.
    type: object
    fields:
      - name: type
        required: true
        description: 이 로그 항목을 생성한 리소스의 유형
        type: string
      - name: labels
        description: 리소스를 설명하는 레이블
        type: json
  - name: timestamp
    description: 로그 항목에 설명된 이벤트가 발생한 시간입니다.
    type: timestamp
    timeFormats:
      - rfc3339
    isEventTime: true
  - name: receiveTimestamp
    description: 로그 항목이 Logging에 수신된 시간입니다.
    type: timestamp
    timeFormats:
      - rfc3339
    isEventTime: true
  - name: labels
    description: 로그 항목에 대한 추가 정보를 제공하는 사용자 정의 (키, 값) 데이터 집합입니다.
    type: json
  - name: operation
    description: 해당되는 경우 로그 항목과 관련된 작업에 대한 정보입니다.
    type: object
    fields:
      - name: id
        description: 동일한 식별자를 가진 로그 항목은 동일한 작업의 일부로 간주됩니다.
        type: string
      - name: producer
        description: 임의의 producer 식별자입니다. id와 producer의 조합은 전역적으로 고유해야 합니다.
        type: string
      - name: first
        description: 이는 작업의 첫 번째 항목입니다
        type: boolean
      - name: last
        description: 이는 작업의 마지막 항목입니다
        type: boolean
  - name: trace
    description: 있는 경우 로그 항목과 연결된 trace의 리소스 이름입니다. trace 필드는 로그와 trace를 연결합니다.
    type: string
  - name: spanId
    description: 로그 항목과 연결된 trace 내의 span ID입니다.
    type: string
  - 이름: traceSampled
    설명: 로그 항목과 연결된 트레이스의 샘플링 결정.
    type: boolean
  - 이름: sourceLocation
    설명: 로그 항목과 연결된 소스 코드 위치 정보(있는 경우).
    type: object
    fields:
      - 이름: file
        설명: 소스 파일 이름. 런타임 환경에 따라 단순 이름일 수도 있고 정규화된 전체 이름일 수도 있습니다.
        type: string
      - 이름: line
        설명: 소스 파일 내의 줄. 1부터 시작하며, 0은 사용 가능한 줄 번호가 없음을 나타냅니다.
        type: bigint
      - 이름: function
        설명: 호출되는 함수 또는 메서드의 사람이 읽을 수 있는 이름이며, 클래스나 패키지 이름과 같은 선택적 컨텍스트를 포함할 수 있습니다. 형식은 언어에 따라 달라질 수 있습니다
        type: string
  - name: jsonPayload
    required: true
    description: Access Transparency 로그 페이로드
    type: object
    fields:
      - name: at_sign_type
        required: true
        description: 페이로드의 유형이며, type.googleapis.com/google.cloud.audit.TransparencyLog여야 합니다
        rename:
          from: '@type'
        type: string
      - name: location
        description: 접근자에 대한 지리적 데이터
        type: object
        fields:
          - name: principalOfficeCountry
            description: Google 직원의 상시 근무지 위치에 대한 ISO 3166-1 alpha-2 국가 코드
            type: string
          - 이름: principalEmployingEntity
            설명: Google 직원의 고용 주체(예: Google LLC)
            type: string
          - 이름: principalPhysicalLocationCountry
            설명: 액세스가 시작된 물리적 위치의 ISO 3166-1 alpha-2 국가 코드
            type: string
      - 이름: principalJobTitle
        설명: 리소스에 액세스한 Google 직원의 직무 분류(예: 엔지니어링, 지원)
        type: string
      - 이름: product
        설명: 액세스된 GCP 서비스 목록
        type: array
        element:
          type: string
      - 이름: reason
        설명: 액세스에 대한 정당화 세부 정보
        type: array
        element:
          type: object
          fields:
            - name: type
              description: 이유 분류 (예: CUSTOMER_INITIATED_SUPPORT, GOOGLE_INITIATED_SERVICE, GOOGLE_INITIATED_REVIEW, THIRD_PARTY_DATA_REQUEST, GOOGLE_RESPONSE_TO_PRODUCTION_알러트)
              type: string
            - name: detail
              description: 특정 정당화 텍스트 (예: 사례 번호, 티켓 참조)
              type: string
      - name: permissionDetails
        description: 액세스에 대한 IAM 권한 정보
        type: array
        element:
          type: object
          fields:
            - name: permissionType
              description: 최대 IAM 권한 범주 (admin_read, admin_write, data_read, data_write)
              type: string
            - name: logAccessed
              description: 액세스가 로그 데이터로만 제한되었는지 여부를 나타내는 불리언
              type: boolean
      - name: eventId
        설명: 이 액세스 정당화에 대한 고유한 이벤트 식별자
        type: string
      - 이름: accesses
        설명: Google 직원이 수행한 특정 작업
        type: array
        element:
          type: object
          fields:
            - 이름: methodName
              설명: 작업 유형(표준 API 메서드, 사용자 정의 메서드 또는 GoogleInternal 메서드)
              type: string
            - 이름: resourceName
              설명: 액세스된 전체 리소스 식별자(예: //googleapis.com/storage/buckets/BUCKET_NAME/objects/OBJECT_NAME)
              type: string
      - 이름: accessApprovals
        설명: 이 액세스와 연결된 Access Approval 요청 리소스 이름 목록
        type: array
        element:
          type: string
```

### GCP.AuditLog

GCP.AuditLog 스키마는 Google Cloud 감사 로그의 네 가지 유형을 모두 수집하는 것을 지원합니다:

* [관리 활동 감사 로그](https://cloud.google.com/logging/docs/audit#admin-activity)
* [데이터 액세스 감사 로그](https://cloud.google.com/logging/docs/audit#data-access)
* [시스템 이벤트 감사 로그](https://cloud.google.com/logging/docs/audit#system-event)
* [정책 거부 감사 로그](https://cloud.google.com/logging/docs/audit#policy_denied)

자세한 내용은 [Cloud Audit Logs에 대한 GCP 문서.](https://cloud.google.com/logging/docs/audit)

```yaml
스키마: GCP.AuditLog
description: |
    Cloud Audit Logs는 각 Google Cloud 프로젝트, 폴더, 조직에 대한 감사 로그인 관리 활동, 데이터 액세스, 시스템 이벤트, 정책 거부를 유지합니다.
    Google Cloud 서비스는 Google Cloud 리소스 내에서 "누가, 무엇을, 어디서, 언제 했는가?"라는 질문에 답하는 데 도움이 되도록 이러한 로그에 감사 로그 항목을 기록합니다.
참조 URL: https://cloud.google.com/logging/docs/audit
fields:
    - name: logName
      required: true
      description: 이 로그 항목이 속한 로그의 리소스 이름입니다.
      type: string
    - name: severity
      description: 로그 항목의 심각도입니다. 기본값은 LogSeverity.DEFAULT입니다.
      type: string
    - name: insertId
      description: 로그 항목의 고유 식별자입니다.
      type: string
    - name: resource
      description: 이 로그 항목을 생성한 모니터링된 리소스입니다.
      type: object
      fields:
        - name: type
          required: true
          description: 이 로그 항목을 생성한 리소스의 유형
          type: string
        - name: labels
          description: 리소스를 설명하는 레이블
          type: json
    - name: timestamp
      description: 로그 항목에 설명된 이벤트가 발생한 시간입니다.
      type: timestamp
      timeFormats:
        - rfc3339
      isEventTime: true
    - name: receiveTimestamp
      required: true
      description: 로그 항목이 Logging에 수신된 시간입니다.
      type: timestamp
      timeFormats:
        - rfc3339
      isEventTime: true
    - name: labels
      description: 로그 항목에 대한 추가 정보를 제공하는 사용자 정의 (키, 값) 데이터 집합입니다.
      type: json
    - name: operation
      description: 해당되는 경우 로그 항목과 관련된 작업에 대한 정보입니다.
      type: object
      fields:
        - name: id
          description: 동일한 식별자를 가진 로그 항목은 동일한 작업의 일부로 간주됩니다.
          type: string
        - name: producer
          description: 임의의 producer 식별자입니다. id와 producer의 조합은 전역적으로 고유해야 합니다.
          type: string
        - name: first
          description: 이는 작업의 첫 번째 항목입니다
          type: boolean
        - name: last
          description: 이는 작업의 마지막 항목입니다
          type: boolean
    - name: trace
      description: 있는 경우 로그 항목과 연결된 trace의 리소스 이름입니다. trace 필드는 로그와 trace를 연결합니다.
      type: string
    - 이름: httpRequest
      설명: 해당되는 경우 이 로그 항목과 연결된 HTTP 요청에 대한 정보입니다.
      type: object
      fields:
        - 이름: requestMethod
          설명: 요청 HTTP 메서드입니다.
          type: string
        - 이름: requestURL
          설명: 요청된 URL의 스킴(http, https), 호스트 이름, 경로 및 쿼리 부분입니다.
          type: string
          indicators:
            - url
        - 이름: requestSize
          설명: 요청 헤더와 요청 본문을 포함한 HTTP 요청 메시지의 바이트 크기입니다.
          type: bigint
        - 이름: status
          설명: 응답 HTTP 상태 코드
          type: smallint
        - 이름: responseSize
          설명: 응답 헤더와 응답 본문을 포함하여 클라이언트로 다시 전송된 HTTP 응답 메시지의 바이트 크기입니다.
          type: bigint
        - 이름: userAgent
          설명: 클라이언트가 보낸 사용자 에이전트입니다.
          type: string
        - 이름: remoteIP
          설명: HTTP 요청을 보낸 클라이언트의 IP 주소(IPv4 또는 IPv6)입니다.
          type: string
          indicators:
            - ip
        - 이름: serverIP
          설명: 요청이 전송된 원본 서버의 IP 주소(IPv4 또는 IPv6)입니다.
          type: string
          indicators:
            - ip
        - 이름: referer
          설명: 요청의 리퍼러 URL입니다.
          type: string
          indicators:
            - url
        - 이름: latency
          설명: 요청을 받은 시점부터 응답을 보낸 시점까지의 서버 측 요청 처리 지연 시간(초)입니다.
          type: string
        - 이름: cacheLookup
          설명: 캐시 조회를 시도했는지 여부입니다.
          type: boolean
        - 이름: cacheHit
          설명: 엔터티가 캐시에서 제공되었는지 여부입니다(검증 여부와 관계없음).
          type: boolean
        - 이름: cacheValidatedWithOriginServer
          설명: 엔터티가 캐시에서 제공되었는지 여부입니다(검증 여부와 관계없음).
          type: boolean
        - 이름: cacheFillBytes
          설명: 엔터티가 캐시에서 제공되었는지 여부입니다(검증 여부와 관계없음).
          type: bigint
        - 이름: protocol
          설명: 요청에 사용된 프로토콜입니다.
          type: string
    - name: spanId
      description: 로그 항목과 연결된 trace 내의 span ID입니다.
      type: string
    - 이름: traceSampled
      설명: 로그 항목과 연결된 트레이스의 샘플링 결정.
      type: boolean
    - 이름: sourceLocation
      설명: 로그 항목과 연결된 소스 코드 위치 정보(있는 경우).
      type: object
      fields:
        - 이름: file
          설명: 소스 파일 이름. 런타임 환경에 따라 단순 이름일 수도 있고 정규화된 전체 이름일 수도 있습니다.
          type: string
        - 이름: line
          설명: 소스 파일 내의 줄. 1부터 시작하며, 0은 사용 가능한 줄 번호가 없음을 나타냅니다.
          type: bigint
        - 이름: function
          설명: 호출되는 함수 또는 메서드의 사람이 읽을 수 있는 이름이며, 클래스나 패키지 이름과 같은 선택적 컨텍스트를 포함할 수 있습니다. 형식은 언어에 따라 달라질 수 있습니다
          type: string
    - 이름: protoPayload
      required: true
      설명: AuditLog 페이로드
      type: object
      fields:
        - 이름: '@type'
          required: true
          설명: 페이로드의 유형
          type: string
        - 이름: serviceName
          설명: 작업을 수행하는 API 서비스의 이름
          type: string
        - 이름: methodName
          설명: 서비스 메서드 또는 작업의 이름입니다. API 호출의 경우 API 메서드 이름이어야 합니다.
          type: string
        - 이름: resourceName
          설명: 작업의 대상인 리소스 또는 컬렉션입니다. 이름은 API 서비스 이름을 포함하지 않는 스킴이 없는 URI입니다.
          type: string
        - 이름: numResponseItems
          설명: 해당되는 경우 List 또는 Query API 메서드에서 반환된 항목 수입니다.
          type: bigint
        - 이름: status
          설명: 전체 작업의 상태입니다.
          type: object
          fields:
            - 이름: code
              설명: 상태 코드로, google.rpc.Code의 열거형 값이어야 합니다.
              유형: int
            - name: message
              설명: 개발자용 오류 메시지로, 영어로 되어 있어야 합니다.
              type: string
            - 이름: details
              설명: 오류 세부정보를 전달하는 메시지 목록입니다. API가 사용할 수 있는 공통 메시지 유형 집합이 있습니다.
              type: json
        - 이름: authenticationInfo
          설명: 인증 정보입니다.
          type: object
          fields:
            - 이름: principalSubject
              설명: 요청 당사자 신원의 문자열 표현입니다. 1차 및 3차 당사자 신원 모두에 대해 채워집니다.
              type: string
            - 이름: serviceAccountKeyName
              설명: 요청을 보내는 서비스 계정을 인증하기 위해 자격 증명을 생성하거나 교환하는 데 사용된 서비스 계정 키의 이름입니다. 이는 스킴이 없는 URI 전체 리소스 이름입니다.
              type: string
              indicators:
                - 도메인
            - 이름: principalEmail
              설명: 요청을 보내는 인증된 사용자의 이메일 주소입니다.
              type: string
              indicators:
                - 이메일
            - 이름: authoritySelector
              설명: 있는 경우 요청자가 지정한 권한 선택자입니다. 주체가 이 권한을 사용할 수 있도록 허용되었는지는 보장되지 않습니다.
              type: string
            - 이름: thirdPartyPrincipal
              설명: 요청을 보내는 인증된 사용자의 제3자 식별 정보(있는 경우)입니다. 여기에 표현된 JSON 객체에 프로토타입 대응 항목이 있으면 proto 이름이 @type 속성에 표시됩니다.
              type: json
            - 이름: serviceAccountDelegationInfo
              설명: 요청을 보내는 인증된 서비스 계정의 신원 위임 기록입니다. 여기에는 서비스 계정을 위임하여 GCP 리소스에 액세스하려는 실제 권한 주체에 대한 정보가 포함됩니다. 여러 권한 주체가 있는 경우, 신원 위임 이벤트의 원래 순서를 기준으로 정렬된 것이 보장됩니다.
              type: array
              element:
                type: object
                fields:
                    - 이름: firstPartyPrincipal
                      설명: 실제 권한 주체로서의 1차 당사자(Google) 신원입니다.
                      type: object
                      fields:
                        - 이름: principalEmail
                          설명: Google 계정의 이메일 주소입니다.
                          type: string
                          indicators:
                            - 이메일
                        - 이름: serviceMetadata
                          설명: 서비스 계정을 사용하는 서비스에 대한 메타데이터입니다.
                          type: json
                    - 이름: thirdPartyPrincipal
                      설명: 실제 권한 주체로서의 제3자 신원입니다.
                      type: object
                      fields:
                        - 이름: thirdPartyClaims
                          설명: 제3자 신원에 대한 메타데이터입니다.
                          type: json
                    - 이름: principalSubject
                      설명: 요청 당사자 신원의 문자열 표현입니다.
                      type: string
        - 이름: authorizationInfo
          설명: 인가 정보입니다. 여러 리소스 또는 권한이 관련된 경우 {resource, permission} 튜플마다 하나의 AuthorizationInfo 요소가 있습니다.
          type: array
          element:
            type: object
            fields:
                - name: resource
                  설명: 접근 중인 리소스로, REST 스타일 문자열입니다.
                  type: string
                - 이름: permission
                  설명: 필요한 IAM 권한
                  type: string
                - 이름: granted
                  설명: 리소스 및 권한에 대한 인가가 허용되었는지 여부입니다.
                  type: boolean
                - 이름: resourceAttributes
                  설명: IAM 조건 평가에 사용되는 리소스 속성입니다. 이 필드에는 리소스 유형 및 리소스 이름과 같은 리소스 속성이 포함됩니다. IAM 조건 평가에 사용된 속성의 전체 보기를 얻으려면 사용자는 AuditLog.request_metadata.request_attributes도 확인해야 합니다.
                  type: object
                  fields:
                    - 이름: service
                      설명: 이 리소스가 속한 서비스의 이름으로, 예: pubsub.googleapis.com입니다. 서비스는 실제로 요청을 제공하는 DNS 호스트 이름과 다를 수 있습니다.
                      type: string
                    - 이름: name
                      설명: 서비스에서 리소스의 안정적인 식별자(이름)입니다.
                      type: string
                    - name: type
                      설명: 리소스의 유형입니다. 서로 다른 플랫폼이 리소스를 다르게 정의하므로 구문은 플랫폼마다 다릅니다.
                      type: string
                    - name: labels
                      설명: AWS 리소스 태그 및 Kubernetes 리소스 레이블과 같은 리소스의 레이블 또는 태그입니다.
                      type: string
                    - 이름: uid
                      description: 리소스의 고유 식별자입니다. UID는 서비스 범위 내에서 이 리소스에 대해 시간과 공간 모두에서 고유합니다. 일반적으로 리소스가 성공적으로 생성될 때 서버에 의해 생성되며 변경되어서는 안 됩니다. UID는 리소스 이름 재사용이 있는 리소스를 고유하게 식별하는 데 사용됩니다. 이는 UUID4여야 합니다.
                      type: string
        - name: requestMetadata
          description: 요청에 대한 메타데이터
          type: object
          fields:
            - name: callerIP
              description: 호출자의 IP 주소입니다.
              type: string
              indicators:
                - ip
            - name: callerSuppliedUserAgent
              description: 호출자의 사용자 에이전트입니다. 이 정보는 인증되지 않으므로 그에 맞게 취급해야 합니다.
              type: string
            - name: callerNetwork
              description: 호출자의 네트워크입니다. 네트워크 호스트 프로젝트가 액세스한 리소스와 동일한 GCP 조직(또는 프로젝트)에 속한 경우에만 설정됩니다.
              type: string
            - name: requestAttributes
              description: IAM 조건 평가에 사용되는 요청 속성입니다. 이 필드는 요청 시간 및 요청과 연결된 액세스 수준과 같은 요청 속성을 포함합니다.
              type: json
            - name: destinationAttributes
              description: TCP 연결 수락과 같은 네트워크 활동의 대상입니다.
              type: json
        - name: request
          description: 작업 요청입니다. 여기에는 너무 크거나, 개인정보에 민감하거나, 로그 기록의 다른 곳에 중복되어 있는 등의 일부 요청 매개변수가 포함되지 않을 수 있습니다. 여기 표현된 JSON 객체에 proto 대응 항목이 있는 경우, @type 속성에 proto 이름이 표시됩니다.
          type: json
        - name: response
          description: 작업 응답입니다. 여기에는 너무 크거나, 개인정보에 민감하거나, 로그 기록의 다른 곳에 중복되어 있는 등의 일부 응답 매개변수가 포함되지 않을 수 있습니다. 여기 표현된 JSON 객체에 proto 대응 항목이 있는 경우, @type 속성에 proto 이름이 표시됩니다.
          type: json
        - name: metadata
          description: 현재 감사된 이벤트와 관련된 요청, 응답 및 기타 정보에 대한 기타 서비스별 데이터입니다.
          type: json
        - name: serviceData
          description: 요청, 응답 및 기타 활동에 대한 기타 서비스별 데이터입니다.
          type: json
```

### GCP.DNS

Google Cloud DNS 쿼리 로그에는 Cloud DNS 영역이 수신하는 DNS 쿼리에 대한 상세 정보가 포함됩니다. 이 로그는 쿼리 이름, 소스 및 대상 IP 주소, 프로토콜 정보와 같은 내용을 캡처하여 DNS 활동을 모니터링하고 DNS 관련 문제를 해결하는 데 도움이 됩니다.

자세한 내용은 [DNS 쿼리 로깅에 대한 GCP 문서](https://cloud.google.com/dns/docs/monitoring).

```yaml
schema: GCP.DNS
description: Google Cloud DNS 쿼리 로그에는 Cloud DNS 영역이 수신하는 DNS 쿼리에 대한 상세 정보가 포함됩니다.
referenceURL: https://cloud.google.com/dns/docs/monitoring
fields:
  - name: alias_query_response_code
    type: string
  - name: egressError
    type: string
  - name: healthyIps
    type: string
  - name: unHealthyIps
    type: string
  - name: insertId
    required: true
    type: string
  - name: jsonPayload
    required: true
    type: object
    fields:
      - name: authAnswer
        type: boolean
      - name: dns64Translated
        type: boolean
        description: 응답이 DNS64를 사용하여 IPv4 주소에서 IPv6 주소로 변환되었는지 여부를 나타냅니다.
      - name: serverLatency
        type: float
      - name: queryName
        type: string
        indicators:
          - 도메인
      - name: vmProjectId
        type: string
      - name: vmZoneName
        type: string
      - name: vmInstanceName
        type: string
      - name: vmInstanceId
        type: float
        description: 숫자 VM 인스턴스 ID입니다. float 표현 때문에 매우 큰 값에서는 정밀도가 손실될 수 있습니다. 정확한 값은 vmInstanceIdString을 사용하세요.
      - name: vmInstanceIdString
        type: string
        description: 전체 정밀도를 가진 VM 인스턴스 ID의 문자열 표현입니다.
      - name: responseCode
        type: string
      - name: destinationIP
        type: string
        indicators:
          - ip
      - 이름: protocol
        type: string
      - name: structuredRdata
        type: array
        element:
          type: object
          fields:
            - name: class
              type: string
            - name: ttl
              type: string
            - name: domainName
              type: string
              indicators:
                - 도메인
            - name: rvalue
              type: string
            - name: type
              type: string
      - 이름: queryType
        type: string
      - 이름: sourceIP
        type: string
        indicators:
          - ip
      - 이름: sourceNetwork
        type: string
      - 이름: egressIP
        type: string
        indicators:
          - ip
      - 이름: rdata
        type: json
        설명: 다양한 형식의 DNS 응답 데이터입니다. DNS 레코드 필드가 포함된 객체일 수도 있고, NXDOMAIN 응답의 경우 빈 문자열일 수도 있으며, 완전히 생략될 수도 있습니다.
  - name: resource
    required: true
    type: object
    fields:
      - name: type
        required: true
        type: string
      - name: labels
        type: object
        fields:
          - 이름: target_type
            type: string
          - name: location
            type: string
          - 이름: source_type
            type: string
          - 이름: project_id
            type: string
          - 이름: target_name
            type: string
  - name: timestamp
    type: timestamp
    timeFormats:
      - rfc3339
    isEventTime: true
  - name: severity
    required: true
    type: string
  - name: logName
    required: true
    type: string
    validate:
      allowContains: ['dns.googleapis.com%2Fdns_queries']
  - name: receiveTimestamp
    required: true
    type: timestamp
    timeFormats:
      - rfc3339
```

### GCP.Firewall

Google Cloud VPC 방화벽 규칙 로깅을 사용하면 방화벽 규칙의 효과를 감사, 검증 및 분석할 수 있습니다. 이 로그는 방화벽 규칙과 일치하는 네트워크 연결에 대한 정보를 캡처합니다.

자세한 내용은 [VPC 방화벽 규칙 로깅에 대한 GCP 문서](https://cloud.google.com/vpc/docs/firewall-rules-logging).

```yaml
schema: GCP.Firewall
description: Google Cloud VPC 방화벽 규칙 로깅을 사용하면 방화벽 규칙의 효과를 감사, 검증 및 분석할 수 있습니다.
referenceURL: https://cloud.google.com/vpc/docs/firewall-rules-logging
fields:
  - name: insertId
    required: true
    type: string
  - name: jsonPayload
    required: true
    type: object
    fields:
      - name: connection
        type: object
        fields:
          - name: dest_ip
            type: string
            indicators:
              - ip
          - name: dest_port
            type: bigint
          - 이름: protocol
            type: bigint
          - 이름: src_ip
            type: string
            indicators:
              - ip
          - 이름: src_port
            type: bigint
      - 이름: disposition
        type: string
      - 이름: instance
        type: object
        fields:
          - 이름: project_id
            type: string
          - 이름: region
            type: string
          - 이름: vm_name
            type: string
          - 이름: zone
            type: string
      - 이름: remote_instance
        type: object
        fields:
          - 이름: project_id
            type: string
          - 이름: region
            type: string
          - 이름: vm_name
            type: string
          - 이름: zone
            type: string
      - 이름: remote_location
        type: object
        fields:
          - 이름: city
            type: string
          - 이름: 대륙
            type: string
          - 이름: 국가
            type: string
          - 이름: region
            type: string
      - 이름: 원격_VPC
        type: object
        fields:
          - 이름: project_id
            type: string
          - 이름: 서브네트워크_이름
            type: string
          - 이름: VPC_이름
            type: string
      - 이름: 룰_세부정보
        type: object
        fields:
          - 이름: 동작
            type: string
          - 이름: 대상_주소_그룹
            type: array
            element:
              type: string
          - 이름: 대상_FQDN
            type: array
            element:
              type: string
              indicators:
                - 도메인
          - 이름: 대상_범위
            type: array
            element:
              type: string
          - 이름: destination_region_code
            type: array
            element:
              type: string
          - 이름: destination_threat_intelligence
            type: array
            element:
              type: string
          - 이름: direction
            type: string
          - 이름: ip_port_info
            type: array
            element:
              type: object
              fields:
                - 이름: ip_protocol
                  type: string
                - 이름: port_range
                  type: array
                  element:
                    type: string
          - 이름: priority
            type: bigint
          - 이름: reference
            type: string
          - 이름: source_address_groups
            type: array
            element:
              type: string
          - 이름: source_fqdn
            type: array
            element:
              type: string
              indicators:
                - 도메인
          - name: source_range
            type: array
            element:
              type: string
          - name: source_region_code
            type: array
            element:
              type: string
          - name: source_service_account
            type: array
            element:
              type: string
          - name: source_tag
            type: array
            element:
              type: string
          - name: source_threat_intelligence
            type: array
            element:
              type: string
          - name: target_service_account
            type: array
            element:
              type: string
          - name: target_tag
            type: array
            element:
              type: string
      - name: vpc
        type: object
        fields:
          - 이름: project_id
            type: string
          - 이름: 서브네트워크_이름
            type: string
          - 이름: VPC_이름
            type: string
  - name: logName
    required: true
    type: string
    validate:
      allowContains: ['compute.googleapis.com%2Ffirewall']
  - name: receiveTimestamp
    required: true
    type: timestamp
    timeFormats:
      - rfc3339
  - name: resource
    required: true
    type: object
    fields:
      - name: labels
        type: object
        fields:
          - name: firewall_룰_id
            type: string
          - name: location
            type: string
          - 이름: project_id
            type: string
          - name: subnetwork_id
            type: string
          - 이름: 서브네트워크_이름
            type: string
      - name: type
        required: true
        type: string
  - name: timestamp
    type: timestamp
    timeFormats:
      - rfc3339
    isEventTime: true
```

### GCP.HTTPLoadBalancer

External HTTP(S) Load Balancing은 Compute Engine, Google Kubernetes Engine(GKE), Cloud Storage 등 다양한 Google Cloud 플랫폼에서 호스팅되는 백엔드와 인터넷을 통해 또는 하이브리드 연결로 연결된 외부 백엔드로 HTTP 및 HTTPS 트래픽을 분산합니다. HTTP(S) 로드 밸런싱 로그는 웹 트래픽을 모니터링하고 디버깅하는 데 유용한 정보를 제공합니다.

자세한 내용은 [HTTPLoadBalancer](https://cloud.google.com/load-balancing/docs/https/https-logging-monitoring) 문서.

```yaml
schema: GCP.HTTPLoadBalancer
parser:
  native:
    name: GCP.HTTPLoadBalancer
fields:
  - 이름: httpRequest
    required: true
    description: httpRequest
    type: object
    fields:
      - 이름: referer
        description: referer
        type: string
        indicators:
          - url
      - 이름: latency
        required: true
        description: latency
        type: string
      - name: remoteIp
        required: true
        description: remoteIp
        type: string
        indicators:
          - ip
      - 이름: requestMethod
        required: true
        description: requestMethod
        type: string
      - 이름: requestSize
        required: true
        description: requestSize
        type: bigint
      - name: requestUrl
        required: true
        description: requestUrl
        type: string
        indicators:
          - url
      - 이름: responseSize
        description: responseSize
        type: bigint
      - name: serverIp
        description: serverIp
        type: string
        indicators:
          - ip
      - 이름: status
        description: status
        type: bigint
      - 이름: userAgent
        description: userAgent
        type: string
  - name: insertId
    required: true
    description: insertId
    type: string
  - name: jsonPayload
    required: true
    description: jsonPayload
    type: json
  - name: logName
    required: true
    description: logName
    type: string
  - name: receiveTimestamp
    required: true
    description: receiveTimestamp
    type: timestamp
    timeFormat: rfc3339
  - name: resource
    required: true
    description: resource
    type: object
    fields:
      - name: labels
        required: true
        description: labels
        type: object
        fields:
          - name: backend_service_name
            required: true
            description: backend_service_name
            type: string
          - name: forwarding_룰_name
            required: true
            description: forwarding_룰_name
            type: string
          - 이름: project_id
            required: true
            description: project_id
            type: string
          - name: target_proxy_name
            required: true
            description: target_proxy_name
            type: string
          - name: url_map_name
            required: true
            description: url_map_name
            type: string
          - 이름: zone
            required: true
            description: zone
            type: string
      - name: type
        required: true
        description: type
        type: string
  - name: severity
    required: true
    설명: 심각도
    type: string
  - name: spanId
    required: true
    설명: spanId
    type: string
  - name: timestamp
    required: true
    설명: 타임스탬프
    type: timestamp
    timeFormat: rfc3339
    isEventTime: true
  - name: trace
    required: true
    설명: 추적
    type: string
    indicators:
      - trace_id
```


---

# 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/gcp.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.
