# Snowflake 보강 (Beta)

## 개요 <a href="#overview" id="overview"></a>

{% hint style="info" %}
Snowflake 보강 기능은 Panther 버전 1.113부터 오픈 베타로 제공되며, 모든 고객에게 사용할 수 있습니다. 버그 보고나 기능 요청은 Panther 지원팀과 공유해 주세요.
{% endhint %}

Panther에서 Snowflake 보강 테이블을 만들려면 다음을 구성하면 됩니다. [Snowflake Audit 로그 소스](/ko/data-onboarding/supported-logs/snowflake.md) 가 "state" 데이터를 포함한 테이블을 가져오도록 합니다(로그 소스 자체가 읽는 테이블은 시계열 보안 데이터를 포함함과 다름). 즉, 이 정보를 디택션 로직과 검색 쿼리에서 참조할 수 있습니다.

Snowflake 보강 데이터는 Snowflake Audit 로그 소스가 로그를 가져오도록 구성한 것과 동일한 간격으로 새로고침됩니다.

방법 알아보기 [저장된 보강 데이터를 여기에서 보기](/ko/enrichment.md#viewing-and-managing-enrichments).

## 들어오는 로그가 Snowflake 데이터로 보강되는 방식

다음을 수행한 후 [보강 설정](#how-to-set-up-okta-user-and-device-profiles-in-panther) 을 [Snowflake Audit 소스](/ko/data-onboarding/supported-logs/snowflake.md)에 대해 설정하면, 들어오는 로그(모든 스키마로 파싱됨)는 다음에 따라 일치 항목이 발견되면 Snowflake 데이터로 보강됩니다. [지표 필드의 자동 매핑 때문입니다.](/ko/enrichment/custom.md#option-2-let-log-types-and-selectors-be-automatically-mapped-by-indicator-fields).

## Panther에서 Snowflake 보강을 설정하는 방법 <a href="#how-to-set-up-okta-user-and-device-profiles-in-panther" id="how-to-set-up-okta-user-and-device-profiles-in-panther"></a>

초기 설정 중에 Snowflake 보강을 구성할 수 있습니다. [Snowflake Audit](/ko/data-onboarding/supported-logs/snowflake.md) 로그 소스 통합을 Panther에서 설정할 때, 또는 나중에 소스를 편집하여 설정할 수 있습니다. 두 경우 모두 **Enrichment** 페이지에서 원하는 항목을 켜게 됩니다. [보강 유형](#supported-enrichment-types).

{% hint style="info" %}
이를 활성화하려면 먼저(또는 동시에) [Snowflake를 로그 소스로 온보딩해야 합니다.](/ko/data-onboarding/supported-logs/snowflake.md)Snowflake 보강을 설정하는 것은 *없이* Panther에서 Snowflake를 로그 소스로 온보딩하지 않고는 불가능합니다.
{% endhint %}

### Snowflake Audit 소스 설정 중 Panther에서 Snowflake 보강 구성

* 다음을 따르세요. [Panther에서 새 Snowflake Audit 소스를 만들기 위한 이 지침을 따르세요](/ko/data-onboarding/supported-logs/snowflake.md#how-to-onboard-snowflake-audit-logs-to-panther)특히 다음 사항에 주의하세요. **Enrichment** 페이지.

### 초기 Snowflake Audit 소스 설정 후 Panther에서 Snowflake 보강 구성

이미 다음을 만든 후에도 Snowflake 보강을 설정할 수 있습니다. [Snowflake Audit](/ko/data-onboarding/supported-logs/snowflake.md) Panther의 로그 소스를 편집하여:

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **구성** > **로그 소스**.
2. 보강을 설정하려는 Snowflake Audit 로그 소스를 찾아 이름을 클릭합니다.
3. 로그 소스 페이지의 오른쪽 상단에서 다음을 클릭합니다. **구성,** 그다음 **Edit.**\
   ![There is an arrow drawn from a "Configuration" button to an "Edit" button.](/files/594deb89aeec4262744b991b71ba2b69124f9f72)
4. 오른쪽 상단에서 다음을 클릭하세요. **Enrichment**.
5. 다음에서 **보강 설정**, 각 항목의 타일에서 [보강 유형](#supported-enrichment-types) 활성화하려는 항목의 토글을 클릭합니다. `ON` 및 **새로고침 기간(분)**.
   * 최소 새로고침 기간은 60분입니다. 데이터가 자주 변경되지 않는다면 이 값을 늘리는 것이 좋습니다.

     <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>
6. 다음을 클릭하세요. **저장**.

## 지원되는 보강 유형

Panther는 Snowflake에서 다양한 테이블을 가져오는 것을 지원합니다 [`ACCOUNT_USAGE` 스키마에서 살펴보겠습니다](https://docs.snowflake.com/en/sql-reference/account-usage). 아래에는 각 보강 유형의 데이터 구조 스키마가 나와 있습니다.

### Snowflake.Users <a href="#okta.users" id="okta.users"></a>

```yaml
스키마: Snowflake.Users
설명: Snowflake 사용자
참조 URL: https://docs.snowflake.com/en/sql-reference/account-usage/users
fields:
  - 이름: match
    설명: LUT의 일치 항목
    type: array
    element:
      type: string
  - 이름: BYPASS_MFA_UNTIL
    설명: 다단계 인증이 우회되는 시점까지의 타임스탬프
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: COMMENT
    설명: 사용자에 대한 टिप्पणी
    type: string
  - name: CREATED_ON
    required: true
    설명: 사용자가 생성된 타임스탬프
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: DEFAULT_NAMESPACE
    설명: 사용자에게 할당된 기본 네임스페이스
    type: string
  - 이름: DEFAULT_ROLE
    설명: 사용자에게 할당된 기본 역할
    type: string
  - 이름: DEFAULT_SECONDARY_ROLE
    설명: 사용자의 기본 보조 역할(즉, ALL)을 지정하거나, 설정되지 않은 경우 NULL
    type: string
  - 이름: DEFAULT_WAREHOUSE
    설명: 사용자에게 할당된 기본 웨어하우스
    type: string
  - 이름: DELETED_ON
    설명: 사용자가 삭제된 시점의 타임스탬프(삭제된 경우)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: DISABLED
    설명: 사용자가 비활성화되었는지 여부를 나타냄
    type: boolean
  - 이름: DISPLAY_NAME
    설명: 사용자 표시 이름
    type: string
  - 이름: EMAIL
    설명: 사용자 이메일 주소
    type: string
    indicators:
      - email
  - 이름: EXT_AUTHN_DUO
    설명: Duo를 통한 외부 인증이 활성화되어 있는지 나타냄
    type: boolean
  - 이름: EXT_AUTHN_ID
    설명: Duo Security에 사용되는 인증 ID
    type: string
  - 이름: EXPIRES_AT
    설명: 사용자 상태가 EXPIRED로 설정되고 사용자가 더 이상 로그인할 수 없게 되는 날짜와 시간
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: FIRST_NAME
    설명: 사용자 이름
    type: string
  - 이름: LAST_NAME
    설명: 사용자 성
    type: string
  - 이름: HAS_MFA
    설명: 사용자가 다단계 인증을 활성화했는지 나타냄
    type: boolean
  - 이름: HAS_PASSWORD
    설명: 사용자가 비밀번호를 설정했는지 나타냄
    type: boolean
  - 이름: HAS_RSA_PUBLIC_KEY
    설명: 사용자가 RSA 공개 키를 설정했는지 나타냄
    type: boolean
  - 이름: LAST_SUCCESS_LOGIN
    설명: 마지막 성공적인 로그인 타임스탬프
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: LOCKED_UNTIL_TIME
    설명: 사용자가 잠금 해제되는 시점의 타임스탬프(잠긴 경우)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: LOGIN_NAME
    설명: 사용자 로그인 이름
    type: string
  - 이름: MUST_CHANGE_PASSWORD
    설명: 사용자가 비밀번호를 변경해야 하는지 나타냄
    type: boolean
  - 이름: NAME
    required: true
    설명: 사용자 이름
    type: string
    indicators:
      - username
  - 이름: OWNER
    설명: 사용자 계정의 소유자
    type: string
  - 이름: PASSWORD_LAST_SET_TIME
    설명: 사용자에게 마지막으로 null이 아닌 비밀번호가 설정된 타임스탬프. 비밀번호가 설정되지 않은 경우 기본값은 null
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: SNOWFLAKE_LOCK
    설명: 사용자가 Snowflake에서 잠겨 있는지 나타냄
    type: boolean
  - 이름: TYPE
    설명: '사용자 유형을 지정합니다. PERSON, SERVICE, LEGACY_SERVICE, 또는 NULL. 기본값: NULL'
    type: string
  - 이름: USER_ID
    required: true
    설명: 사용자에 대한 고유 식별자
    type: string
```

### Snowflake.Roles <a href="#okta.users" id="okta.users"></a>

```yaml
스키마: Snowflake.Roles
설명: Snowflake 계정에 정의된 모든 역할에 대한 정보
참조 URL: https://docs.snowflake.com/en/sql-reference/account-usage/roles
fields:
  - 이름: match
    설명: 조회용 매치 필드, ROLE_ID, ROLE_INSTANCE_ID, NAME과 일치
    type: array
    element:
      type: string
  - 이름: ROLE_ID
    required: true
    설명: 역할의 내부/시스템 생성 식별자
    type: string
  - name: CREATED_ON
    required: true
    설명: 역할이 생성된 날짜와 시간(UTC 시간대)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: DELETED_ON
    설명: 역할이 삭제된 날짜와 시간(UTC 시간대)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: NAME
    required: true
    설명: 역할 이름
    type: string
  - 이름: COMMENT
    설명: 역할에 대한 टिप्पणी
    type: string
  - 이름: OWNER
    설명: 객체에 대해 OWNERSHIP 권한을 가진 역할
    type: string
  - name: ROLE_TYPE
    설명: ROLE, DATABASE_ROLE, 또는 INSTANCE_ROLE
    type: string
  - 이름: ROLE_DATABASE_NAME
    설명: 역할이 데이터베이스 역할인 경우 데이터베이스 역할이 포함된 데이터베이스의 이름
    type: string
  - 이름: ROLE_INSTANCE_ID
    설명: 역할이 속한 클래스 인스턴스의 내부/시스템 생성 식별자
    type: string
  - 이름: OWNER_ROLE_TYPE
    설명: 객체를 소유한 역할의 유형(예: ROLE). Snowflake Native App이 객체를 소유하는 경우 값은 APPLICATION입니다. 삭제된 객체에는 소유자 역할이 없으므로 객체를 삭제하면 Snowflake는 NULL을 반환합니다
    type: string

```

### Snowflake.GrantsToUsers <a href="#okta.users" id="okta.users"></a>

```yaml
스키마: Snowflake.GrantsToUsers
설명: Snowflake의 사용자에 대한 권한 부여
참조 URL: https://docs.snowflake.com/en/sql-reference/account-usage/grants_to_users
fields:
  - 이름: match
    설명: 조회용 매치 필드
    type: array
    element:
      type: string
  - name: CREATED_ON
    required: true
    설명: 역할이 부여된 시점의 날짜와 시간(UTC 시간대)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: DELETED_ON
    설명: 역할이 취소된 시점의 날짜와 시간(UTC 시간대)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: GRANTED_BY
    설명: 권한을 부여한 역할의 식별자
    type: string
  - 이름: GRANTED_TO
    required: true
    설명: 이 로그 유형에서 값은 USER입니다
    type: string
  - 이름: GRANTEE_NAME
    required: true
    설명: 권한이 부여된 사용자의 이름
    type: string
    indicators:
      - username
  - 이름: ROLE
    required: true
    설명: 사용자에게 부여된 역할의 식별자
    type: string
```

### Snowflake.GrantsToRoles <a href="#okta.users" id="okta.users"></a>

```yaml
스키마: Snowflake.GrantsToRoles
설명: Snowflake의 역할에 대한 권한 부여
참조 URL: https://docs.snowflake.com/en/sql-reference/account-usage/grants_to_roles
fields:
  - 이름: match
    설명: 조회용 매치 필드
    type: array
    element:
      type: string
  - name: CREATED_ON
    required: true
    설명: 권한이 역할에 부여된 날짜와 시간(UTC 시간대)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: DELETED_ON
    설명: 권한이 취소된 날짜와 시간(UTC 시간대)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: GRANTED_BY
    설명: 권한을 부여한 역할의 식별자, 또는 애플리케이션 역할에 대한 부여가 있는 경우 Snowflake Native App 객체의 이름
    type: string
    indicators:
      - username
  - 이름: GRANTED_BY_ROLE_TYPE
    설명: APPLICATION, ROLE 또는 DATABASE_ROLE
    type: string
  - 이름: GRANTED_TO
    required: true
    설명: ROLE, DATABASE_ROLE, INSTANCE_ROLE, APPLICATION_ROLE, 또는 APPLICATION
    type: string
  - 이름: GRANTED_ON
    required: true
    설명: 권한이 부여된 객체 종류(예: TABLE 또는 DATABASE)
    type: string
  - 이름: GRANTEE_NAME
    required: true
    설명: 수신 역할에 대한 식별자, 권한이 부여된 역할, 또는 Snowflake Native App 객체의 이름
    type: string
    indicators:
      - username
  - 이름: GRANT_OPTION
    설명: TRUE로 설정되면 수신 역할이 다른 역할에 권한을 부여할 수 있음
    type: boolean
  - 이름: MODIFIED_ON
    설명: 권한이 업데이트된 날짜와 시간(UTC 시간대)
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: NAME
    설명: 권한이 부여된 객체의 이름
    type: string
  - 이름: PRIVILEGE
    설명: 역할에 추가된 권한의 이름
    type: string
  - 이름: TABLE_CATALOG
    설명: 현재 테이블의 데이터베이스 이름 또는 클래스 인스턴스를 저장하는 데이터베이스의 이름
    type: string
  - 이름: TABLE_SCHEMA
    설명: 현재 테이블의 스키마 이름 또는 클래스 인스턴스를 저장하는 스키마의 이름
    type: string
  - 이름: OBJECT_INSTANCE
    설명: database.schema.class 형식으로 특정 클래스의 인스턴스 역할을 포함하는 객체의 정규화된 전체 이름
    type: json
```

### Snowflake.Stages <a href="#okta.users" id="okta.users"></a>

```yaml
스키마: Snowflake.Stages
설명: Snowflake 스테이지
참조 URL: https://docs.snowflake.com/en/sql-reference/account-usage/stages
fields:
  - 이름: match
    설명: LUT의 일치 항목
    type: array
    element:
      type: string
  - 이름: CREATED
    required: true
    설명: 스테이지가 생성된 시점의 타임스탬프
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: DELETED
    설명: 스테이지가 삭제된 시점의 타임스탬프
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: INSTANCE_ID
    설명: 객체가 속한 인스턴스의 내부/시스템 생성 식별자
    type: string
  - 이름: LAST_ALTERED
    설명: 스테이지가 마지막으로 변경된 시점의 타임스탬프
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: OWNER_ROLE_TYPE
    설명: 객체를 소유한 역할의 유형(예: ROLE). Snowflake Native App이 객체를 소유하는 경우 값은 APPLICATION
    type: string
  - 이름: STAGE_CATALOG
    설명: 스테이지가 위치한 카탈로그
    type: string
  - 이름: STAGE_CATALOG_ID
    required: true
    설명: 스테이지 카탈로그의 고유 식별자
    type: string
  - 이름: STAGE_ID
    required: true
    설명: 스테이지의 고유 식별자
    type: string
  - 이름: STAGE_NAME
    required: true
    설명: 스테이지 이름
    type: string
  - 이름: STAGE_REGION
    설명: 스테이지가 위치한 리전
    type: string
  - 이름: STAGE_SCHEMA
    설명: 스테이지가 위치한 스키마
    type: string
  - 이름: STAGE_OWNER
    설명: 스테이지를 소유한 역할의 이름; 삭제된 경우 NULL
    type: string
  - 이름: COMMENT
    설명: 이 스테이지에 대한 टिप्पणी. 제공된 टिप्पणी가 없으면 NULL
    type: string
  - 이름: STAGE_SCHEMA_ID
    required: true
    설명: 스테이지 스키마의 고유 식별자
    type: string
  - 이름: STAGE_TYPE
    설명: 스테이지 유형(예: External Named)
    type: string
  - 이름: STAGE_URL
    설명: 스테이지의 URL
    type: string
  - 이름: STORAGE_INTEGRATION
    설명: 스테이지와 연결된 스토리지 통합
    type: string

```

### Snowflake.NetworkPolicies <a href="#okta.users" id="okta.users"></a>

{% hint style="info" %}
보강 항목은 행 제한이 65KB이므로, `ALLOWED_IP_LIST` 및 `BLOCKED_IP_LIST` 필드의 결합된 값 크기가 40KB를 초과하면 이 제한을 충족하도록 잘립니다.
{% endhint %}

```yaml
스키마: Snowflake.NetworkPolicies
설명: Snowflake 네트워크 정책
참조 URL: https://docs.snowflake.com/en/sql-reference/account-usage/network_policies
fields:
  - 이름: match
    설명: 일치에 사용할 네트워크 정책의 ID
    type: array
    element:
      type: string
  - 이름: ID
    required: true
    설명: 네트워크 정책의 내부 시스템 생성 식별자
    type: string
  - 이름: NAME
    required: true
    설명: 네트워크 정책 이름
    type: string
  - 이름: OWNER
    설명: 네트워크 정책을 소유한 역할의 이름
    type: string
  - 이름: OWNER_ROLE_TYPE
    설명: 객체를 소유한 역할의 유형(예: ROLE). Snowflake Native App이 객체를 소유하는 경우 값은 APPLICATION입니다. 삭제된 객체에는 소유자 역할이 없으므로 객체를 삭제하면 Snowflake는 NULL을 반환합니다
    type: string
  - 이름: COMMENT
    설명: 네트워크 정책에 대한 टिप्पणी(있는 경우)
    type: string
  - 이름: CREATED
    설명: 네트워크 정책이 생성된 날짜와 시간
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: LAST_ALTERED
    required: true
    설명: 네트워크 정책이 마지막으로 변경된 날짜와 시간
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: DELETED
    설명: 네트워크 정책이 삭제된 날짜와 시간
    type: timestamp
    timeFormats:
      - '%Y-%m-%d %H:%M:%S.%f %z'
      - '%a, %d %b %Y %H:%M:%S %z'
  - 이름: ALLOWED_IP_LIST
    설명: 해당 네트워크 정책에서 허용되는 IPv4 주소 및 CIDR 블록 범위 목록
    type: array
    element:
      type: string
  - 이름: BLOCKED_IP_LIST
    설명: 해당 네트워크 정책에서 차단되는 IPv4 주소 및 CIDR 블록 범위 목록
    type: array
    element:
      type: string
```


---

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