Cómo Exportar Registros de Snowflake

Cómo Exportar Registros de Snowflake

SOC Prime Team
SOC Prime Team linkedin icon Seguir

“Registros de Snowflake” significa una de dos cosas, y la exportación funciona igual para ambas. Puede ser datos de seguridad que tu equipo guarda en tablas de Snowflake. O puede ser el propio rastro de auditoría de Snowflake, las vistas SNOWFLAKE.ACCOUNT_USAGE como LOGIN_HISTORY y QUERY_HISTORY. Para extracciones pequeñas, ejecuta la consulta en SnowSQL con salida JSON. Para algo más grande, descarga usando COPY INTO una etapa usando FILE_FORMAT = (TYPE = JSON), y descarga los archivos con GET.

Los propios registros de Snowflake atrajeron mucha atención en 2024, cuando los atacantes usaron credenciales robadas para iniciar sesión en cuentas de clientes que no aplicaban MFA. El historial de inicio de sesión y consulta son ahora solicitudes estándar en una investigación. Prime Core tiene más de 24,000 reglas de detección únicas, mapeadas a 676 técnicas MITRE ATT&CK. A continuación se muestra cómo extraer los datos, desinfectarlos e investigarlos de forma gratuita en LogTotal.

Antes de comenzar

Acceso a ACCOUNT_USAGE. Por defecto, solo ACCOUNTADMIN puede leer estas vistas. Otros roles necesitan el permiso IMPORTED PRIVILEGES en la base de datos SNOWFLAKE, o uno de sus roles de base de datos.

Latencia y retención. Las vistas ACCOUNT_USAGE mantienen un año de historial pero se retrasan hasta un par de horas. Para los últimos siete días sin retraso, la función de tabla INFORMATION_SCHEMA.LOGIN_HISTORY es una alternativa.

Un almacén. Las consultas y descargas necesitan un almacén en funcionamiento, y consumen créditos. Filtrar por tiempo.

Opción 1: SnowSQL con salida JSON (extracciones pequeñas)

snowsql -q "SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
            WHERE EVENT_TIMESTAMP >= '2026-10-19' AND EVENT_TIMESTAMP < '2026-10-20'"
  -o output_format=json -o friendly=false -o timing=false > sf_logins_1019.json

jq -c '.[]' sf_logins_1019.json > sf_logins_1019.jsonl

Opción 2: Descargar a una etapa (exportaciones grandes)

COPY INTO @~/exports/login_history_1019/
FROM (
  SELECT OBJECT_CONSTRUCT(*)
  FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
  WHERE EVENT_TIMESTAMP >= '2026-10-19' AND EVENT_TIMESTAMP < '2026-10-20'
)
FILE_FORMAT = (TYPE = JSON COMPRESSION = NONE)
OVERWRITE = TRUE;

Las descargas JSON necesitan una sola columna, por lo que la consulta envuelve cada fila en OBJECT_CONSTRUCT(*). Esa función omite campos NULL. Luego descarga desde tu etapa de usuario (@~):

GET @~/exports/login_history_1019/ file:///tmp/sf_export/;

y combina los archivos con cat /tmp/sf_export/* > sf_logins_1019.jsonl. El mismo patrón funciona para tus propias tablas de seguridad. Intercambia el nombre de la tabla y su columna de marca de tiempo.

Qué buscar en el historial de inicios de sesión

Busca inicios de sesión fallidos (IS_SUCCESS = ‘NO’) en ráfagas, y inicios de sesión con contraseña sin un segundo factor (SECOND_AUTHENTICATION_FACTOR vacío). Nota inicios de sesión desde IPs de cliente y tipos de cliente que no reconozcas. Luego sigue esas sesiones en QUERY_HISTORY para ver qué se leyó.

Subir, desinfectar y revisar en LogTotal

  1. Subir. Abre logtotal.com y suelta el archivo .jsonl.
  2. Desinfectar. 
  3. Revisar. 

Cuando algo sale mal

SíntomaCausa probableFix
El objeto no existe o no está autorizado en ACCOUNT_USAGEEl rol no tiene acceso a la base de datos SNOWFLAKESolicitar IMPORTED PRIVILEGES o un rol de base de datos
Inicio de sesión de hoy faltanteLatencia de ACCOUNT_USAGEUsa INFORMATION_SCHEMA.LOGIN_HISTORY para eventos recientes
Error de COPY INTO sobre columnasLa descarga JSON necesita una columnaEnvuelve filas en OBJECT_CONSTRUCT(*)
Campos faltantes en el JSONOBJECT_CONSTRUCT omite valores NULLEsperado; ausente significa NULL
Falla de GETNo ejecutado desde SnowSQL o el CLI de SnowflakeGET se ejecuta desde un cliente, no desde la interfaz web

FAQ

¿Puedo hacer esto en la interfaz web?

Consultas, sí. Las descargas de la interfaz web no son JSON. La ruta del cliente anterior te da líneas JSON.

¿Qué hay de las tablas de eventos de Snowflake?

Las tablas de eventos contienen registros y trazas de tus propias funciones y aplicaciones. Expórtalos de la misma manera que cualquier tabla.

Únete a la plataforma Detection as Code de SOC Prime para mejorar la visibilidad de las amenazas más relevantes para tu negocio. Para ayudarte a comenzar y obtener valor inmediato, programa una reunión ahora con los expertos de SOC Prime.