日志、追踪与审计

Snowflake 管理、治理与协作

Emily Melhuish

Technical Curriculum Developer, Snowflake

审计问题

  • 过去 90 天内,谁访问了信用评分?
  • 某天清晨哪些存储过程运行过?
  • 是否有登录来自公司网络外部?
  • 必须先有记录,才能提问

审计图标

Snowflake 管理、治理与协作

什么是事件表?

  • 捕获 Snowflake 对象发出的日志与追踪数据:存储过程、Snowpark 函数、UDF
  • 像常规表一样创建,然后用 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 管理、治理与协作

Passons à la pratique !

Snowflake 管理、治理与协作

Preparing Video For Download...