Skip to content

Cet outil n'est ni affilié à Microsoft Corporation, ni approuvé, ni sponsorisé par celle-ci. Azure, Microsoft Azure et Microsoft Defender for Cloud sont des marques du groupe de sociétés Microsoft. Les autres noms sont des marques de leurs propriétaires respectifs.

Exporter l'Activity Log Azure et les logs de ressources

Exporter l'Activity Log Azure, les logs Key Vault, Storage et flow logs pour une investigation : portail, az CLI, Log Analytics, stockage, et pièges à éviter.

Publié le 6 min de lecture

En bref. Pour une investigation, préférez le JSON au CSV du portail. Utilisez az monitor activity-log list avec --start-time, --end-time et --max-events explicites : par défaut, la fenêtre est de 6 heures et le nombre d'événements de 50. Exportez séparément le log de niveau tenant (Directory Activity) avec az rest : c'est là qu'est enregistré elevateAccess. Si des paramètres de diagnostic envoient déjà les logs vers un compte de stockage, copiez les conteneurs insights-* tels quels. Ne touchez pas aux originaux ; ne les ouvrez et ne les réenregistrez jamais dans Excel.

Une investigation Azure ne vaut que ce que vaut son export. J'ai vu plus de dossiers bloqués par un CSV tronqué que par un attaquant habile. Voici la checklist pratique, source par source, avec ce que chaque format conserve et perd.

Choisir la bonne source pour chaque log

LogOù il se trouveMeilleur export pour la forensiqueCe que l'on perd avec l'export « facile »
Activity Log (abonnement)Azure Monitor, 90 joursJSON az monitor activity-log list, ou la copie stockage / Log AnalyticsCSV du portail : noms d'affichage, pas de corps de requête, moins de détails sur l'appelant
Activity Log (tenant / Directory Activity)Azure Monitor, niveau tenantaz rest sur /providers/Microsoft.Insights/eventtypes/management/valuesAbsent de l'export de l'abonnement
Key Vault AuditEventUniquement là où un paramètre de diagnostic l'envoieConteneur insights-logs-auditevent, ou AzureDiagnostics / AZKVAuditLogs— (rien n'existe si la journalisation était désactivée)
Logs de blobs StorageUniquement là où un paramètre de diagnostic les envoieinsights-logs-storageread / storagewrite / storagedelete, ou StorageBlobLogs—
Flow logs NSG / VNetCompte de stockage choisi dans Network Watcherinsights-logs-networksecuritygroupflowevent, insights-logs-flowlogfloweventLes synthèses de traffic analytics perdent les tuples individuels
Alertes Defender for CloudDefender for CloudJSON REST Microsoft.Security/alerts, ou table SecurityAlertLe CSV du portail suffit pour un premier coup d'œil

L'Activity Log avec Azure CLI

La CLI renvoie le schéma REST : claims, httpRequest.clientIpAddress, properties.requestbody quand il existe. C'est ce qu'il vous faut.

az login
az account set --subscription <subscription-id>
az monitor activity-log list \
  --start-time 2026-08-01T00:00:00Z \
  --end-time   2026-09-15T00:00:00Z \
  --max-events 100000 \
  > activity-<subscription-id>.json

Deux valeurs par défaut méritent un avertissement. D'après la référence de az monitor activity-log, --max-events vaut 50 par défaut et --offset 6h. Lancez la commande sans eux et vous obtenez un fichier JSON propre, valide… et presque vide. Vérifiez toujours le premier et le dernier eventTimestamp de la sortie par rapport à la fenêtre demandée.

Répétez pour chaque abonnement. La CLI liste du plus récent au plus ancien ; l'ordre n'a pas d'importance pour l'analyseur, qui trie et dédoublonne.

Le log de niveau tenant

Certains des événements les plus importants ne figurent dans aucun log d'abonnement. L'élévation d'accès, par exemple, est enregistrée au niveau du tenant. Microsoft documente sa récupération avec az rest sur l'endpoint de niveau tenant (entrées de journal de l'élévation d'accès) :

az rest --method get \
  --url "https://management.azure.com/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&\$filter=eventTimestamp ge '2026-08-01T00:00:00Z'" \
  > activity-tenant.json

La même page indique que les entrées d'élévation d'accès apparaissent aussi dans les journaux d'audit Microsoft Entra (fonctionnalité en préversion au moment de l'écriture).

L'Activity Log depuis le portail

Monitor → Activity log, réglez Timespan sur la fenêtre de l'incident, retirez les filtres par défaut, puis Download as CSV. Microsoft prévient que les gros exports sont lents et conseille de réduire la période (exporter le journal d'activité dans un fichier). Le CSV est utile pour un aperçu mais perd des détails par rapport au JSON ; l'analyseur le lit au mieux, en s'appuyant sur les noms d'affichage.

Exports Log Analytics

Si des paramètres de diagnostic alimentent déjà un espace de travail, c'est la source la plus pratique, car la rétention peut y dépasser largement 90 jours.

AzureActivity
| where TimeGenerated between (datetime(2026-08-01) .. datetime(2026-09-15))
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.KEYVAULT"
| where TimeGenerated between (datetime(2026-08-01) .. datetime(2026-09-15))
StorageBlobLogs
| where TimeGenerated between (datetime(2026-08-01) .. datetime(2026-09-15))

Exportez toutes les colonnes en CSV, ou utilisez az monitor log-analytics query -w <workspace-id> --analytics-query "…" > out.json. Microsoft signale que les valeurs de AzureActivity peuvent varier en casse : utilisez des comparaisons insensibles à la casse si vous filtrez en KQL. La correspondance de l'analyseur est insensible à la casse.

Exports vers un compte de stockage (paramètres de diagnostic)

Un paramètre de diagnostic qui archive vers un compte de stockage écrit un blob par heure, dans une arborescence documentée. Pour l'Activity Log :

insights-activity-logs/resourceId=/SUBSCRIPTIONS/{sub}/y=2026/m=09/d=14/h=02/m=00/PT1H.json

Les logs de ressources suivent le même modèle dans leur propre conteneur, par exemple insights-logs-auditevent pour Key Vault (journalisation Key Vault). Copiez des conteneurs entiers avec Azure Storage Explorer ou AzCopy :

azcopy copy "https://<account>.blob.core.windows.net/insights-activity-logs?<SAS>" ./export --recursive

Conservez l'arborescence. L'analyseur lit directement l'arbre resourceId=/…/PT1H.json, depuis un dossier ou un ZIP. Si la même journée figure à la fois dans l'export de stockage et dans un export CLI, les doublons sont fusionnés.

Une précaution quand vous travaillez dans l'abonnement victime : le SAS que vous créez pour la copie est lui-même un événement (listAccountSas ou listServiceSas s'il est généré via ARM). Notez l'heure et votre IP pour ne pas enquêter sur vous-même plus tard.

Logs de ressources Key Vault et Storage

Les deux sont à activer explicitement. Key Vault → Diagnostic settings doit envoyer la catégorie AuditEvent quelque part ; les comptes de stockage ont besoin de StorageRead, StorageWrite et StorageDelete sur la sous-ressource blob. Microsoft indique que les logs Key Vault sont disponibles au plus dix minutes après l'opération.

Si aucun paramètre de diagnostic n'existait avant l'incident, l'activer maintenant ne récupère pas les lectures passées. Activez-le quand même pour la suite, et écrivez-le dans votre rapport. L'article Key Vault et l'article Storage expliquent ce que prouvent ces logs.

Flow logs NSG et VNet

Network Watcher → Flow logs indique quel compte de stockage les reçoit. Ne téléchargez que les heures et sous-réseaux utiles ; les flow logs sont volumineux. Les flow logs NSG sont écrits dans insights-logs-networksecuritygroupflowevent, les flow logs VNet dans insights-logs-flowlogflowevent. Microsoft a annoncé que les flow logs NSG seront retirés le 30 septembre 2027 et qu'il n'est plus possible d'en créer ; les flow logs VNet les remplacent. L'article sur les flow logs détaille les formats de tuples.

Alertes Defender for Cloud

Soit Security alerts → sélection → Download CSV report, soit l'API REST :

az rest --method get \
  --url "https://management.azure.com/subscriptions/<id>/providers/Microsoft.Security/alerts?api-version=2022-01-01" \
  > defender-alerts.json

Formats lus (ou non) par l'analyseur

L'analyseur Azure Forensics accepte le JSON Lines, les enveloppes {"records": […]}, les tableaux JSON, le CSV avec retours à la ligne entre guillemets, les fichiers .gz, les dossiers et les ZIP. Il explique chaque fichier ignoré. Deux formats ne sont pas pris en charge : Avro (Event Hubs Capture) et Parquet ; exportez en JSON ou CSV. Les fichiers UTF-16 (parfois produits par une redirection PowerShell sous Windows) doivent être réenregistrés en UTF-8.

Chaîne de custody, en bref

  • Calculez le hash de chaque fichier exporté (sha256sum / Get-FileHash) et notez qui l'a exporté, quand et depuis quel compte.
  • Ne modifiez jamais les originaux. Travaillez sur des copies.
  • Excel réécrit silencieusement les horodatages et les grands nombres. N'ouvrez pas et ne réenregistrez pas un CSV de logs.
  • Consignez la plage horaire et les filtres de chaque export : « aucun événement » ne veut rien dire si le filtre était faux.

Articles liés

Articles liés

La rétention de l'Activity Log Azure est de 90 jours et les logs de ressources sont désactivés par défaut. Ce que chaque log ne dit pas, et comment conclure.
Analyse pas à pas de l'Activity Log Azure avec l'analyseur gratuit Azure Forensics : charger les exports, lire verdict, constats, chronologie et entités.
Une compromission Azure fictive, analysée de bout en bout : secret fuité, rôle auto-attribué, Run Command, jeton d'identité managée volé, Key Vault et blobs.

Cet outil n'est ni affilié à Microsoft Corporation, ni approuvé, ni sponsorisé par celle-ci. Azure, Microsoft Azure et Microsoft Defender for Cloud sont des marques du groupe de sociétés Microsoft. Les autres noms sont des marques de leurs propriétaires respectifs.