Les « journaux Snowflake » signifient deux choses, et l’exportation fonctionne de la même manière pour les deux. Cela peut être des données de sécurité que votre équipe stocke dans des tables Snowflake. Ou il peut s’agir de la propre piste d’audit de Snowflake, les vues SNOWFLAKE.ACCOUNT_USAGE telles que LOGIN_HISTORY et QUERY_HISTORY. Pour de petites extractions, exécutez la requête dans SnowSQL avec une sortie JSON. Pour tout ce qui est plus grand, déchargez avec COPY INTO un stage en utilisant FILE_FORMAT = (TYPE = JSON), et téléchargez les fichiers avec GET.
Les propres journaux de Snowflake ont attiré beaucoup d’attention en 2024, lorsque des attaquants ont utilisé des identifiants volés pour se connecter à des comptes clients qui n’appliquaient pas MFA. L’historique de connexion et de requête sont désormais des demandes standard dans une enquête. Prime Core dispose de plus de 24 000 règles de détection uniques, mappées à 676 techniques MITRE ATT&CK. Voici comment extraire les données, les assainir et les enquêter gratuitement dans LogTotal.
Avant de commencer
Accès à ACCOUNT_USAGE. Par défaut, seul ACCOUNTADMIN peut lire ces vues. Les autres rôles ont besoin de la subvention IMPORTED PRIVILEGES sur la base de données SNOWFLAKE, ou de l’un de ses rôles de base de données.
Latence et rétention. Les vues ACCOUNT_USAGE conservent un an d’historique mais accusent un retard pouvant aller jusqu’à quelques heures. Pour les sept derniers jours sans décalage, la fonction de table INFORMATION_SCHEMA.LOGIN_HISTORY est une alternative.
Un entrepôt. Les requêtes et déchargements nécessitent un entrepôt en cours d’exécution, et ils consomment des crédits. Filtrer par heure.
Option 1 : SnowSQL avec sortie JSON (petites extractions)
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
Option 2 : Décharger vers un stage (grandes exportations)
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;
Les déchargements JSON nécessitent une seule colonne, c’est pourquoi la requête enroule chaque ligne dans OBJECT_CONSTRUCT(*). Cette fonction omet les champs NULL. Ensuite téléchargez depuis votre user stage (@~) :
GET @~/exports/login_history_1019/ file:///tmp/sf_export/;
et combinez les fichiers avec cat /tmp/sf_export/* > sf_logins_1019.jsonl. Le même schéma fonctionne pour vos propres tables de sécurité. Remplacez par le nom de la table et sa colonne timestamp.
Que chercher dans l’historique des connexions
Recherchez les connexions échouées (IS_SUCCESS = ‘NO’) en rafales, et les connexions par mot de passe sans second facteur (SECOND_AUTHENTICATION_FACTOR vide). Notez les connexions à partir d’IP et de types de clients que vous ne reconnaissez pas. Ensuite, suivez ces sessions dans QUERY_HISTORY pour voir ce qui a été lu.
Téléchargez, assainissez et examinez dans LogTotal
- Téléchargez. Ouvrir logtotal.com et déposez le fichier .jsonl.
- Assainissez.
- Examinez.
Quand ça va mal
| Symptôme | Cause probable | Fix |
|---|---|---|
| Objet n’existe pas ou non autorisé sur ACCOUNT_USAGE | Le rôle n’a pas accès à la base de données SNOWFLAKE | Demander des IMPORTED PRIVILEGES ou un rôle de base de données |
| Connexions de la journée manquantes | Latence ACCOUNT_USAGE | Utilisez INFORMATION_SCHEMA.LOGIN_HISTORY pour les événements récents |
| Erreur COPY INTO concernant les colonnes | Le déchargement JSON nécessite une colonne | Enveloppez les lignes dans OBJECT_CONSTRUCT(*) |
| Champs manquants dans le JSON | OBJECT_CONSTRUCT omet les valeurs NULL | Attendu; absent signifie NULL |
| Échec de GET | Non exécuté depuis SnowSQL ou le CLI Snowflake | GET s’exécute depuis un client, pas l’interface web |
FAQ
Puis-je faire cela dans l’interface web ?
Requêtes, oui. Les téléchargements depuis l’interface web ne sont pas en JSON. La route client ci-dessus vous fournit des lignes JSON.
Qu’en est-il des tables d’événements Snowflake ?
Les tables d’événements contiennent des journaux et traces de vos propres fonctions et applications. Exportez-les de la même manière que n’importe quelle table.