Snowflake

다운로드 2
업데이트 2025. 9. 7.

설치 매뉴얼

개요

Snowflake란?

  • 클라우드 기반 데이터 플랫폼입니다.
  • AWS, Azure, GCP 같은 퍼블릭 클라우드 위에서 동작하며, 대량 데이터 저장·분석에 적합합니다.
  • 데이터베이스(DB), 웨어하우스(분석용 자원), 스키마(테이블/뷰가 들어 있는 공간) 개념을 가지고 있고, 보안 정책(네트워크 정책, 인증 방식)을 통해 접근을 제어합니다.

로그프레소 소나에서 Snowflake로 접속하려면 서비스 전용 사용자와 권한을 Snowflake에 구성해야 합니다.

실행 환경 준비

Snowsight (웹 UI)
  1. https://app.snowflake.com/ 으로 접속해 로그인하세요.

  2. 메뉴에서 Projects > Worksheets로 이동하세요. 화면 우측 상단에서 + 또는 + > SQL Worksheet 버튼을 클릭하면 SQL 편집기 창이 열립니다.

    새 워크시트 만들기

  3. 여기서 CREATE USER ..., GRANT ... 같은 SQL을 직접 입력하고 버튼으로 실행할 수 있습니다. 2 개 이상의 SQL 문으로 작성된 스크립트는 Run All 버튼 또는 Ctrl + Shift + Enter 단축키로 실행해야 합니다.

    쿼리 실행 버튼

SnowSQL (CLI)
  1. SnowSQL 설치하기를 참고해 설치하세요.

  2. 터미널/명령 프롬프트에서 다음 명령으로 로그인하세요.

    snowsql -a <ACCOUNT> -u <USER>
    
  3. snowsql 프롬프트에서 SQL을 실행하세요.

Note
간단한 작업은 Snowsight에서, 스크립트를 이용한 배치 작업은 SnowSQL에서 하세요.

Snowflake 설정

Snowflake에 접속해 접속 정보를 확인하고, 로그프레소 소나의 연결에 필요한 설정을 진행합니다. 아래 절차를 순서대로 실행하세요. SQL문을 예시와 함께 실행하는데 필요한 최소 권한(역할)을 "역할 생성 (SECURITYADMIN)"과 같은 형식으로 함께 표시했습니다. 모든 단계를 한 번에 실행하려면 ACCOUNTADMIN 권한으로 수행하세요. 운영 환경에서는 역할 분리를 권장합니다.

작업실행 권한
롤 생성, 롤 사용자 부여SECURITYADMIN
사용자 생성, 사용자에 네트워크 정책 적용USERADMIN
웨어하우스/DB/스키마 생성, 객체 권한 부여SYSADMIN
네트워크 정책 생성, 계정 단위 적용ACCOUNTADMIN
PAT 발급LOGPRESSO 본인
Caution
SQL문은 모두 예시입니다. 실제 운영 환경에 맞게 고쳐서 사용하세요.

1. Snowflake 접속 정보 확인

Admin > Accounts 메뉴로 이동하여 ACCOUNT 이름 위에 마우스 커서를 올리면 접속 URL을 확인할 수 있습니다. 접속 도메인은 로그프레소 소나에서 접속 프로파일을 설정할 때 필요합니다.

Snowflake 접속 정보 확인

2. 사용자 생성 (USERADMIN)

로그프레소 소나가 Snowflake에서 사용할 계정을 생성하세요.

CREATE USER LOGPRESSO
  PASSWORD = 'TempPassw0rd!' -- 이 암호는 잘 알려진 암호이므로 운영 환경에서 사용하지 마세요.
  DEFAULT_ROLE = READONLY_ROLE
  MUST_CHANGE_PASSWORD = FALSE;

3. 읽기 전용 역할 생성 (SECURITYADMIN)

로그프레소 소나 계정에 적용할 READONLY_ROLE을 생성하세요.

CREATE ROLE IF NOT EXISTS READONLY_ROLE;

4. Account Usage 스키마 접근 권한 설정 (ACCOUNTADMIN)

로그프레소 소나가 Snowflake의 쿼리 및 로그인 히스토리를 수집하려면 SNOWFLAKE.ACCOUNT_USAGE 스키마에 대한 접근 권한이 필요합니다.

-- ACCOUNTADMIN 역할로 실행
USE ROLE ACCOUNTADMIN;

-- 1. Account Usage 스키마 사용 권한 부여
GRANT USAGE ON SCHEMA SNOWFLAKE.ACCOUNT_USAGE TO ROLE READONLY_ROLE;

-- 2. QUERY_HISTORY 테이블 조회 권한 부여
GRANT SELECT ON TABLE SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY TO ROLE READONLY_ROLE;

-- 3. LOGIN_HISTORY 테이블 조회 권한 부여
GRANT SELECT ON TABLE SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY TO ROLE READONLY_ROLE;

5. 읽기 전용 역할을 사용자에 부여 (SECURITYADMIN)

GRANT ROLE READONLY_ROLE TO USER LOGPRESSO;
Note
READONLY_ROLE은 최소 권한 원칙에 따라 필요한 테이블에만 SELECT 권한을 가집니다. SECURITYADMIN이나 ACCOUNTADMIN 같은 높은 권한을 부여하지 않아 보안상 더 안전합니다.

6. 네트워크 정책 생성 및 적용

  • 정책 생성 (ACCOUNTADMIN)
-- SONAR_PUBLIC_IP: 203.0.113.10/32
-- PAT를 사용하는 경우, 네트워크 정책은 강제사항
-- PAT대신 암호를 사용하더라도 네트워크 정책을 적용을 권장합니다.
CREATE NETWORK POLICY IF NOT EXISTS SONAR_NP
  ALLOWED_IP_LIST = ('203.0.113.10/32');
  • 사용자에 정책 적용 (USERADMIN)
ALTER USER LOGPRESSO SET NETWORK_POLICY = SONAR_NP;

7. PAT 발급 (LOGPRESSO 계정으로 실행)

Caution
이 SQL문은 실행한 계정의 권한에 따라 액세스 토큰을 생성하므로 반드시 로그프레소 소나의 로그인 계정으로 실행해야 합니다. 액세스 토큰은 주기적으로 만료됩니다. 만료되기 전에 새로 생성해서 사용하세요.
SELECT SYSTEM$GENERATE_ACCESS_TOKEN();

반환된 토큰 문자열은 접속 프로파일 설정에서 "액세스 토큰" 필드에 입력합니다.

로그프레소 접속 프로파일 설정

Snowflake 접속 프로파일 설정

다음은 접속 프로파일 설정 중 필수 입력 항목입니다.

  • 이름: 접속 프로파일을 식별할 고유한 이름
  • 식별자: 로그프레소 쿼리 등에서 사용할 접속 프로파일의 고유 식별자
  • 유형: Snowflake 선택
  • 엔드포인트: https://TENANT.snowflakecomputing.com/ 형식의 URL
  • 액세스 토큰: PAT(Programmatic Access Token). PAT 사용 시 네트워크 정책 활성화가 필요합니다.

로그프레소 수집 설정

이 문서를 참고해 수집기를 추가하세요.

로그인 로그 수집 설정

Snowflake의 로그인 시도 로그를 수집하려면 수집 모델이 Snowflake Login인 수집기를 설정하세요.

Snowflake 로그인 로그 수집 설정

다음은 수집 설정 입력 항목입니다.

  • 이름: 수집기를 식별할 고유한 이름
  • 주기: 60초
  • 적재 위치/수집 위치: 로그프레소 플랫폼 구성에 따라 적합한 노드 선택
  • 수집 모델: Snowflake Login 선택
  • 테이블: SNOWFLAKE로 시작하는 이름 입력
  • 접속 프로파일: 접속 프로파일 구성 시 입력한 식별자 입력
  • 수집 시작 시각(선택): yyyy-MM-dd HH:mm:ss 형식으로 입력. 지정된 시간 이후의 로그만 수집합니다.
  • 수집 대기 시간: 60 입력(단위: 초, 기본값: 300초). 현재 시점으로부터 지정된 초 단위 이전까지의 로그를 수집하여 최신 데이터 누락을 방지하기 위해 사용합니다.
Note
주기를 60초, 수집 대기 시간을 60초로 설정하면 60초마다 로그 수집 쿼리를 실행하지만, 항상 60초 이전의 데이터만 수집합니다. Snowflake의 로그인 로그는 트랜잭션 커밋이 지연될 수 있으므로 수집 대기 시간을 지정함으로써 최신 데이터 누락을 방지하는 것이 좋습니다.

쿼리 로그 수집 설정

Snowflake의 쿼리 실행 로그를 수집하려면 수집 모델이 Snowflake Query인 수집기를 설정하세요.

Snowflake 쿼리 로그 수집 설정

다음은 수집 설정 입력 항목입니다.

  • 이름: 수집기를 식별할 고유한 이름
  • 주기: 60초
  • 적재 위치/수집 위치: 로그프레소 플랫폼 구성에 따라 적합한 노드 선택
  • 수집 모델: Snowflake Query 선택
  • 테이블: SNOWFLAKE로 시작하는 이름 입력
  • 접속 프로파일: 접속 프로파일 구성 시 입력한 식별자 입력
  • 수집 시작 시각(선택): yyyy-MM-dd HH:mm:ss 형식으로 입력. 지정된 시간 이후의 로그만 수집합니다.
  • 수집 대기 시간: 중복 수집을 방지하기 위한 대기 시간(기본값: 300초). 현재 시점으로부터 지정된 초 단위 이전까지의 로그를 수집하여 최신 데이터 누락을 방지하기 위해 사용합니다.
Note
쿼리 로그 수집 설정도 로그인 로그 수집 설정과 동일한 이유로 수집 대기 시간을 사용합니다.