# Snowflake 감사 로그

## 개요

Panther는 가져올 수 있습니다 [Snowflake](https://www.snowflake.com/en/) 뷰를 쿼리하여 감사 정보를 [`ACCOUNT_USAGE` 스키마에서 살펴보겠습니다](https://docs.snowflake.com/en/sql-reference/account-usage) 에서 `SNOWFLAKE` 데이터베이스(또는 사용자 지정 데이터베이스/스키마의 유사한 이름의 뷰)에서 확인할 수 있습니다. 이러한 뷰의 데이터는 Snowflake의 "state data"로 보강할 수 있습니다. 자세한 내용은 [Snowflake Enrichment](/ko/enrichment/snowflake.md).

{% hint style="info" %}
이 통합을 사용하여 모든 Snowflake 인스턴스를 모니터링할 수 있지만, Panther에 연결된 Snowflake 인스턴스를 모니터링하려면 대신 [예약 검색](/ko/search/scheduled-searches.md)을 사용하는 것이 권장됩니다—참조 [예약 검색 예제](/ko/search/scheduled-searches/examples.md#database-snowflake-monitoring).
{% endhint %}

모든 Snowflake 클라우드 또는 리전의 데이터베이스를 모니터링할 수 있지만, 이러한 요소는 [생성 비용](#cost-considerations).

사용 가능한 뷰에는 다음이 포함됩니다:

* [ACCESS\_HISTORY](https://docs.snowflake.com/en/sql-reference/account-usage/access_history)
* [DATA\_TRANSFER\_HISTORY](https://docs.snowflake.com/en/sql-reference/account-usage/data_transfer_history)
* [LOGIN\_HISTORY](https://docs.snowflake.com/en/sql-reference/account-usage/login_history)
* [QUERY\_HISTORY](https://docs.snowflake.com/en/sql-reference/account-usage/query_history)
* [SESSIONS](https://docs.snowflake.com/en/sql-reference/account-usage/sessions)

{% hint style="warning" %}
다음 [ACCESS\_HISTORY 뷰](https://docs.snowflake.com/en/sql-reference/account-usage/access_history) 에는 [Snowflake Enterprise Edition](https://docs.snowflake.com/en/user-guide/intro-editions) 이상 버전이 필요합니다.
{% endhint %}

### 지연 시간

전체 데이터 지연 시간은 Snowflake 지연 시간과 Panther 지연 시간의 조합입니다:

* 지연 시간은 사용 가능한 각 Snowflake 뷰마다 다르며, 경우에 따라 최대 3시간까지 걸릴 수 있습니다. 각 뷰의 지연 시간을 확인하려면 **지연 시간** 열을 참조하세요. **ACCOUNT\_USAGE 뷰의** 테이블에서 [이 Snowflake 문서](https://docs.snowflake.com/en/sql-reference/account-usage#account-usage-views).
* Panther는 최소 1시간의 지연 시간을 추가합니다.

### 비용 고려 사항

이 통합을 사용하여 발생하는 Snowflake 컴퓨팅 비용은 다음을 포함한 여러 요인의 영향을 받습니다:

* 다음 [웨어하우스](https://docs.snowflake.com/en/user-guide/warehouses) Panther가 사용하도록 선택한
  * Panther는 데이터를 가져오기 위해 쿼리를 실행해야 하므로, 활성 웨어하우스를 사용해야 합니다.
  * **비용은 다음과 같이 최소화할 수 있습니다**: 이미 실행 중인 웨어하우스를 선택합니다.
* 데이터 새로고침 간격
  * Panther에서 로그 소스를 설정할 때 Snowflake에서 데이터를 얼마나 자주 가져올지 선택합니다. 이 간격은 1분마다부터 최대 24시간마다까지 설정할 수 있습니다. 원하는 지연 시간과 비용의 균형에 맞게 이 간격을 설정해야 합니다.
  * **비용은 다음과 같이 최소화할 수 있습니다**: 더 긴 새로고침 간격을 선택합니다.
* 모니터링 중인 Snowflake 인스턴스의 클라우드 및 리전이 Panther Snowflake 인스턴스와 같은지 여부
  * **비용은 다음과 같이 최소화할 수 있습니다**: 클라우드와 리전이 Panther Snowflake 인스턴스와 동일함.

Snowflake의 [전체 비용 이해하기](https://docs.snowflake.com/en/user-guide/cost-understanding-overall) 문서에 설명된 Snowflake SQL 구문을 사용해야 합니다.

### 제한 사항

다음을 초과하는 Snowflake 감사 로그 이벤트는 [Panther의 15MB 제한](/ko/data-onboarding.md#data-ingestion-size-limit) 에 의해 건너뛰게 됩니다.

## Snowflake 감사 로그를 Panther로 온보딩하는 방법

초기 통합을 설정한 후에는 [Snowflake 사용자와 연결된 RSA 키를 교체할 수 있습니다](#how-to-rotate-the-rsa-key-of-an-existing-snowflake-audit-logs-source).

### 사전 요구 사항

이 통합을 구성하려면 다음이 필요합니다:

* 다음 항목을 가지고 있어야 합니다 [Snowflake 계정 식별자](https://docs.snowflake.com/en/user-guide/admin-account-identifier). 다음과 같이 마침표가 아니라 하이픈으로 형식이 지정되어 있어야 합니다: `<org_name>-<account_name>`
* 다음과 같은 Snowflake [웨어하우스](https://docs.snowflake.com/en/user-guide/warehouses) Panther가 데이터를 가져오기 위해 쿼리를 실행하는 데 사용할 수 있는
* Snowflake에서 다음을 보유해야 합니다 `CREATE USER` , `CREATE ROLE`, 그리고 `GRANT USAGE` 권한
  * 이 항목은 Panther가 사용할 Snowflake 서비스 사용자를 생성하려는 경우에만 필요합니다. Panther가 사용할 수 있는 서비스 사용자가 이미 있다면, 이러한 권한은 필요하지 않습니다.

### 1단계: Snowsight에서 worksheet 만들기

{% hint style="info" %}
이 단계는 Panther가 데이터를 가져오는 데 사용할 수 있는 Snowflake 서비스 사용자를 생성해야 하는 경우에만 필요합니다. Panther가 사용할 수 있는 서비스 사용자가 이미 있다면 이 단계를 건너뛰세요.
{% endhint %}

* Snowsight에서 [worksheet 만들기](https://docs.snowflake.com/en/user-guide/ui-snowsight-worksheets-gs#create-worksheets-in-sf-web-interface) 과 `CREATE USER` , `CREATE ROLE`, 그리고 `GRANT USAGE` 권한.

### 2단계: Panther에서 새로운 Snowflake 로그 소스 만들기

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **구성** > **로그 소스**.
2. 다음을 클릭하세요. **새로 만들기.**
3. “Snowflake Audit Logs”를 검색한 다음 해당 타일을 클릭합니다.
4. 슬라이드아웃 패널에서 다음을 클릭하세요. **설정 시작**.

   <figure><img src="/files/ca0470b583fa8998f697825465101c57c99151ba" alt="An arrow is drawn from a tile titled &#x22;Snowflake Audit Logs&#x22; to a button labeled &#x22;Start Setup.&#x22;" width="563"><figcaption></figcaption></figure>
5. 다음 항목에서 **구성** 페이지에서 다음 필드의 값을 입력합니다:
   * **이름**: 예를 들어 소스에 대한 설명이 있는 이름을 입력합니다. `Snowflake Prod`.
   * **계정 식별자**: 다음 형식으로 Snowflake 계정 식별자를 입력합니다 `<org_name>-<account_name>`.
     * 조직 및 계정 이름 사이에는 마침표가 아니라 하이픈을 사용하세요.
   * **웨어하우스**: Panther가 데이터를 가져오기 위해 쿼리를 실행하는 데 사용할 Snowflake 웨어하우스를 입력합니다.
   * (선택 사항) **사용자 지정 데이터베이스 및 스키마 사용**: 사용자 지정 데이터베이스 및 스키마에 복제된 감사 로그 뷰가 있고, 기본 데이터베이스 대신 해당 뷰를 쿼리하려는 경우 `SNOWFLAKE`, 및 스키마 `ACCOUNT_USAGE`), 이 옵션을 클릭합니다.
     * **데이터베이스**: Panther가 쿼리할 사용자 지정 데이터베이스 이름을 입력합니다.
     * **스키마**: Panther가 쿼리할 사용자 지정 스키마 이름을 입력합니다. \* **매번 실행**: **숫자** 및 **Period** 필드를 사용하여 Panther가 Snowflake에서 데이터를 가져올 간격을 선택합니다.
   * 다음을 참조하세요 [비용 고려 사항](#cost-considerations) 간격이 컴퓨팅 비용에 어떤 영향을 미치는지 알아보려면
   * **모니터링할 로그 유형**: Panther가 가져오길 원하는 Snowflake 뷰를 선택합니다.

{% hint style="warning" %}
사용자 지정 데이터베이스 및 스키마를 사용하는 경우는 드뭅니다. 이는 나중 단계에서 생성할 서비스 역할의 권한을 특정 Snowflake 데이터베이스와 스키마로 제한하고 싶을 때 유용할 수 있습니다.\
\
사용자 지정 데이터베이스 및 스키마를 사용하는 경우, 스키마 내의 뷰 이름은 내장 Snowflake 뷰 이름(에 나열된)과 정확히 일치해야 합니다 [개요](#overview)), Panther가 기대하는 이름이기 때문입니다. 예를 들어, 쿼리 기록 로그를 가져오려면 뷰 이름이 `query_history`.
{% endhint %}

6. 다음을 클릭하세요. **설정.**
7. 다음 항목에서 **자격 증명 설정** 페이지에서 양식 필드를 입력합니다. Panther가 이러한 값에 기반하여 RSA 키를 생성합니다.
   * **사용자 이름**: Panther가 데이터를 가져오는 데 사용할 Snowflake 사용자의 사용자 이름입니다. 기본값은 `PANTHER_AUDIT_VIEW_USER`이지만, 필요에 따라 사용자 지정할 수 있습니다.
     * 이미 Panther가 사용할 서비스 사용자가 있고(새로 만들 필요가 없는 경우), 여기에 해당 사용자 이름을 입력하세요.
   * **역할**: Panther가 데이터를 가져오는 데 사용할 Snowflake 사용자가 보유한 역할의 이름입니다. 기본값은 `PANTHER_AUDIT_VIEW_ROLE`이지만, 필요에 따라 사용자 지정할 수 있습니다.
     * 이미 Panther가 사용할 서비스 역할이 있고(새로 만들 필요가 없는 경우), 여기에 해당 이름을 입력하세요.
8. 이미 Panther가 사용할 서비스 사용자가 있다면 **내 RSA 키를 사용하고 싶습니다**을 클릭한 다음 RSA 키 파일을 업로드하세요.

   <figure><img src="/files/5a7c645f70178f38af8ddc0dbeb6e75a536d48bd" alt="" width="563"><figcaption></figcaption></figure>
9. 다음을 클릭하세요. **다음**.
10. 다음 항목에서 **Enrichment** 페이지에서 수신 로그를 다음 항목 중 하나 이상으로 보강하려는 경우 [지원되는 Snowflake 보강 유형](/ko/enrichment/snowflake.md#supported-enrichment-types), 활성화하려는 각 항목의 타일에서 토글을 클릭하고 `ON` 및 **새로고침 기간(분)**.

    * 최소 새로고침 기간은 60분입니다. 데이터가 자주 변경되지 않는다면 이 값을 늘리는 것이 좋습니다.
    * 이러한 보강 소스 중 하나라도 켜면 **구성** > **Enrichments** 페이지에서 표시됩니다. 자세한 내용은 [Snowflake Enrichment](/ko/enrichment/snowflake.md).

    <figure><img src="/files/e165922230ca7f907e83f4831cb909f5d4d0e37a" alt="Under an &#x22;Enrichment settings&#x22; title, there are six tiles, each with a title, description, an ON/OFF toggle, and a Refresh period (min) field."><figcaption></figcaption></figure>
11. 다음을 클릭하세요. **설정**.
12. 자신의 RSA 키를 업로드하지 않았다면, 생성된 SQL 스니펫으로 Panther가 사용할 서비스 사용자를 만드세요. Panther가 대신 RSA 키를 생성하며 공개 부분만 표시합니다.
    1. 생성된 SQL 스니펫을 복사합니다.
    2. 다음 위치에서 SQL 스니펫을 실행합니다 [Snowsight worksheet](https://docs.snowflake.com/en/user-guide/ui-snowsight-worksheets-gs).
    3. 다음을 클릭하세요. **설정**.
13. 모든 것이 올바르면 성공 화면으로 이동합니다:

    <figure><img src="/files/e0820e5acb9452e294cfe3ba72060f0fbbfd3b32" alt="The success screen reads, &#x22;Everything looks good! Panther will now automatically pull &#x26; process logs from your account&#x22;" width="281"><figcaption></figcaption></figure>

    * 선택적으로 하나 이상의 [디택션 팩](https://docs.panther.com/detections/panther-managed/packs).
    * 다음 **이벤트가 처리되지 않을 때 알러트 트리거** 설정 기본값은 **예**. 이 기능은 일정 시간이 지난 후 로그 소스에서 데이터 흐름이 중단되면 알림을 받을 수 있으므로 활성화된 상태로 두는 것을 권장합니다. 시간 범위는 구성 가능하며 기본값은 24시간입니다.

      <figure><img src="/files/7db146cd7acee3d0704a4a8b2157f230cfa22168" alt="The &#x22;Trigger an alert when no events are processed&#x22; toggle is set to YES. The &#x22;How long should Panther wait before it sends you an alert that no events have been processed&#x22; setting is set to 1 Day" width="320"><figcaption></figcaption></figure>

## 기존 Snowflake Audit Logs 소스의 RSA 키를 교체하는 방법

기존 Snowflake Audit Logs 소스에 연결된 Snowflake 사용자의 RSA 키를—들어오는 로그 흐름을 중단하지 않고—교체하려면:

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **구성** > **로그 소스**.
2. 다음에서 **로그 소스** 목록에서 업데이트하려는 Snowflake Audit logs 소스를 찾은 다음 이름을 클릭합니다.
3. 로그 소스의 세부 정보 페이지에서 **구성** 탭을 클릭한 다음 **편집**.

   <figure><img src="/files/1e15b937808402800deb68c1b1b01fbd376f6d19" alt="Under a &#x22;Snowflake audit logs source,&#x22; an arrow is drawn from a &#x22;Configuration&#x22; tab to an &#x22;Edit&#x22; button."><figcaption></figcaption></figure>
4. 다음을 클릭하세요. **자격 증명 설정**.
5. 다음을 클릭하세요. **RSA 키 교체**.

   <figure><img src="/files/e75dc776d50ec789b88885da9d7905c3ea75d5a0" alt="An arrow is drawn from a &#x22;Set Credentials&#x22; button to a &#x22;Rotate RSA Key&#x22; button."><figcaption></figcaption></figure>
6. 다음 항목에서 **RSA 키 교체** 팝업 모달에서 **RSA 키 교체**.
7. 제공된 **RSA 키 교체 SQL**을 복사한 다음 다음에서 실행합니다 [Snowsight worksheet](https://docs.snowflake.com/en/user-guide/ui-snowsight-worksheets-gs) (예: 다음과 같은 권한 있는 사용자를 사용하여 `ACCOUNTADMIN`).
8. Panther에서 다음을 클릭합니다 **저장**.

## 지원되는 로그 유형

### Snowflake.AccessHistory

```yaml
스키마: Snowflake.AccessHistory
설명: Snowflake 접근 기록 로그
referenceURL: https://docs.snowflake.com/en/sql-reference/account-usage/access_history
fields:
  - name: BASE_OBJECTS_ACCESSED
    설명: 쿼리 중 접근된 기본 객체 목록
    type: array
    element:
      type: json
  - name: DIRECT_OBJECTS_ACCESSED
    설명: 쿼리 중 접근된 직접 객체 목록
    type: array
    element:
      type: json
  - name: OBJECTS_MODIFIED
    설명: 쿼리 중 수정된 객체 목록
    type: array
    element:
      type: json
  - name: POLICIES_REFERENCED
    설명: 쿼리 중 참조된 정책 목록
    type: array
    element:
      type: json
  - name: OBJECT_MODIFIED_BY_DDL
    설명: 쿼리 중 DDL에 의해 수정된 객체
    type: json
  - name: QUERY_ID
    설명: 쿼리의 고유 식별자
    type: string
  - name: QUERY_START_TIME
    required: true
    설명: 쿼리 시작 시간
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
    isEventTime: true
  - name: USER_NAME
    설명: 쿼리를 실행한 사용자의 이름
    type: string
    indicators:
      - username
  - name: PARENT_QUERY_ID
    설명: 상위 작업의 쿼리 ID이며, 작업에 상위 작업이 없으면 NULL입니다.
    type: string
  - name: ROOT_QUERY_ID
    설명: 체인에서 가장 상위 작업의 쿼리 ID이며, 작업에 상위 작업이 없으면 NULL입니다.
    type: string
```

### Snowflake.DataTransferHistory

```yaml
스키마: Snowflake.DataTransferHistory
설명: Snowflake 데이터 전송 기록
fields:
    - name: ORGANIZATION_NAME
      required: true
      type: string
    - name: ACCOUNT_NAME
      required: true
      type: string
    - name: ACCOUNT_LOCATOR
      required: true
      type: string
    - name: REGION
      type: string
    - name: USAGE_DATE
      required: true
      type: timestamp
      timeFormats:
        - '%Y-%m-%d %H:%M:%S.%f %z'
      isEventTime: true
    - name: SOURCE_CLOUD
      type: string
    - name: SOURCE_REGION
      type: string
    - name: TARGET_CLOUD
      type: string
    - name: TARGET_REGION
      type: string
    - name: BYTES_TRANSFERRED
      required: true
      유형: bigint
    - name: TRANSFER_TYPE
      type: string
```

### Snowflake.LoginHistory

```yaml
스키마: Snowflake.LoginHistory
설명: Snowflake 로그인 기록 로그
fields:
    - name: CLIENT_IP
      설명: 로그인을 시작한 클라이언트의 IP 주소
      type: string
      indicators:
        - ip
    - name: EVENT_ID
      required: true
      description: 이벤트의 고유 식별자
      type: string
    - name: EVENT_TIMESTAMP
      required: true
      설명: 이벤트의 타임스탬프
      type: timestamp
      timeFormats:
        - '%Y-%m-%d %H:%M:%S.%f %z'
      isEventTime: true
    - name: EVENT_TYPE
      설명: 이벤트 유형(예: LOGIN, LOGOUT)
      type: string
    - name: FIRST_AUTHENTICATION_FACTOR
      설명: 사용된 첫 번째 인증 요소
      type: string
    - name: IS_SUCCESS
      설명: 이벤트가 성공했는지 여부를 나타냄(YES/NO)
      type: string
    - name: RELATED_EVENT_ID
      설명: 관련 이벤트의 식별자(있는 경우)
      type: string
    - name: REPORTED_CLIENT_TYPE
      설명: 보고된 클라이언트 유형
      type: string
    - name: REPORTED_CLIENT_VERSION
      설명: 보고된 클라이언트 버전
      type: string
    - name: USER_NAME
      설명: 이벤트에 관련된 사용자의 이름
      type: string
      indicators:
        - username
```

### Snowflake.QueryHistory

```yaml
스키마: Snowflake.QueryHistory
설명: Snowflake 쿼리 기록 로그
fields:
    - name: BYTES_DELETED
      설명: 삭제된 바이트 수
      유형: bigint
    - name: BYTES_READ_FROM_RESULT
      설명: 결과에서 읽은 바이트 수
      유형: bigint
    - name: BYTES_SCANNED
      설명: 스캔된 바이트 수
      유형: bigint
    - name: BYTES_SENT_OVER_THE_NETWORK
      설명: 네트워크를 통해 전송된 바이트 수
      유형: bigint
    - name: BYTES_SPILLED_TO_LOCAL_STORAGE
      설명: 로컬 저장소로 스필된 바이트 수
      유형: bigint
    - name: BYTES_SPILLED_TO_REMOTE_STORAGE
      설명: 원격 저장소로 스필된 바이트 수
      유형: bigint
    - name: BYTES_WRITTEN
      설명: 기록된 바이트 수
      유형: bigint
    - name: BYTES_WRITTEN_TO_RESULT
      설명: 결과에 기록된 바이트 수
      유형: bigint
    - name: CHILD_QUERIES_WAIT_TIME
      설명: 하위 쿼리 대기 시간
      type: int
    - name: CLUSTER_NUMBER
      설명: 클러스터 번호
      type: int
    - name: COMPILATION_TIME
      설명: 쿼리 컴파일에 걸린 시간
      type: int
    - name: CREDITS_USED_CLOUD_SERVICES
      설명: 클라우드 서비스에 사용된 크레딧
      유형: float
    - name: DATABASE_ID
      설명: 데이터베이스 식별자
      type: string
    - name: DATABASE_NAME
      설명: 데이터베이스 이름
      type: string
    - name: END_TIME
      설명: 쿼리 종료 시간
      type: timestamp
      timeFormats:
        - '%Y-%m-%d %H:%M:%S.%f %z'
    - name: EXECUTION_STATUS
      설명: 쿼리 실행 상태
      type: string
    - name: EXECUTION_TIME
      설명: 쿼리 실행에 걸린 시간
      type: int
    - name: EXTERNAL_FUNCTION_TOTAL_INVOCATIONS
      설명: 외부 함수 총 호출 수
      type: int
    - name: EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES
      설명: 외부 함수가 수신한 총 바이트 수
      type: int
    - name: EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS
      설명: 외부 함수가 수신한 총 행 수
      type: int
    - name: EXTERNAL_FUNCTION_TOTAL_SENT_BYTES
      설명: 외부 함수가 전송한 총 바이트 수
      type: int
    - name: EXTERNAL_FUNCTION_TOTAL_SENT_ROWS
      설명: 외부 함수가 전송한 총 행 수
      type: int
    - name: INBOUND_DATA_TRANSFER_BYTES
      설명: 수신 데이터 전송 바이트 수
      type: int
    - name: IS_CLIENT_GENERATED_STATEMENT
      설명: 문이 클라이언트에 의해 생성되었는지 여부
      type: boolean
    - name: LIST_EXTERNAL_FILES_TIME
      설명: 외부 파일 나열에 걸린 시간
      type: int
    - name: OUTBOUND_DATA_TRANSFER_BYTES
      설명: 송신 데이터 전송 바이트 수
      type: int
    - name: PARTITIONS_SCANNED
      설명: 스캔된 파티션 수
      type: int
    - name: PARTITIONS_TOTAL
      설명: 전체 파티션 수
      type: int
    - name: PERCENTAGE_SCANNED_FROM_CACHE
      설명: 캐시에서 스캔된 데이터 비율
      유형: float
    - name: QUERY_ACCELERATION_BYTES_SCANNED
      설명: 쿼리 가속을 위해 스캔된 바이트 수
      type: int
    - name: QUERY_ACCELERATION_PARTITIONS_SCANNED
      설명: 쿼리 가속을 위해 스캔된 파티션 수
      type: int
    - name: QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR
      설명: 쿼리 가속의 상한 스케일 팩터
      type: int
    - name: QUERY_HASH
      설명: 쿼리 문자열의 해시
      type: string
    - name: QUERY_HASH_VERSION
      설명: 해시 버전
      type: string
    - name: QUERY_ID
      required: true
      설명: 쿼리의 고유 식별자
      type: string
    - name: QUERY_LOAD_PERCENT
      설명: 쿼리 중 로드 비율
      유형: float
    - name: QUERY_PARAMETERIZED_HASH
      설명: 매개변수화된 쿼리의 해시
      type: string
    - name: QUERY_PARAMETERIZED_HASH_VERSION
      설명: 매개변수화된 쿼리의 해시 버전
      type: string
    - name: QUERY_TAG
      설명: 쿼리와 연결된 태그
      type: string
    - name: QUERY_TEXT
      설명: 쿼리 텍스트
      type: string
    - name: QUERY_TYPE
      설명: 쿼리 유형
      type: string
    - name: QUEUED_OVERLOAD_TIME
      설명: 과부하로 인해 대기열에서 보낸 시간
      type: int
    - name: QUEUED_PROVISIONING_TIME
      설명: 프로비저닝 대기열에서 보낸 시간
      type: int
    - name: QUEUED_REPAIR_TIME
      설명: 복구 대기열에서 보낸 시간
      type: int
    - name: RELEASE_VERSION
      설명: 릴리스 버전
      type: string
    - name: ROLE_NAME
      설명: 역할 이름
      type: string
    - name: ROLE_TYPE
      설명: 역할 유형
      type: string
    - name: ROWS_DELETED
      설명: 삭제된 행 수
      type: int
    - name: ROWS_INSERTED
      설명: 삽입된 행 수
      type: int
    - name: ROWS_UNLOADED
      설명: 언로드된 행 수
      type: int
    - name: ROWS_UPDATED
      설명: 업데이트된 행 수
      type: int
    - name: ROWS_WRITTEN_TO_RESULT
      설명: 결과에 기록된 행 수
      type: int
    - name: SCHEMA_ID
      설명: 스키마 식별자
      type: string
    - name: SCHEMA_NAME
      설명: 스키마 이름
      type: string
    - name: SECONDARY_ROLE_STATS
      설명: 보조 역할 통계
      type: string
    - name: SESSION_ID
      설명: 세션 식별자
      type: string
    - name: START_TIME
      required: true
      설명: 쿼리 시작 시간
      type: timestamp
      timeFormats:
        - '%Y-%m-%d %H:%M:%S.%f %z'
      isEventTime: true
    - name: TOTAL_ELAPSED_TIME
      설명: 쿼리의 총 경과 시간
      type: int
    - name: TRANSACTION_BLOCKED_TIME
      설명: 트랜잭션이 차단된 시간
      type: int
    - name: TRANSACTION_ID
      설명: 트랜잭션 식별자
      type: string
    - name: USER_NAME
      설명: 사용자 이름
      type: string
      indicators:
        - username
    - name: WAREHOUSE_ID
      설명: 웨어하우스 식별자
      type: string
    - name: WAREHOUSE_NAME
      설명: 웨어하우스 이름
      type: string
    - name: WAREHOUSE_SIZE
      설명: 웨어하우스 크기
      type: string
    - name: WAREHOUSE_TYPE
      설명: 웨어하우스 유형
      type: string
```

### Snowflake.Sessions

```yaml
스키마: Snowflake.Sessions
설명: Snowflake 세션 기록 로그
fields:
    - name: AUTHENTICATION_METHOD
      설명: 인증에 사용된 방법
      type: string
    - name: CLIENT_APPLICATION_ID
      설명: 클라이언트 애플리케이션 ID
      type: string
    - name: CLIENT_APPLICATION_VERSION
      설명: 클라이언트 애플리케이션 버전
      type: string
    - name: CLIENT_BUILD_ID
      설명: 클라이언트 애플리케이션 빌드 ID
      type: string
    - name: CLIENT_ENVIRONMENT
      설명: 클라이언트 애플리케이션의 환경 정보(예: OS, 버전)
      type: json
      isEmbeddedJSON: true
    - name: CLIENT_VERSION
      설명: 클라이언트 버전
      type: string
    - name: CLOSED_REASON
      설명: 세션이 종료된 이유
      type: string
    - name: CREATED_ON
      required: true
      설명: 세션이 생성된 타임스탬프
      type: timestamp
      timeFormats:
        - '%Y-%m-%d %H:%M:%S.%f %z'
      isEventTime: true
    - name: LOGIN_EVENT_ID
      설명: 로그인 이벤트의 고유 식별자
      type: string
    - name: SESSION_ID
      required: true
      설명: 세션의 고유 식별자
      type: string
    - name: USER_NAME
      설명: 사용자 이름
      type: string
      indicators: 
        - username
```


---

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