大事な
2027 年 9 月 30 日に、ネットワーク セキュリティ グループ (NSG) フロー ログは廃止されます。 この提供終了の一環として、2025 年 6 月 30 日以降、新しい NSG フロー ログを作成できなくなります。 NSG フロー ログの制限を克服するために、を仮想ネットワーク フロー ログ に移行 することをお勧めします。 提供終了日を過ぎると、NSG フロー ログで有効になっているトラフィック分析はサポートされなくなり、サブスクリプション内の既存の NSG フロー ログ リソースが削除されます。 ただし、NSG フロー ログ のレコードは削除されないため、それぞれの保持ポリシーに従い続けます。 詳細については、公式発表を参照してください。
ネットワーク セキュリティ グループのフロー ログは、ネットワーク セキュリティ グループを通過する IP トラフィックに関する情報をログに記録できる Azure Network Watcher の機能です。 ネットワーク セキュリティ グループのフロー ログの詳細については、「NSG フロー ログの概要を参照してください。
この記事では、REST API を使用して、REST API を使用してフロー ログの有効化、無効化、クエリを実行する方法について説明します。 Azure portal、PowerShell、Azure 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
}
}
}
手記
- Network Watchers - 前の例で使用した REST API フロー ログ構成の設定は古く、間もなく非推奨になる可能性があります。
- 新しい フロー ログ - 作成または更新 REST API を使用してフロー ログを作成または更新することをお勧めします。
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
}
}
}
手記
- Network Watchers - 前の例で使用した REST API フロー ログ構成の設定は古く、間もなく非推奨になる可能性があります。
- 新しい フロー ログ - フロー ログの作成または更新 - REST API を使用してフロー ログを無効にし、フロー ログ - REST API 削除してフロー ログ リソースを削除することをお勧めします。
フロー ログをクエリする
次の 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
}
}
}
手記
- 前の例で使用した Network Watchers - Get Flow Log Status REST API には、network watcher のリソース グループに追加の リーダー アクセス許可が必要です。 さらに、この API は古く、間もなく非推奨になる可能性があります。
- 新しい フロー ログを使用することをお勧めします。REST API 取得してフロー ログにクエリを実行します。
フロー ログをダウンロードする
フロー ログの保存場所は作成時に定義されます。 ストレージ アカウントに保存されたフロー ログにアクセスするための便利なツールは、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
次の手順
- Azure 組み込みポリシーを使用して NSG フロー ログを監査またはデプロイする方法については、「Azure Policy を使用して NSG フロー ログを管理する」を参照してください。
- トラフィック分析の詳細については、「トラフィック分析の」を参照してください。