로깅, 추적 및 감사

Snowflake 관리, 거버넌스 및 협업

Emily Melhuish

Technical Curriculum Developer, Snowflake

감사의 문제

  • 최근 90일간 신용 점수에 접근한 사용자는 누구인가?
  • 특정 날 이른 시간에 실행된 저장 프로시저는 무엇인가?
  • 회사 네트워크 외부에서 로그인이 발생했는가?
  • 질문이 발생하기 전에 기록이 존재해야 한다

audit_icon.png

Snowflake 관리, 거버넌스 및 협업

이벤트 테이블이란?

  • 저장 프로시저, Snowpark 함수, UDF 등 Snowflake 객체의 로그 및 추적 데이터 캡처
  • 일반 테이블처럼 생성 후 ALTER_ACCOUNT로 활성화
  • 이후 로그 및 추적 메시지가 자동으로 기록됨
  • 외부 로깅 도구 없이 표준 SQL로 조회 가능

event_table_simple.png

Snowflake 관리, 거버넌스 및 협업

로그 레벨

 

레벨 설명
TRACE 모든 함수 진입 및 종료 — 가장 세분화된 수준
DEBUG 진단 세부 정보
INFO 정상 실행 단계 — 프로덕션 환경에 권장
WARN 실행을 중단하지 않은 예기치 않은 상태
ERROR 실패
FATAL 실행을 중단한 심각한 실패
Snowflake 관리, 거버넌스 및 협업

추적

  • 다단계 프로세스의 실행 경로 캡처
  • 개별 메시지가 아닌 단계 간 연결 관계 표시
  • 각 단계의 소요 시간 및 순서 기록
  • 추적 데이터는 로그 데이터와 동일한 이벤트 테이블에 저장

tracing_v2.png

Snowflake 관리, 거버넌스 및 협업

감사를 위한 LOGIN_HISTORY 활용

SELECT user_name,
       event_timestamp,
       client_ip,
       authentication_method,
       error_code,
       error_message
FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE event_timestamp >= DATEADD('day', -90, CURRENT_TIMESTAMP())
  AND client_ip NOT LIKE '203.0.113.%'
ORDER BY event_timestamp DESC;
Snowflake 관리, 거버넌스 및 협업

감사를 위한 QUERY_HISTORY 활용

SELECT user_name,
       role_name,
       warehouse_name,
       query_text,
       start_time,
       end_time
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time >= DATEADD('day', -90, CURRENT_TIMESTAMP())
  AND query_text ILIKE '%credit_scores%'
ORDER BY start_time DESC;
Snowflake 관리, 거버넌스 및 협업

완전한 감사 추적

 

소스 캡처 내용 답변 가능한 감사 질문
이벤트 테이블 저장 프로시저, Snowpark 함수의 로그 및 추적 데이터 플랫폼이 무엇을 수행했는가?
LOGIN_HISTORY 모든 로그인 시도: 사용자, IP, 방법, 오류 누가 어디서 접속했으며 실패가 있었는가?
QUERY_HISTORY 모든 SQL 문: 사용자, 역할, 웨어하우스, 쿼리 텍스트 어떤 데이터에 누가 접근했는가?
Snowflake 관리, 거버넌스 및 협업

연습해 봅시다!

Snowflake 관리, 거버넌스 및 협업

Preparing Video For Download...