Журнали, трасування та аудит

Керування, врядування й співпраця в Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

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

  • Хто звертався до кредитних скорів за останні 90 днів?
  • Які збережені процедури запускались на світанку в певний ранок?
  • Чи були входи поза корпоративною мережею?
  • Запис має існувати до того, як ставиться питання

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

Керування, врядування й співпраця в Snowflake

Що таке Event Tables?

  • Фіксує журнали й трасування від об’єктів Snowflake — зі збережених процедур, функцій Snowpark, UDF
  • Створюється як звичайна таблиця, активується через ALTER_ACCOUNT
  • Відтоді повідомлення журналу та трасування пишуться автоматично
  • Запити стандартним SQL — без зовнішніх інструментів логування

event_table_simple.png

Керування, врядування й співпраця в Snowflake

Рівні логів

 

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

Трасування

  • Фіксує шлях виконання у багатокроковому процесі
  • Показує зв’язки між кроками, не лише окремі повідомлення
  • Записує тривалість і порядок кожного кроку
  • Трасування записується в ту саму event-таблицю, що й журнали

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

Повний ланцюг аудиту

 

Джерело Що фіксує На яке аудиторське питання відповідає
Event table Журнали й трасування зі збережених процедур, функцій Snowpark Що зробила платформа?
LOGIN_HISTORY Кожну спробу входу: користувач, IP, метод, помилки Хто підключався, звідки, чи були збої?
QUERY_HISTORY Кожен SQL-запит: користувач, роль, склад, текст запиту Які дані читали й ким?
Керування, врядування й співпраця в Snowflake

Перейдемо до практики!

Керування, врядування й співпраця в Snowflake

Preparing Video For Download...