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
}
}
}
注意
- 前に使用した API Network Watchers - Set Flow Log Configuration は古いものであり、間もなく非推奨となる可能性があります。
- 代わりに、新しい Flow Logs - Create Or Update REST API を使用することをお勧めします。
ネットワーク セキュリティ グループのフローのログを無効にする
フローのログを無効にするには、次の例を使用します。 この呼び出しは、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
}
}
}
注意
- 前に使用した API Network Watchers - Set Flow Log Configuration は古いものであり、間もなく非推奨となる可能性があります。
- 新しい Flow Logs - Create Or Update REST API を使用して、フロー ログと Flow Logs - Delete を無効にして、フロー ログ リソースを削除することが推奨されます。
フローのログを照会する
次の 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 フロー ログを視覚化する方法を確認します