Azure PowerShell を使用して NSG フロー ログを管理する
重要
2027 年 9 月 30 日にネットワーク セキュリティ グループ (NSG) フロー ログは廃止されます。 この提供終了の一環として、2025 年 6 月 30 日以降新しい NSG フロー ログを作成できなくなります。 NSG フロー ログの制限を克服するために、仮想ネットワーク フロー ログに移行することをお勧めします。 提供終了日を過ぎると、NSG フロー ログで有効になっているトラフィック分析がサポートされなくなり、サブスクリプション内の既存の NSG フロー ログ リソースが削除されます。 ただし、NSG フロー ログのレコードは削除されず、引き続きそれぞれの保持ポリシーに従います。 詳細については、公式告知を参照してください。
ネットワーク セキュリティ グループのフロー ログは、ネットワーク セキュリティ グループを通過する IP トラフィックに関する情報をログに記録できる Azure Network Watcher の機能です。 ネットワーク セキュリティ グループのフロー ログの詳細については、NSG フロー ログの概要に関するページを参照してください。
この記事では、Azure PowerShell を使用して NSG フロー ログを作成、変更、無効化、または削除する方法について説明します。 Azure portal、Azure CLI、REST API、ARM テンプレートを使用して NSG フロー ログを管理する方法を説明します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Insights プロバイダー。 詳細については、「Insights プロバイダーを登録する」を参照してください。
ネットワーク セキュリティ グループ。 ネットワーク セキュリティ グループを作成する必要がある場合は、ネットワーク セキュリティ グループの作成、変更、または削除に関するページを参照してください。
Azure ストレージ アカウント。 ストレージ アカウントを作成する必要がある場合は、PowerShell を使用したストレージ アカウントの作成に関するページを参照してください。
ローカルにインストールされた Azure Cloud Shell または Azure PowerShell。
この記事の手順では、Azure Cloud Shell で Azure PowerShell コマンドレットを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く] を選択します。 [コピー] を選択してコードをコピーし、続いて Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure PowerShell をローカルにインストールしてコマンドレットを実行することもできます。 この記事では、Az PowerShell モジュールが必要です。 詳細については、「Azure PowerShell のインストール方法」を参照してください。 インストールされているバージョンを確認するには、
Get-InstalledModule -Name Az
を実行します。 PowerShell をローカルで実行している場合は、Connect-AzAccount コマンドレットを使用して Azure にサインインします。
Insights プロバイダーの登録
ネットワーク セキュリティ グループを通過するトラフィックを正しくログに記録するために、Microsoft.Insights プロバイダーが登録されている必要があります。 Microsoft.Insights プロバイダーが登録されているかどうか不明な場合は、Register-AzResourceProvider を使用して登録します。
# Register Microsoft.Insights provider.
Register-AzResourceProvider -ProviderNamespace 'Microsoft.Insights'
フロー ログの作成
フロー ログを作成するネットワーク セキュリティ グループのプロパティと、作成したフロー ログの保存に使用するストレージ アカウントを、それぞれ Get-AzNetworkSecurityGroup と Get-AzStorageAccount を使用して取得します。
# Place the network security group properties into a variable. $nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup' # Place the storage account properties into a variable. $sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'
注意
- ストレージ アカウントが別のサブスクリプションにある場合は、ネットワーク セキュリティ グループとストレージ アカウントを同じ Azure Active Directory テナントに関連付ける必要があります。 各サブスクリプションで使用するアカウントは、必要なアクセス許可を持っている必要があります。
New-AzNetworkWatcherFlowLog を使用してフロー ログを作成します。 フロー ログは、Network Watcher の既定のリソース グループ NetworkWatcherRG に作成されます。
# Create a version 1 NSG flow log. New-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true
フロー ログとトラフィック分析ワークスペースを作成する
フロー ログを作成するネットワーク セキュリティ グループのプロパティと、作成したフロー ログの保存に使用するストレージ アカウントを、それぞれ Get-AzNetworkSecurityGroup と Get-AzStorageAccount を使用して取得します。
# Place the network security group properties into a variable. $nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup' # Place the storage account properties into a variable. $sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'
注意
- ストレージ アカウントには、Microsoft サービスまたは特定の仮想ネットワークのみにネットワーク アクセスを制限するネットワーク規則を指定できません。
- ストレージ アカウントが別のサブスクリプションにある場合は、ネットワーク セキュリティ グループとストレージ アカウントを同じ Azure Active Directory テナントに関連付ける必要があります。 各サブスクリプションで使用するアカウントは、必要なアクセス許可を持っている必要があります。
New-AzOperationalInsightsWorkspace を使用して、トラフィック分析ワークスペースを作成します。
# Create a traffic analytics workspace and place its properties into a variable. $workspace = New-AzOperationalInsightsWorkspace -Name 'myWorkspace' -ResourceGroupName 'myResourceGroup' -Location 'eastus'
New-AzNetworkWatcherFlowLog を使用してフロー ログを作成します。 フロー ログは、Network Watcher の既定のリソース グループ NetworkWatcherRG に作成されます。
# Create a version 1 NSG flow log with traffic analytics. New-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true -EnableTrafficAnalytics -TrafficAnalyticsWorkspaceId $workspace.ResourceId
フロー ログを変更する
Set-AzNetworkWatcherFlowLog を使用して、フロー ログのプロパティを変更できます。 たとえば、フロー ログのバージョンを変更したり、トラフィック分析を無効にしたりできます。
# Place the network security group properties into a variable.
$nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup'
# Place the storage account properties into a variable.
$sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'
# Update the NSG flow log.
Set-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id -Enabled $true -FormatVersion 2
リージョン内のすべてのフロー ログを一覧表示する
Get-AzNetworkWatcherFlowLog を使用して、サブスクリプション内の特定のリージョン内のすべての NSG フロー ログ リソースを一覧表示します。
# Get all NSG flow logs in East US region.
Get-AzNetworkWatcherFlowLog -Location 'eastus' | format-table Name
注意
Get-AzNetworkWatcherFlowLog
コマンドレットで -Location
パラメーターを使用するには、NetworkWatcherRG リソース グループに追加の閲覧者アクセス許可が必要です。
フロー ログ リソースの詳細を表示する
Get-AzNetworkWatcherFlowLog を使用して、フロー ログ リソースの詳細を表示します。
# Get the details of a flow log.
Get-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus'
注意
Get-AzNetworkWatcherFlowLog
コマンドレットで -Location
パラメーターを使用するには、NetworkWatcherRG リソース グループに追加の閲覧者アクセス許可が必要です。
フローのログをダウンロードする
フローのログの保存場所は作成時に定義されます。 ストレージ アカウントからフロー ログにアクセスしてダウンロードするには、Azure Storage Explorer を使用できます。 詳細については、「Storage Explorer の概要」を参照してください。
ストレージ アカウントに保存される NSG フロー ログ ファイルは、次のパスに従います。
https://{storageAccountName}.blob.core.windows.net/insights-logs-networksecuritygroupflowevent/resourceId=/SUBSCRIPTIONS/{subscriptionID}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{NetworkSecurityGroupName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json
フロー ログの構造については、NSG フロー ログのログ形式に関するページを参照してください。
フロー ログを無効にする
フロー ログを削除せずに一時的に無効にするには、-Enabled $false
パラメーターで Set-AzNetworkWatcherFlowLog を使用します。 フロー ログを無効にすると、関連付けられているネットワーク セキュリティ グループのフロー ログが停止します。 ただし、フロー ログ リソースは、そのすべての設定および関連付けと共に残ります。 いつでも再び有効にして、構成されたネットワーク セキュリティ グループのフロー ログを再開することができます。
Note
フロー ログに対してトラフィック分析が有効になっている場合は、フロー ログを無効にする前にそれを無効にする必要があります。
# Place the network security group properties into a variable.
$nsg = Get-AzNetworkSecurityGroup -Name 'myNSG' -ResourceGroupName 'myResourceGroup'
# Place the storage account properties into a variable.
$sa = Get-AzStorageAccount -Name 'myStorageAccount' -ResourceGroupName 'myResourceGroup'
# Update the NSG flow log.
Set-AzNetworkWatcherFlowLog -Enabled $false -Name 'myFlowLog' -Location 'eastus' -TargetResourceId $nsg.Id -StorageId $sa.Id
フロー ログを削除する
NSG フロー ログを完全に削除するには、Remove-AzNetworkWatcherFlowLog コマンドを使用します。 フロー ログを削除すると、その設定と関連付けがすべて削除されます。 同じネットワーク セキュリティ グループに対してフロー ログをもう一度開始するには、それに対して新しいフロー ログを作成する必要があります。
# Delete the flow log.
Remove-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus'
Note
フロー ログを削除しても、ストレージ アカウントからフロー ログ データは削除されません。 ストレージ アカウントに格納されているフロー ログ データは、構成されたアイテム保持ポリシーに従います。
関連するコンテンツ
- Azure 組み込みポリシーを使用して NSG フロー ログを監査またはデプロイする方法については、「Azure Policy を使用して NSG フロー ログを管理する」を参照してください。
- トラフィック分析については、トラフィック分析に関するページを参照してください。