Azure PowerShell을 이용한 NSG 흐름 로그 관리

Important

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 공급자 등록을 참조하세요.

  • 네트워크 보안 그룹. 네트워크 보안 그룹을 만들어야 하는 경우 네트워크 보안 그룹 만들기, 변경 또는 삭제를 참조하세요.

  • Azure Storage 계정 스토리지 계정을 만들어야 하는 경우 PowerShell을 사용하여 스토리지 계정 만들기를 참조하세요.

  • Azure Cloud Shell 또는 로컬로 설치된 Azure PowerShell.

    • 이 문서의 단계에서는 Azure Cloud Shell에서 Azure PowerShell cmdlet을 대화형으로 실행합니다. Cloud Shell에서 명령을 실행하려면 코드 블록의 오른쪽 위 모서리에서 Cloud Shell을 엽니다. 복사를 선택하여 코드를 복사한 다음, 복사한 코드를 Cloud Shell에 붙여넣어 실행합니다. Azure Portal 내에서 Cloud Shell을 실행할 수도 있습니다.

    • Azure PowerShell을 로컬로 설치하여 cmdlet을 실행할 수도 있습니다. 이 문서에는 Az PowerShell 모듈이 필요합니다. 자세한 내용은 Azure PowerShell 설치 방법을 참조하세요. 설치되어 있는 버전을 확인하려면 Get-InstalledModule -Name Az을 실행합니다. PowerShell을 로컬로 실행하는 경우 Connect-AzAccount cmdlet을 사용하여 Azure에 로그인합니다.

Insights 공급자 등록

네트워크 보안 그룹을 통해 흐르는 트래픽을 성공적으로 기록하려면 Microsoft.Insights 공급자를 등록해야 합니다. Microsoft.Insights 공급자가 등록되었는지 확실하지 않은 경우 Register-AzResourceProvider를 사용하여 등록합니다.

# Register Microsoft.Insights provider.
Register-AzResourceProvider -ProviderNamespace 'Microsoft.Insights'

흐름 로그 만들기

  1. Get-AzNetworkSecurityGroupGet-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 테넌트와 연결되어야 합니다. 각 구독에 대해 사용하는 계정에 필요한 권한이 있어야 합니다.
  2. 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
    

흐름 로그 및 트래픽 분석 작업 영역 만들기

  1. Get-AzNetworkSecurityGroupGet-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 테넌트와 연결되어야 합니다. 각 구독에 대해 사용하는 계정에 필요한 권한이 있어야 합니다.
  2. New-AzOperationalInsightsWorkspace를 사용하여 트래픽 분석 작업 영역을 만듭니다.

    # Create a traffic analytics workspace and place its properties into a variable.
    $workspace = New-AzOperationalInsightsWorkspace -Name 'myWorkspace' -ResourceGroupName 'myResourceGroup' -Location 'eastus'
    
  3. 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 cmdlet으로 -Location 매개 변수를 사용하려면 NetworkWatcherRG 리소스 그룹에 추가적으로 읽기 권한자 권한이 필요합니다.

흐름 로그 리소스의 세부 정보 보기

Get-AzNetworkWatcherFlowLog를 사용하여 흐름 로그 리소스의 세부 정보를 확인합니다.

# Get the details of a flow log.
Get-AzNetworkWatcherFlowLog -Name 'myFlowLog' -Location 'eastus'

참고 항목

Get-AzNetworkWatcherFlowLog cmdlet으로 -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를 사용합니다. 흐름 로그를 사용하지 않도록 설정하면 연결된 네트워크 보안 그룹에 대한 흐름 로깅이 중지됩니다. 그러나 흐름 로그 리소스는 모든 설정 및 연결과 함께 유지됩니다. 언제든지 다시 사용하도록 설정하여 구성된 네트워크 보안 그룹에 대한 흐름 로깅을 다시 시작할 수 있습니다.

참고 항목

흐름 로그에 대해 트래픽 분석을 사용하도록 설정한 경우 흐름 로그를 사용하지 않도록 설정하려면 먼저 트래빅 분석을 사용하지 않도록 설정해야 합니다.

# 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'

참고 항목

흐름 로그를 삭제해도 스토리지 계정에서 흐름 로그 데이터가 삭제되지는 않습니다. 스토리지 계정에 저장된 흐름 로그 데이터는 구성된 보존 정책을 따릅니다.