REST API を使用したネットワーク セキュリティ グループ のフローのログの構成

ネットワーク セキュリティ グループ フロー ログは、ネットワーク セキュリティ グループを介して IP トラフィックの送信と受信に関する情報を表示できるようにする Network Watcher の機能です。 これらのフローのログは JSON 形式で記述され、ルールごとの送信フローと受信フロー、フローが適用される NIC、フローに関する 5 タプル情報 (送信元/宛先 IP、送信元/宛先ポート、プロトコル)、トラフィックが許可されているか拒否されているかが示されます。

開始する前に

PowerShell を使用して REST API を呼び出すには、ARMClient を使用します。 ARMClient は、Chocolatey 上の ARMClient に関するページの Chocolatey にあります。 NSG フロー ログの REST API の詳細な仕様については、こちらを参照してください

このシナリオは、Network Watcher の作成に関するページの手順を参照して、Network Watcher を作成済みであることを前提としています。

重要

Network Watcher REST API の呼び出しでは、要求 URI のリソース グループ名は Network Watcher を含むリソース グループであり、診断アクションを実行しているリソースではありません。

シナリオ

この記事で説明するシナリオでは、REST API を使用して、フローのログを有効化、無効化、照会する方法を説明します。 ネットワーク セキュリティ グループのフローのログの詳細については、ネットワーク セキュリティ グループのフローのログの概要に関する記事をご覧ください。

このシナリオでは次のことを行います。

  • フロー ログ (バージョン 2) を有効にする
  • フローのログを無効にする
  • フローのログの状態を照会する

ARMClient でログインする

Azure の資格情報を使用して ARMClient にログインします。

armclient login

Insights プロバイダーの登録

フローのログ記録を成功させるには、Microsoft.Insights プロバイダーを登録する必要があります。 Microsoft.Insights プロバイダーが登録されているかどうか不明な場合は、次のスクリプトを実行します。

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

ネットワーク セキュリティ グループのフローのログを有効にする

フロー ログのバージョン 2 を有効にするコマンドを次の例に示します。 バージョン 1 の場合は、'version' フィールドを '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=2016-12-01" $requestBody

前の例で返される応答は次のとおりです。

{
  "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
    }
  }
}

注意

ネットワーク セキュリティ グループのフローのログを無効にする

フローのログを無効にするには、次の例を使用します。 この呼び出しは、enabled プロパティが 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=2016-12-01" $requestBody

前の例で返される応答は次のとおりです。

{
  "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
    }
  }
}

注意

フローのログを照会する

次の REST 呼び出しでは、ネットワーク セキュリティ グループのフローのログの状態を照会します。

$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=2016-12-01" $requestBody

次の例は、返される応答を示しています。

{
  "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
    }
  }
}

注意

  • 前に使用した API Network Watchers - Get Flow Log Status には、Network Watcher のリソース グループに追加の "閲覧者" アクセス許可が必要です。 また、この API は古いものであり、間もなく非推奨となる可能性があります。
  • 代わりに、新しい Flow Logs - Get REST API を使用することが推奨されます。

フローのログをダウンロードする

フローのログの保存場所は作成時に定義されます。 ストレージ アカウントに保存されているこのようなフローのログにアクセスするには、Microsoft Azure Storage Explorer という便利なツールがあります。このツールは、https://storageexplorer.com/ からダウンロードできます

ストレージ アカウントが指定されている場合、パケット キャプチャ ファイルは、次の場所にあるストレージ アカウントに保存されます。

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

次のステップ

Power BI を使用して、NSG フロー ログを視覚化する方法を確認します

オープン ソース ツールを使用して、NSG フロー ログを視覚化する方法を確認する