Логирование, трассировка и аудит

Управление, управление данными и совместная работа в Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Проблема аудита

  • Кто обращался к кредитным скорингам за последние 90 дней?
  • Какие хранимые процедуры выполнялись ранним утром в конкретный день?
  • Были ли входы из-за пределов корпоративной сети?
  • Запись должна существовать до того, как задан вопрос

Значок аудита

Управление, управление данными и совместная работа в Snowflake

Что такое event tables?

  • Фиксирует данные логов и трассировок объектов Snowflake — хранимых процедур, функций Snowpark, UDF
  • Создаётся как обычная таблица, затем активируется командой ALTER_ACCOUNT
  • Сообщения логов и трассировок записываются автоматически
  • Запросы выполняются стандартным SQL — внешние инструменты не требуются

Схема event table

Управление, управление данными и совместная работа в Snowflake

Уровни логирования

 

Уровень Описание
TRACE Каждый вход и выход из функции — максимальная детализация
DEBUG Диагностические сведения
INFO Ключевые этапы выполнения — рекомендуется для production
WARN Нештатные условия, не прервавшие выполнение
ERROR Ошибки
FATAL Критические сбои, остановившие выполнение
Управление, управление данными и совместная работа в Snowflake

Трассировка

  • Фиксирует путь выполнения многошагового процесса
  • Показывает связь между шагами, а не только отдельные сообщения
  • Записывает длительность и порядок каждого шага
  • Данные трассировки записываются в ту же event table, что и логи

Схема трассировки

Управление, управление данными и совместная работа в 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

Полный журнал аудита

 

Источник Что фиксирует Вопрос аудита
Event table Логи и трассировки хранимых процедур, функций Snowpark Что выполняла платформа?
LOGIN_HISTORY Каждая попытка входа: пользователь, IP, метод, ошибки Кто подключался, откуда, были ли сбои?
QUERY_HISTORY Каждый SQL-запрос: пользователь, роль, склад, текст запроса К каким данным обращались и кто это делал?
Управление, управление данными и совместная работа в Snowflake

Lass uns üben!

Управление, управление данными и совместная работа в Snowflake

Preparing Video For Download...