# Snowflake 감사 로그

## 개요

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

{% hint style="info" %}
이 통합을 사용하여 모든 Snowflake 인스턴스를 모니터링할 수 있습니다. 다만, Panther에 연결된 Snowflake 인스턴스를 모니터링하려면 대신 [Scheduled Searches](https://docs.panther.com/ko/search/scheduled-searches)—참조 [Scheduled Search Examples](https://docs.panther.com/ko/search/scheduled-searches/examples#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) 에는 [Enterprise Edition of Snowflake](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 감사 로그 이벤트가 [Panther의 15 MB 한도](https://docs.panther.com/ko/data-onboarding/..#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에서 워크시트 생성

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

* Snowsight에서, [워크시트를 생성](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 콘솔의 왼쪽 탐색 표시줄에서 **구성** > **로그 소스**.
2. 를 클릭합니다 **새로 만들기.**
3. “Snowflake Audit Logs”를 검색한 후 해당 타일을 클릭합니다.
4. 슬라이드 아웃 패널에서 **설정 시작**.

   <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-fe2dd60002ff79bf23a3685f49dc5afb21d4f162%2FScreenshot%202024-10-09%20at%205.31.42%20PM.png?alt=media" 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가 쿼리할 사용자 지정 스키마의 이름을 입력하십시오. \* **실행 주기**: **숫자** 및 **기간** 필드를 사용하여 Panther가 Snowflake에서 데이터를 가져올 간격을 선택하십시오.
   * 다음 항목을 참조하십시오 [비용 고려 사항](#cost-considerations) 간격이 컴퓨트 비용에 미치는 영향에 대해 알아보려면.
   * **모니터링되는 로그 유형**: Panther가 가져오길 원하는 Snowflake 뷰를 선택하십시오.

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

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

   <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-eff37af44d0a5c5a422b281d87e631b6344b9943%2FScreenshot%202025-04-14%20at%209.48.39%E2%80%AFAM.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
9. 를 클릭합니다 **, 그런 다음 RSA 키 파일을 업로드하십시오.**.
10. 을 클릭합니다 **다음** 풍부화 [페이지에서 수신 로그를 다음 중 하나 이상의](https://docs.panther.com/ko/enrichment/snowflake#supported-enrichment-types)지원되는 Snowflake 풍부화 유형 `으로 풍부화하려는 경우, 활성화하려는 각 항목의 타일에서 토글을` 켜기 **로 설정하고**.

    * 새로고침 주기(분)
    * 을 설정하십시오. 최소 새로고침 주기는 60분입니다. 데이터 변경이 드문 경우 이 값을 늘리는 것이 권장됩니다. **구성** > **이러한 풍부화 소스 중 어느 것을 켜면 해당 항목이** 풍부화 [Snowflake Enrichment](https://docs.panther.com/ko/enrichment/snowflake).

    <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-c9ad3f8bad5fe8dc94932ea7335c56c2e5444f6c%2FScreenshot%202025-08-06%20at%204.31.31%E2%80%AFPM.png?alt=media" 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. 설정
    1. 자신의 RSA 키를 업로드하지 않은 경우, 생성된 SQL 스니펫으로 Panther가 사용할 서비스 사용자를 생성하십시오. Panther는 귀하를 대신해 RSA 키를 생성하며 공개 부분만 제공합니다.
    2. 생성된 SQL 스니펫을 복사하십시오. [SQL 스니펫을](https://docs.snowflake.com/en/user-guide/ui-snowsight-worksheets-gs).
    3. 를 클릭합니다 **페이지에 표시됩니다. 자세한 내용은**.
13. Snowsight 워크시트

    <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-e55cedf82c6a6adc66ec5c14ebdcb164c3b1dcca%2FScreenshot%202023-08-03%20at%204.33.30%20PM.png?alt=media" 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).
    * 해당 **선택적으로 하나 이상의** 디텍션 팩 **을(를) 활성화할 수 있습니다**이벤트가 처리되지 않을 때 알러트를 트리거

      <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-c48119abd559990173004bde99ff4907fdd2ded2%2FScreenshot%202023-08-03%20at%204.26.54%20PM.png?alt=media" 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>

## 설정의 기본값은

예

1. Panther 콘솔의 왼쪽 탐색 표시줄에서 **구성** > **로그 소스**.
2. 입니다. 데이터가 특정 기간 후에 로그 소스에서 흐르지 않으면 알림을 받도록 이 옵션을 활성화된 상태로 두는 것을 권장합니다. 시간 범위는 구성 가능하며 기본값은 24시간입니다. **로그 소스** 기존 Snowflake Audit Logs 소스의 RSA 키를 교체(회전)하는 방법
3. 기존 Snowflake Audit Logs 소스에 연결된 Snowflake 사용자의 RSA 키를 로그 수신 흐름을 중단하지 않고 교체하려면: **목록에서 업데이트하려는 Snowflake 감사 로그 소스를 찾아 이름을 클릭합니다.** 로그 소스 세부정보 페이지에서 **구성**.

   <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-2acf27b9820b212bcd22aac2aa2a8bd46e4d69a0%2FScreenshot%202025-09-18%20at%2012.39.47%E2%80%AFPM.png?alt=media" 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. 를 클릭합니다 **탭을 클릭한 다음**.

   <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-ff3126f2fce5c3d7ed32e0768d131354ce5bb918%2FScreenshot%202025-09-18%20at%2012.42.52%E2%80%AFPM.png?alt=media" alt="An arrow is drawn from a &#x22;Set Credentials&#x22; button to a &#x22;Rotate RSA Key&#x22; button."><figcaption></figcaption></figure>
6. 을 클릭합니다 **탭을 클릭한 다음** 수정 **탭을 클릭한 다음**.
7. RSA 키 회전 **팝업 모달에서**제공된 [SQL 스니펫을](https://docs.snowflake.com/en/user-guide/ui-snowsight-worksheets-gs) RSA 키 회전 SQL `을 복사하고`).
8. 에서 실행하십시오 **(ACCOUNTADMIN과 같은 권한 있는 사용자를 사용하여).**.

## Panther에서

### 저장

```yaml
지원되는 로그 유형
Snowflake.AccessHistory
스키마: Snowflake.AccessHistory
설명: Snowflake 액세스 히스토리 로그
  참조 URL: https://docs.snowflake.com/en/sql-reference/account-usage/access_history
    필드:
    - 이름: BASE_OBJECTS_ACCESSED
    설명: 쿼리 동안 액세스된 기본 객체 목록
      유형: 배열
  요소:
    유형: json
    - 이름: BASE_OBJECTS_ACCESSED
    설명: 쿼리 동안 액세스된 기본 객체 목록
      유형: 배열
  - 이름: DIRECT_OBJECTS_ACCESSED
    설명: 쿼리 동안 액세스된 직접 객체 목록
    - 이름: BASE_OBJECTS_ACCESSED
    설명: 쿼리 동안 액세스된 기본 객체 목록
      유형: 배열
  - 이름: OBJECTS_MODIFIED
    설명: 쿼리 동안 수정된 객체 목록
    - 이름: BASE_OBJECTS_ACCESSED
    설명: 쿼리 동안 액세스된 기본 객체 목록
      유형: 배열
  - 이름: POLICIES_REFERENCED
    설명: 쿼리 동안 참조된 정책 목록
    유형: 배열
  - 이름: OBJECT_MODIFIED_BY_DDL
    설명: 쿼리 동안 DDL에 의해 수정된 객체
    - 이름: QUERY_ID
  설명: 쿼리의 고유 식별자
    유형: 문자열
    - 이름: QUERY_START_TIME, (필수: true), 설명: 쿼리의 시작 시간
    유형: 타임스탬프
    시간형식:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
    isEventTime: true
  - 이름: USER_NAME
    설명: 쿼리를 실행한 사용자의 이름
    - 이름: QUERY_ID
    지표:
      - username
  - 이름: PARENT_QUERY_ID
    설명: 상위 작업의 쿼리 ID. 작업에 상위가 없으면 NULL.
    - 이름: QUERY_ID
  - 이름: ROOT_QUERY_ID
    설명: 체인에서 최상위 작업의 쿼리 ID. 작업에 상위가 없으면 NULL.
    - 이름: QUERY_ID
```

### Snowflake.DataTransferHistory

```yaml
스키마: Snowflake.DataTransferHistory
설명: Snowflake 데이터 전송 이력
설명: Snowflake 액세스 히스토리 로그
    - 이름: ORGANIZATION_NAME
      유형: 문자열
      - 이름: QUERY_ID
    - 이름: ACCOUNT_NAME
      유형: 문자열
      - 이름: QUERY_ID
    - 이름: ACCOUNT_LOCATOR
      유형: 문자열
      - 이름: QUERY_ID
    - 이름: REGION
      - 이름: QUERY_ID
    - 이름: USAGE_DATE
      유형: 문자열
      유형: 타임스탬프
      시간형식:
        - '%Y-%m-%d %H:%M:%S.%f %z'
      isEventTime: true
    - 이름: SOURCE_CLOUD
      - 이름: QUERY_ID
    - 이름: SOURCE_REGION
      - 이름: QUERY_ID
    - 이름: TARGET_CLOUD
      - 이름: QUERY_ID
    - 이름: TARGET_REGION
      - 이름: QUERY_ID
    - 이름: BYTES_TRANSFERRED
      유형: 문자열
      유형: bigint
    - 이름: TRANSFER_TYPE
      - 이름: QUERY_ID
```

### Snowflake.LoginHistory

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

### Snowflake.QueryHistory

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

### Snowflake.Sessions

```yaml
스키마: Snowflake.Sessions
설명: Snowflake 세션 이력 로그
설명: Snowflake 액세스 히스토리 로그
    - 이름: AUTHENTICATION_METHOD
      설명: 인증에 사용된 방법
      - 이름: QUERY_ID
    - 이름: CLIENT_APPLICATION_ID
      설명: 클라이언트 애플리케이션의 ID
      - 이름: QUERY_ID
    - 이름: CLIENT_APPLICATION_VERSION
      설명: 클라이언트 애플리케이션의 버전
      - 이름: QUERY_ID
    - 이름: CLIENT_BUILD_ID
      설명: 클라이언트 애플리케이션의 빌드 ID
      - 이름: QUERY_ID
    - 이름: CLIENT_ENVIRONMENT
      설명: 클라이언트 애플리케이션의 환경 정보 (예: OS, 버전)
      유형: 배열
      isEmbeddedJSON: true
    - 이름: CLIENT_VERSION
      설명: 클라이언트 버전
      - 이름: QUERY_ID
    - 이름: CLOSED_REASON
      description: 세션이 종료된 이유
      - 이름: QUERY_ID
    - name: CREATED_ON
      유형: 문자열
      description: 세션이 생성된 타임스탬프
      유형: 타임스탬프
      시간형식:
        - '%Y-%m-%d %H:%M:%S.%f %z'
      isEventTime: true
    - name: LOGIN_EVENT_ID
      description: 로그인 이벤트의 고유 식별자
      - 이름: QUERY_ID
    - 이름: SESSION_ID
      유형: 문자열
      description: 세션의 고유 식별자
      - 이름: QUERY_ID
    - 이름: USER_NAME
      설명: 사용자의 이름
      - 이름: QUERY_ID
      지표: 
        - username
```
