Audit Access lets you trace who queried which tables, columns, and rows in Snowflake for security and compliance.
Access History is a system view that records every successful query and the exact objects, columns, and masking policies it touched. It is the foundation for auditing who saw what.
Run SELECT statements against the SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY or ORGANIZATION_USAGE.ACCESS_HISTORY views.Filter by object name, user, or time range to pinpoint activity.
Use a WHERE clause on OBJECT_NAME, COLUMN_NAME, and QUERY_START_TIME to isolate reads of sensitive columns.
Join ACCESS_HISTORY to QUERY_HISTORY on QUERY_ID to see the full SQL that touched your data.
Only ACCOUNTADMIN and ORGADMIN have default rights.Grant the MONITOR USAGE global privilege to custom roles that need audit visibility.
Store audit extracts in a secure database, schedule daily exports, and keep at least 90 days of data.Use masking policies and row access policies to reduce exposure.
Write tasks that scan ACCESS_HISTORY for unexpected access—e.g., a sales role querying the Products.stock column—and send alerts via email or Slack.
ACCOUNT_USAGE keeps 365 days; ORGANIZATION_USAGE keeps 365 days for Enterprise Edition and above. Export data if you need longer retention.
.
Yes, but Standard Edition retains only 7 days; Enterprise and above keep 365 days.
No. ACCESS_HISTORY logs only successful queries. Use LOGIN_HISTORY and QUERY_HISTORY for failures.
Create a scheduled task that copies ACCESS_HISTORY into a long-term storage table or external stage.