Gérer des journaux de flux NSG avec l’API REST

Les journaux de flux NSG sont une fonctionnalité d’Azure Network Watcher qui vous permet de journaliser des informations sur le trafic IP circulant dans un groupe de sécurité réseau. Pour plus d’informations sur la journalisation de flux du groupe de sécurité réseau (NSG, Network Security Group), voir la Vue d’ensemble des journaux de flux NSG.

Cet article vous indique comment utiliser l’API REST pour activer, désactiver et interroger les journaux de flux. Vous pouvez apprendre à gérer un journal de flux NSG à l’aide du Portail Azure, de PowerShell, d’Azure CLI ou du modèle ARM.

Dans cet article, vous apprenez à effectuer les actions suivantes :

  • Activer les journaux d’activité des flux (version 2)
  • Désactiver les journaux d’activité des flux
  • Interroger l’état des journaux d’activité des flux

Prérequis

  • Compte Azure avec un abonnement actif. Créez un compte gratuitement.
  • ARMClient. ARMClient est un simple outil de ligne de commande qui permet d’appeler l’API Azure Resource Manager. Pour installer l’outil, consultez ARMClient. Pour obtenir des spécifications détaillées de l’API REST des journaux de flux NSG, consultez Journaux de flux - API REST

Important

Lorsque vous passez des appels d’API REST vers Network Watcher, le nom du groupe de ressources dans l’URI de requête fait référence au groupe de ressources qui contient Network Watcher et non les ressources sur lesquelles vous exécutez les actions de diagnostic.

Se connecter avec ARMClient

Connectez-vous à armclient avec vos informations d’identification Azure.

armclient login

Inscription du fournisseur Insights

Le fournisseur Microsoft.Insights doit être inscrit pour enregistrer correctement le trafic transitant par un groupe de sécurité réseau. Si vous n’êtes pas sûr que le fournisseur Microsoft.Insights est inscrit, utilisez l’API REST Fournisseurs - Registre pour l’inscrire.

$subscriptionId = "00000000-0000-0000-0000-000000000000"
armclient post "https://management.azure.com//subscriptions/${subscriptionId}/providers/Microsoft.Insights/register?api-version=2021-04-01"

Activer les journaux de flux NSG

La commande d’activation des journaux de flux version 2 est illustrée dans l’exemple suivant. Pour la version 1, remplacez le champ « version » par « 1 » :

$subscriptionId = "00000000-0000-0000-0000-000000000000"
$targetUri = "" # example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/00000000-0000-0000-0000-000000000000/{resourceGroupName/providers/Microsoft.Storage/storageAccounts/{saName}"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$requestBody = @"
{
    'targetResourceId': '${targetUri}',
    'properties': {
    'storageId': '${storageId}',
    'enabled': 'true',
    'retentionPolicy' : {
			days: 5,
			enabled: true
		},
    'format': {
        'type': 'JSON',
        'version': 2
    }
	}
}
"@

armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/configureFlowLog?api-version=2022-11-01" $requestBody

La réponse renvoyée par l’exemple précédent est la suivante :

{
  "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": true,
    "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

Notes

Désactiver les Journaux de flux NSG

Utilisez l’exemple ci-après pour désactiver les journaux d’activité des flux. L’appel est identique à l’activation des journaux d’activité des flux, à l’exception de la définition de la propriété enabled sur la valeur false.

$subscriptionId = "00000000-0000-0000-0000-000000000000"
$targetUri = "" # example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/00000000-0000-0000-0000-000000000000/{resourceGroupName/providers/Microsoft.Storage/storageAccounts/{saName}"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$requestBody = @"
{
    'targetResourceId': '${targetUri}',
    'properties': {
    'storageId': '${storageId}',
    'enabled': 'false',
    'retentionPolicy' : {
			days: 5,
			enabled: true
		},
    'format': {
        'type': 'JSON',
        'version': 2
    }
	}
}
"@

armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/configureFlowLog?api-version=2022-11-01" $requestBody

La réponse renvoyée par l’exemple précédent est la suivante :

{
  "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": false,
    "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

Notes

Interroger les journaux d’activité des flux

L’appel REST suivant interroge l’état des journaux de flux sur un groupe de sécurité réseau.

$subscriptionId = "00000000-0000-0000-0000-000000000000"
$targetUri = "" # example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$requestBody = @"
{
    'targetResourceId': '${targetUri}',
}
"@

armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/queryFlowLogStatus?api-version=2022-11-01" $requestBody

L’exemple suivant montre la réponse retournée :

{
  "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{nsgName}",
  "properties": {
    "storageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{saName}",
    "enabled": true,
   "retentionPolicy": {
      "days": 5,
      "enabled": true
    },
    "format": {
    "type": "JSON",
    "version": 2
    }
  }
}

Notes

  • L’API REST Network Watchers - Obtenir l’état des journaux de flux utilisée dans l’exemple précédent nécessite une autorisation lecteur supplémentaire dans le groupe de ressources du Network Watcher. De plus, cette API est ancienne et pourrait bientôt être déconseillée.
  • Il est recommandé d’utiliser la nouvelle API REST Journaux de flux - Get pour interroger des journaux de flux.

Télécharger un journal de flux

L’emplacement de stockage d’un journal de flux est défini au moment de la création. L’Explorateur Stockage Microsoft Azure est un outil pratique pour accéder aux journaux de flux enregistrés dans un compte de stockage. Pour plus d’informations, consultez Prise en main de l’Explorateur Stockage.

Si un compte de stockage est spécifié, les fichiers de capture de paquets sont enregistrés dans un compte de stockage à l’emplacement suivant :

https://{storageAccountName}.blob.core.windows.net/insights-logs-networksecuritygroupflowevent/resourceId=/SUBSCRIPTIONS/{subscriptionID}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{nsgName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json

Étapes suivantes