Skip to content

[New Integration] Snowflake #11617

Closed
Closed

Description

@cpascale43

Description

The Snowflake integration enables organizations to monitor and detect security threats within their Snowflake platform. By ingesting security-relevant logs and metrics from Snowflake's various monitoring tables, the integration provides comprehensive visibility into potentially suspicious activities across the Snowflake instance.

Architecture

Snowflake data can be loaded to Elastic via Snowflake's SQL API

Dashboard Ideas

The dashboard should provide answers to questions about user data warehouse security posture, user activities and potential threats. It should enable real-time monitoring of access patterns, authentication attempts, and data usage across the Snowflake environment. These are a few key categories, and suggestions for potential charts which satisfy each category:

  • Authentication & access overview

    • Line graph showing login attempts over time
    • Geo map of login locations and suspicious access patterns
    • Heat map showing login activity by time of day/week
    • Counter showing total active sessions and failed login attempts in last 24h
  • User activity

    • Table of top users by query volume
    • Chart showing resource consumption by user/role
    • Timeline of user permission changes
    • Suspicious activity indicators (off-hours access, unusual query patterns)
  • Data access patterns

    • Bar chart of most frequently accessed tables/views
    • Line graph showing data transfer volume trends
    • Table of external data access events
    • Alerts for unusual data access volumes or patterns
    • Alerts on unauthorized stage access attempts
  • Query analysis & security

    • Chart showing distribution of query types
    • Timeline of sensitive data access events
    • Table of failed queries that might indicate attempted abuse
    • Metrics on query performance and resource utilization

Integration release checklist

This checklist is intended for integrations maintainers to ensure consistency
when creating or updating a Package, Module or Dataset for an Integration.

All changes

  • Change follows the contributing guidelines
  • Supported versions of the monitoring target are documented
  • Supported operating systems are documented (if applicable)
  • Integration or System tests exist
  • Documentation exists, useful guidelines to follow
  • Fields follow ECS and naming conventions
  • At least a manual test with ES / Kibana / Agent has been performed.
  • Required Kibana version set to:

Activity

  1. changed the title [-][New Integration] [WIP] Snowflake[/-] [+][New Integration] Snowflake[/+] on Nov 6, 2024
  2. self-assigned this
    on Nov 8, 2024
  3. removed their assignment
    on Dec 30, 2024
  4. botelastic commented on Dec 30, 2025

    @botelastic

    Hi! We just realized that we haven't looked into this issue in a while. We're sorry! We're labeling this issue as Stale to make it hit our filters and make sure we get back to it as soon as possible. In the meantime, it'd be extremely helpful if you could take a look at it as well and confirm its relevance. A simple comment with a nice emoji will be enough :+1. Thank you for your contribution!

  5. SamerHammer commented on Jul 30, 2026

    @SamerHammer

    Is there an ETA on this integration?

  6. chrisberkhout commented on Aug 3, 2026

    @chrisberkhout
    Contributor

    Is there an ETA on this integration?

    @jamiehynds

  7. added
    Team:Security-Service IntegrationsSecurity Service Integrations team [elastic/security-service-integrations]
    and removed on Sep 21, 2026
  8. infra-vault-gh-plugin-prod commented on Sep 21, 2026

    @infra-vault-gh-plugin-prod

    Pinging @elastic/security-service-integrations (Team:Security-Service Integrations)

  9. added
    Team:SDE-CrestCrest developers on the Security Integrations team [elastic/sit-crest-contractors]
    on Sep 21, 2026
  10. terrancedejesus commented on Sep 29, 2026

    @terrancedejesus
    Contributor

    Thanks for the ping @jamiehynds - will review some in-the-wild attacks and determine if scope expansion can help threat detection use cases.

    Update

    I'd add these as well:

    Reviewed the in-the-wild activity against the tables already listed. UNC5537 (Mandiant, 2024; later charged as Moucka and Binns) is covered by the current set. Password login without MFA, client application (rapeflake / FROSTBITE, DBeaver, SnowSQL, JDBC), then SHOW / SELECT / LIST, CREATE TEMPORARY STAGE, COPY INTO, and GET. Those land in LOGIN_HISTORY, SESSIONS, and QUERY_HISTORY.

    These eight are the gap for what that same access does next:

    • USERS records the backdoor user, password reset, RSA key-pair (HAS_RSA_PUBLIC_KEY), programmatic access token (HAS_PAT), user TYPE, and BYPASS_MFA_UNTIL. LOGIN_HISTORY shows the password success. It does not show that MFA was waived or that a key or token was planted for the next session.
    • GRANTS_TO_ROLES records object privileges (SELECT, USAGE, CREATE STAGE, CREATE INTEGRATION). GRANTS_TO_USERS only records which role a user holds, not what that role can read.
    • SHARES records an outbound direct share. TARGET_ACCOUNTS is the consumer account list. This path does not write a stage and does not appear in DATA_TRANSFER_HISTORY.
    • GRANTS_TO_SHARES records the databases, schemas, tables, and views granted to that share.
    • LISTING_ACCESS_HISTORY records consumer queries against a listing. Those queries never appear in the provider account's QUERY_HISTORY. This view is in DATA_SHARING_USAGE, not ACCOUNT_USAGE.
    • TASK_HISTORY records a scheduled task that repeats COPY INTO or an external-access call. The child statement is in QUERY_HISTORY, but it is not marked as a task, so it looks like ordinary ETL.
    • INTERNAL_STAGE_NETWORK_ACCESS_HISTORY records client IP and BYTES_OUT for internal-stage access. UNC5537 used CREATE TEMPORARY STAGE, and temporary stages are not kept in STAGES. Business Critical Edition, AWS only, and opt-in via SYSTEM$OPT_IN_INTERNAL_STAGE_NETWORK_LOGS.
    • NETWORK_POLICIES records ALLOWED_IP_LIST and BLOCKED_IP_LIST after a policy change. The statement text is in QUERY_HISTORY. The allow list is not a column on any source already in this issue.

    When completed, happy to start some OOTB prebuilt threat detection.

  11. jamiehynds commented on Sep 29, 2026

    @jamiehynds

    Thanks @terrancedejesus - looks like those 8 you've suggested are already included in our current scope, so we're aligned. Will keep you posted as we progress.

  12. mohitjha-elastic commented on Oct 7, 2026

    @mohitjha-elastic
    Contributor

    This integration contains a total of 9 data streams, and the PRs will be raised in batches of 3 data streams each, as listed below. I’ll keep the progress updated here.

  13. mohitjha-elastic commented on Oct 28, 2026

    @mohitjha-elastic
    Contributor

    All PRs have been merged, and the changes should now be available. Closing the issue.

    cc: @jamiehynds

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

9.7 candidateEpicIntegration:snowflakeSnowflakeNew IntegrationIssue or pull request for creating a new integration package.PartnerTeam:SDE-CrestCrest developers on the Security Integrations team [elastic/sit-crest-contractors]Team:Security-Service IntegrationsSecurity Service Integrations team [elastic/security-service-integrations]

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions