ログ、トレース、監査

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...