次の方法で共有


REST API を使用して NSG フロー ログを管理する

大事な

2027 年 9 月 30 日に、ネットワーク セキュリティ グループ (NSG) フロー ログは廃止されます。 この提供終了の一環として、2025 年 6 月 30 日以降、新しい NSG フロー ログを作成できなくなります。 NSG フロー ログの制限を克服するために、を仮想ネットワーク フロー ログ に移行 することをお勧めします。 提供終了日を過ぎると、NSG フロー ログで有効になっているトラフィック分析はサポートされなくなり、サブスクリプション内の既存の NSG フロー ログ リソースが削除されます。 ただし、NSG フロー ログ のレコードは削除されないため、それぞれの保持ポリシーに従い続けます。 詳細については、公式発表を参照してください。

ネットワーク セキュリティ グループのフロー ログは、ネットワーク セキュリティ グループを通過する IP トラフィックに関する情報をログに記録できる Azure Network Watcher の機能です。 ネットワーク セキュリティ グループのフロー ログの詳細については、「NSG フロー ログの概要を参照してください。

この記事では、REST API を使用して、REST API を使用してフロー ログの有効化、無効化、クエリを実行する方法について説明します。 Azure portalPowerShellAzure CLI、または ARM テンプレートを使用して、NSG フロー ログを管理する方法を学ぶことができます。

この記事では、次の方法について説明します。

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

前提 条件

  • アクティブなサブスクリプションを持つ Azure アカウント。 無料用のアカウントを作成します。
  • ARMClient。 ARMClient は、Azure Resource Manager API を呼び出す簡単なコマンド ライン ツールです。 ツールをインストールするには、ARMClient を参照してください。 NSG フロー ログ REST API の詳細な仕様については、「フロー ログ - REST API」を参照してください。

大事な

Network Watcher に対して REST API 呼び出しを行うと、要求 URI のリソース グループ名は、診断アクションを実行しているリソースではなく、Network Watcher を含むリソース グループを参照します。

ARMClient を使用してサインインする

Azure 資格情報を使用して armclient にサインインします。

armclient login

Insights プロバイダーを登録する

ネットワーク セキュリティ グループを通過するトラフィックを正常にログに記録するには、Microsoft.Insights プロバイダー 登録する必要があります。 Microsoft.Insights プロバイダーが登録されているかどうかがわからない場合は、Providers - Register REST API を使って登録してください。

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
armclient post "https://management.azure.com//subscriptions/${subscriptionId}/providers/Microsoft.Insights/register?api-version=2021-04-01"

NSG フロー ログを有効にする

フロー ログ バージョン 2 を有効にするコマンドを次の例に示します。 バージョン 1 の場合、'version' フィールドを '1' に置き換えます。

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$targetUri = "" # example /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/{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

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

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

手記

NSG フロー ログを無効にする

フロー ログを無効にするには、次の例を使用します。 呼び出しはフロー ログの有効化と同じですが、有効なプロパティ false が設定されている点が異なります。

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$targetUri = "" # example /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/{resourceGroupName/providers/Microsoft.Network/networkSecurityGroups/{nsgName}"
$storageId = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/{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

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

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

手記

フロー ログをクエリする

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

$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$targetUri = "" # example /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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

返される応答の例を次に示します。

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

手記

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

フロー ログの保存場所は作成時に定義されます。 ストレージ アカウントに保存されたフロー ログにアクセスするための便利なツールは、Microsoft Azure Storage Explorer です。 詳細については、「Storage Explorerの使用を開始する」を参照してください。

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

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

次の手順