네트워크 보안 그룹에 대한 리소스 로깅

NSG(네트워크 보안 그룹)는 가상 네트워크 서브넷, 네트워크 인터페이스 또는 둘 다에 대한 트래픽을 허용하거나 거부하는 규칙을 포함합니다.

NSG에 대한 로깅을 사용하도록 설정 하면 다음과 같은 유형의 리소스 로그 정보를 수집할 수 있습니다.

  • 이벤트: 항목은 MAC 주소에 따라 가상 머신에 적용되는 NSG 규칙에 대해 기록됩니다.
  • 규칙 카운터: 트래픽을 허용하거나 거부하기 위해 각 NSG 규칙이 적용된 횟수에 대한 항목을 포함합니다. 이러한 규칙에 대한 상태는 300초마다 수집됩니다.

리소스 로그는 Azure Resource Manager 배포 모델을 통해 배포된 NSG에 대해서만 사용할 수 있습니다. 클래식 배포 모델을 통해 배포된 NSG에 리소스 로깅을 사용하도록 설정할 수 없습니다. 자세한 내용은 배포 모델 이해를 참조하세요.

리소스 로깅은 진단 데이터를 수집하려는 NSG에 별도로 사용하도록 설정됩니다. 활동 또는 운영 로그에 관심이 있는 경우 Azure 플랫폼 로그 개요를 참조하세요. NSG를 통해 흐르는 IP 트래픽에 관심이 있는 경우 네트워크 보안 그룹에 대한 흐름 로그를 참조하세요.

로깅 사용

Azure Portal, Azure PowerShell 또는 Azure CLI를 사용하여 리소스 로깅을 사용하도록 설정할 수 있습니다.

Azure Portal

  1. Azure Portal에 로그인합니다.

  2. Azure Portal의 맨 위에 있는 검색 상자에 네트워크 보안 그룹을 입력합니다. 검색 결과에서 네트워크 보안 그룹을 선택합니다.

  3. 로깅을 사용하도록 설정할 NSG를 선택합니다.

  4. 모니터링 아래에서 진단 설정을 선택한 다음, 진단 설정 추가를 선택합니다.

    Screenshot shows the diagnostic settings for an NSG with Add diagnostic setting highlighted.

  5. 진단 설정에서 myNsgDiagnostic과 같은 이름을 입력합니다.

  6. 로그의 경우 allLogs를 선택하거나 개별 로그 범주를 선택합니다. 각 범주에 대한 자세한 내용은 로그 범주를 참조하세요.

  7. 대상 세부 정보에서 하나 이상의 대상을 선택합니다.

    • Log Analytics 작업 영역으로 보내기
    • 스토리지 계정에 보관
    • 이벤트 허브로 스트림
    • 파트너 솔루션으로 보내기

    자세한 내용은 로그 대상을 참조하세요.

  8. 저장을 선택합니다.

  9. 로그를 보고 분석합니다. 자세한 내용은 로그 보기 및 분석을 참조하세요.

Azure PowerShell

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

Azure Cloud Shell의 이 섹션에 있는 명령을 실행하거나 또는 컴퓨터에서 PowerShell을 실행합니다. Azure Cloud Shell은 무료 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다.

컴퓨터에서 PowerShell을 실행하는 경우 Azure PowerShell 모듈 버전 1.0.0이상이 필요합니다. 설치되어 있는 버전을 확인하려면 Get-Module -ListAvailable Az을 실행합니다. 업그레이드해야 하는 경우 Azure PowerShell 모듈 설치를 참조하세요. PowerShell을 로컬로 실행 중인 경우 Connect-AzAccount cmdlet을 실행하여 필요한 권한을 가진 계정으로 Azure에 로그인해야 합니다.

리소스 로깅을 사용하는 것으로 설정하려면 기존 NSG의 ID가 필요합니다. 기존 NSG가 없는 경우 New-AzNetworkSecurityGroup cmdlet을 사용하여 NSG를 만듭니다.

Get-AzNetworkSecurityGroup cmdlet을 사용하여 리소스 로깅을 사용하도록 설정하려는 네트워크 보안 그룹을 가져옵니다. 나중에 사용할 변수에 NSG를 저장합니다. 예를 들어 myResourceGroup이라는 리소스 그룹에 존재하는 myNsg라는 NSG를 검색하려면 다음 명령을 입력합니다.

$Nsg=Get-AzNetworkSecurityGroup `
  -Name myNsg `
  -ResourceGroupName myResourceGroup

다양한 대상 유형에 대한 리소스 로그를 작성할 수 있습니다. 자세한 내용은 로그 대상을 참조하세요. 이 문서에서 로그는 Log Analytics 작업 영역 대상으로 전송됩니다. 기존 작업 영역이 없는 경우 New-AzOperationalInsightsWorkspace cmdlet을 사용하여 만들 수 있습니다.

Get-AzOperationalInsightsWorkspace cmdlet을 사용하여 기존 Log Analytics 작업 영역을 검색합니다. 예를 들어 myWorkspaces라는 리소스 그룹에서 myWorkspace라는 기존 작업 영역을 가져오고 저장하려면 다음 명령을 입력합니다.

$Oms=Get-AzOperationalInsightsWorkspace `
  -ResourceGroupName myWorkspaces `
  -Name myWorkspace

사용하도록 설정할 수 있는 두 가지 범주의 로깅이 있습니다. 자세한 내용은 로그 범주를 참조하세요. New-AzDiagnosticSetting cmdlet을 사용하여 NSG에 대한 리소스 로깅을 사용하도록 설정합니다. 다음 예제에서는 이벤트 및 카운터 범주 데이터 모두를 NSG의 작업 영역에 기록합니다. 이전 명령으로 얻은 NSG 및 작업 영역에 대한 ID를 사용합니다.

New-AzDiagnosticSetting `
   -Name myDiagnosticSetting `
   -ResourceId $Nsg.Id `
   -WorkspaceId $Oms.ResourceId

Log Analytics 작업 영역이 아닌 다른 대상에 기록하려면 명령에서 적절한 매개 변수를 사용합니다. 자세한 내용은 Azure 리소스 로그를 참조하세요.

설정에 대한 자세한 내용은 New-AzDiagnosticSetting을 참조하세요.

로그를 보고 분석합니다. 자세한 내용은 로그 보기 및 분석을 참조하세요.

Azure CLI

Azure Cloud Shell의 이 섹션에 있는 명령 또는 컴퓨터에서 Azure CLI를 실행하여 수행할 수 있습니다. Azure Cloud Shell은 무료 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다.

컴퓨터에서 CLI를 실행하는 경우 버전 2.0.38 이상이 필요합니다. 컴퓨터에서 az --version을 실행하여 설치된 버전을 확인합니다. 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요. CLI를 로컬로 실행 중인 경우 az login을 실행하여 필요한 권한을 가진 계정으로 Azure에 로그인해야 합니다.

리소스 로깅을 사용하는 것으로 설정하려면 기존 NSG의 ID가 필요합니다. 기존 NSG가 없는 경우 az network nsg create를 사용하여 만듭니다.

az network nsg show를 사용하여 리소스 로깅을 사용하도록 설정하려는 네트워크 보안 그룹을 가져오고 저장합니다. 예를 들어 myResourceGroup이라는 리소스 그룹에 존재하는 myNsg라는 NSG를 검색하려면 다음 명령을 입력합니다.

nsgId=$(az network nsg show \
  --name myNsg \
  --resource-group myResourceGroup \
  --query id \
  --output tsv)

다양한 대상 유형에 대한 리소스 로그를 작성할 수 있습니다. 자세한 내용은 로그 대상을 참조하세요. 이 문서에서 로그는 예제와 같이 Log Analytics 작업 영역 대상으로 전송됩니다. 자세한 내용은 로그 범주를 참조하세요.

az monitor diagnostic-settings create를 사용하여 NSG에 대한 리소스 로깅을 사용하는 것으로 설정합니다. 다음 예제에서는 myWorkspaces라는 리소스 그룹에 있는 myWorkspace라는 기존 작업 영역에 이벤트 및 카운터 범주 데이터를 모두 기록합니다. 이전 명령을 사용하여 저장한 NSG의 ID를 사용합니다.

az monitor diagnostic-settings create \
  --name myNsgDiagnostics \
  --resource $nsgId \
  --logs '[ { "category": "NetworkSecurityGroupEvent", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } }, { "category": "NetworkSecurityGroupRuleCounter", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } } ]' \
  --workspace myWorkspace \
  --resource-group myWorkspaces

기존 작업 영역이 없는 경우 Azure Portal 또는 Azure PowerShell을 사용하여 만듭니다. 로그를 활성화할 수 있는 두 가지 범주의 로깅이 있습니다.

특정 범주에 대한 데이터만 로깅하려는 경우 이전 명령에서 데이터를 로깅하지 않으려는 범주를 제거합니다. Log Analytics 작업 영역이 아닌 다른 대상에 기록하려면 적절한 매개 변수를 사용합니다. 자세한 내용은 Azure 리소스 로그를 참조하세요.

로그를 보고 분석합니다. 자세한 내용은 로그 보기 및 분석을 참조하세요.

로그 대상

진단 데이터를 다음 옵션으로 보낼 수 있습니다.

로그 범주

JSON 형식의 데이터는 이벤트 및 규칙 카운터라는 로그 범주에 대해 기록됩니다.

이벤트

이벤트 로그는 MAC 주소에 따라 가상 머신에 적용될 NSG 규칙에 대한 정보를 포함합니다. 다음 데이터는 각 이벤트에 대해 기록됩니다. 다음 예제에서 데이터는 IP 주소 192.168.1.4 및 00-0D-3A-92-6A-7C의 MAC 주소로 가상 머신에 대해 기록됩니다.

{
    "time": "[DATE-TIME]",
    "systemId": "[ID]",
    "category": "NetworkSecurityGroupEvent",
    "resourceId": "/SUBSCRIPTIONS/[SUBSCRIPTION-ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG-NAME]",
    "operationName": "NetworkSecurityGroupEvents",
    "properties": {
        "vnetResourceGuid":"[ID]",
        "subnetPrefix":"192.168.1.0/24",
        "macAddress":"00-0D-3A-92-6A-7C",
        "primaryIPv4Address":"192.168.1.4",
        "ruleName":"[SECURITY-RULE-NAME]",
        "direction":"[DIRECTION-SPECIFIED-IN-RULE]",
        "priority":"[PRIORITY-SPECIFIED-IN-RULE]",
        "type":"[ALLOW-OR-DENY-AS-SPECIFIED-IN-RULE]",
        "conditions":{
            "protocols":"[PROTOCOLS-SPECIFIED-IN-RULE]",
            "destinationPortRange":"[PORT-RANGE-SPECIFIED-IN-RULE]",
            "sourcePortRange":"[PORT-RANGE-SPECIFIED-IN-RULE]",
            "sourceIP":"[SOURCE-IP-OR-RANGE-SPECIFIED-IN-RULE]",
            "destinationIP":"[DESTINATION-IP-OR-RANGE-SPECIFIED-IN-RULE]"
            }
        }
}

규칙 카운터

규칙 카운터 로그는 리소스에 적용되는 각 규칙에 대한 정보를 포함합니다. 다음 예제 데이터는 규칙이 적용될 때마다 기록됩니다. 다음 예제에서 데이터는 IP 주소 192.168.1.4 및 00-0D-3A-92-6A-7C의 MAC 주소로 가상 머신에 대해 기록됩니다.

{
    "time": "[DATE-TIME]",
    "systemId": "[ID]",
    "category": "NetworkSecurityGroupRuleCounter",
    "resourceId": "/SUBSCRIPTIONS/[SUBSCRIPTION ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG-NAME]",
    "operationName": "NetworkSecurityGroupCounters",
    "properties": {
        "vnetResourceGuid":"[ID]",
        "subnetPrefix":"192.168.1.0/24",
        "macAddress":"00-0D-3A-92-6A-7C",
        "primaryIPv4Address":"192.168.1.4",
        "ruleName":"[SECURITY-RULE-NAME]",
        "direction":"[DIRECTION-SPECIFIED-IN-RULE]",
        "type":"[ALLOW-OR-DENY-AS-SPECIFIED-IN-RULE]",
        "matchedConnections":125
        }
}

참고 항목

통신에 대한 원본 IP 주소는 기록되지 않습니다. NSG에 대한 NSG 흐름 로깅을 사용하도록 설정할 수 있으며, 이는 모든 규칙 카운터 정보 및 통신을 시작한 원본 IP 주소를 기록합니다. NSG 흐름 로그 데이터가 Azure Storage 계정에 기록됩니다. Azure Network Watcher의 트래픽 분석 기능을 사용하여 데이터를 분석할 수 있습니다.

로그 보기 및 분석

다음으로 진단 데이터를 보내는 경우:

  • Azure Monitor 로그: 향상된 인사이트를 위해 네트워크 보안 그룹 분석 솔루션을 사용할 수 있습니다. 솔루션은 가상 머신에서 네트워크 인터페이스의 MAC 주소당 트래픽을 허용하거나 거부하는 NSG 규칙에 대한 시각화를 제공합니다.

  • Azure Storage 계정: PT1H.json 파일에 데이터가 기록됩니다. 다음을 찾을 수 있습니다.

    • 다음 경로에 있는 이벤트 로그: insights-logs-networksecuritygroupevent/resourceId=/SUBSCRIPTIONS/[ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME-FOR-NSG]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG NAME]/y=[YEAR]/m=[MONTH/d=[DAY]/h=[HOUR]/m=[MINUTE]
    • 다음 경로에 있는 규칙 카운터 로그: insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/[ID]/RESOURCEGROUPS/[RESOURCE-GROUP-NAME-FOR-NSG]/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/[NSG NAME]/y=[YEAR]/m=[MONTH/d=[DAY]/h=[HOUR]/m=[MINUTE]

리소스 로그 데이터를 보는 방법을 알아보려면 Azure 플랫폼 로그 개요를 참조하세요.

다음 단계

  • 활동 로깅에 대한 자세한 내용은 Azure 플랫폼 로그 개요를 참조하세요.

    활동 로깅은 Azure 배포 모델 중 하나를 통해 만든 NSG에 대해 기본적으로 사용됩니다. 활동 로그의 NSG 내에서 완료된 작업을 확인하려면 다음과 같은 리소스 유형을 포함하는 항목을 찾습니다.

    • Microsoft.ClassicNetwork/networkSecurityGroups
    • Microsoft.ClassicNetwork/networkSecurityGroups/securityRules
    • Microsoft.Network/networkSecurityGroups
    • Microsoft.Network/networkSecurityGroups/securityRules
  • 진단 정보를 기록하는 방법을 알아보려면 Azure Portal을 사용하여 가상 머신 간 네트워크 트래픽 로그를 참조하세요.