네트워크 보안 그룹에 대한 흐름 로깅
Important
2027년 9월 30일에 NSG(네트워크 보안 그룹) 흐름 로그가 사용 중지됩니다. 이러한 사용 중지의 일환으로 2025년 6월 30일부터 새로운 NSG 흐름 로그를 더 이상 만들 수 없습니다. NSG 흐름 로그의 제한을 극복하는 가상 네트워크 흐름 로그로 마이그레이션하는 것이 좋습니다. 사용 중지일 이후에는 NSG 흐름 로그를 사용한 트래픽 분석이 더 이상 지원되지 않으며, 구독에 포함된 기존 NSG 흐름 로그 리소스는 삭제됩니다. 그러나 NSG 흐름 로그 레코드는 삭제되지 않으며 각각의 보존 정책을 계속 따릅니다. 자세한 내용은 공식 공지를 참조하세요.
NSG(네트워크 보안 그룹) 흐름 로깅은 네트워크 보안 그룹을 통해 흐르는 IP 트래픽에 대한 정보를 기록할 수 있는 Azure Network Watcher의 기능입니다. 흐름 데이터는 액세스할 수 있는 Azure Storage로 전송되며 원하는 시각화 도구, SIEM(보안 정보 및 이벤트 관리) 솔루션 또는 IDS(침입 탐지 시스템)로 내보낼 수 있습니다.
흐름 로그를 사용하는 이유
네트워크를 보호하고 최적화할 수 있도록 자체 네트워크를 모니터링, 관리 및 파악하는 것이 중요합니다. 네트워크의 현재 상태, 연결 중인 사용자 및 사용자가 연결하는 위치를 알아야 합니다. 또한 인터넷에 열려 있는 포트, 예상되는 네트워크 동작, 불규칙한 네트워크 동작 및 트래픽이 갑자기 증가하는 시기를 알아야 합니다.
흐름 로그는 클라우드 환경에서 모든 네트워크 활동의 진위를 보여 주는 요소입니다. 리소스를 최적화하려는 스타트업이든 침입을 탐지하려는 대기업이든, 흐름 로그가 도움이 될 수 있습니다. 네트워크 흐름 최적화, 처리량 모니터링, 규정 준수 확인, 침입 탐지 등에 흐름 로그를 사용할 수 있습니다.
일반 사용 예
네트워크 모니터링
- 알 수 없거나 원치 않는 트래픽을 식별합니다.
- 트래픽 수준과 대역폭 사용량을 모니터링합니다.
- IP와 포트로 흐름 로그를 필터링하여 애플리케이션 동작을 이해합니다.
- 모니터링 대시보드를 설정하려면 선택한 분석 및 시각화 도구로 흐름 로그를 내보냅니다.
사용량 모니터링 및 최적화
- 네트워크에서 상위 토커를 식별합니다.
- GeoIP 데이터와 결합하여 하위 지역 간 트래픽을 식별합니다.
- 용량 예측을 위한 트래픽 증가를 이해합니다.
- 데이터를 사용하여 지나치게 제한적인 트래픽 규칙을 제거합니다.
규정 준수
- 흐름 데이터를 사용하여 네트워크 격리 및 엔터프라이즈 액세스 규칙 준수를 확인합니다.
네트워크 포렌식 및 보안 분석
- 손상된 IP 및 네트워크 인터페이스에서 네트워크 흐름을 분석합니다.
- 흐름 로그를 선택한 SIEM 또는 IDS 도구로 내보냅니다.
NSG 흐름 로그의 작동 방식
NSG 흐름 로그의 키 속성은 다음과 같습니다.
- 흐름 로그는 OSI(Open Systems Interconnection) 모델의 레이어 4에서 작동하며 네트워크 보안 그룹으로 들어오고 나가는 모든 IP 흐름을 기록합니다.
- 로그는 Azure 플랫폼을 통해 1분 간격으로 수집됩니다. 로그는 어떤 방식으로든 Azure 리소스 또는 네트워크 성능에는 영향을 주지 않습니다.
- 로그는 JSON 형식으로 작성되며 네트워크 보안 그룹 규칙에 따라 아웃바운드 및 인바운드 흐름을 표시합니다.
- 각 로그 기록에는 흐름이 적용되는 NIC(네트워크 인터페이스), 5-튜플 정보, 트래픽 결정 및 처리량 정보(버전 2에만 해당)가 포함됩니다.
- NSG 흐름 로그에는 생성 후 최대 1년까지 로그를 자동으로 삭제할 수 있는 보존 기능이 있습니다.
참고 항목
보존은 범용 v2 스토리지 계정을 사용하는 경우에만 가능합니다.
흐름 로그의 핵심 개념은 다음과 같습니다.
- 소프트웨어 정의 네트워크는 가상 네트워크와 서브넷을 중심으로 구성됩니다. 네트워크 보안 그룹을 사용하여 이러한 가상 네트워크와 서브넷의 보안을 관리할 수 있습니다.
- 네트워크 보안 그룹에는 네트워크 보안 그룹이 연결된 Azure 리소스로 나가거나 반대로 Azure 리소스에서 들어오는 네트워크 트래픽을 허용하거나 거부하는 보안 규칙이 포함되어 있습니다. 네트워크 보안 그룹은 서브넷 또는 VM(가상 머신)의 네트워크 인터페이스와 연결할 수 있습니다. 자세한 내용은 네트워크 보안 그룹 개요를 참조하세요.
- 네트워크의 모든 트래픽 흐름은 해당 네트워크 보안 그룹의 규칙을 통해 평가됩니다. 이러한 평가 결과가 NSG 흐름 로그입니다.
- NSG 흐름 로그는 Azure 플랫폼을 통해 수집되며 Azure 리소스를 변경할 필요가 없습니다.
- 네트워크 보안 그룹 규칙에는 종료와 비종료의 두 가지 유형이 있습니다. 두 유형의 로깅 동작은 서로 다릅니다.
- 거부 규칙은 종료됩니다. 트래픽을 거부하는 네트워크 보안 그룹은 흐름 로그에 기록합니다. 이 경우 NSG가 트래픽을 거부하면 처리가 중지됩니다.
- 허용 규칙은 종료되지 않습니다. 네트워크 보안 그룹이 트래픽을 허용하는 경우 처리는 다음 네트워크 보안 그룹으로 계속됩니다. 트래픽을 허용하는 마지막 네트워크 보안 그룹은 흐름 로그에 트래픽을 기록합니다.
- NSG 흐름 로그는 스토리지 계정에 기록됩니다. Network Watcher 트래픽 분석, Splunk, Grafana 및 Stealthwatch와 같은 도구를 사용하여 NSG 흐름 로그를 내보내고, 처리하고, 분석하고, 시각화할 수 있습니다.
로그 형식
NSG 흐름 로그의 속성은 다음과 같습니다.
time
: 이벤트가 기록된 시간(UTC)입니다.systemId
: 네트워크 보안 그룹의 시스템 ID입니다.category
: 이벤트의 범주입니다. 범주는 항상NetworkSecurityGroupFlowEvent
입니다.resourceid
: 네트워크 보안 그룹의 리소스 ID입니다.operationName
: 항상NetworkSecurityGroupFlowEvents
입니다.properties
: 흐름의 속성 컬렉션입니다.Version
: 흐름 로그의 이벤트 스키마 버전 번호입니다.flows
: 흐름 컬렉션입니다. 이 속성에는 서로 다른 규칙에 대한 여러 항목이 있습니다.rule
: 이 규칙에 대한 흐름이 나열됩니다.flows
: 흐름 컬렉션입니다.mac
: 흐름이 수집된 VM에 대한 NIC의 MAC 주소입니다.flowTuples
: 흐름 튜플의 여러 속성을 쉼표로 구분된 형식으로 포함하는 문자열입니다.Time stamp
: 흐름이 발생한 타임스탬프이며 UNIX epoch 형식입니다.Source IP
: 원본 IP 주소입니다.Destination IP
: 대상 IP 주소입니다.Source port
: 원본 포트입니다.Destination port
: 대상 포트입니다.Protocol
: 흐름의 프로토콜입니다. TCP의 유효한 값은T
이고, UDP의 유효한 값은U
입니다.Traffic flow
: 트래픽 흐름의 방향입니다. 유효한 값은 인바운드의 경우I
이고 아웃바운드의 경우O
입니다.Traffic decision
: 트래픽이 허용되었는지 아니면 거부되었는지를 나타냅니다. 유효한 값은 허용된 경우A
, 거부된 경우D
입니다.Flow State - Version 2 Only
: 흐름의 상태입니다. 가능한 상태는 다음과 같습니다.B
: 흐름이 만들어질 때 시작됩니다. 통계가 제공되지 않습니다.C
: 진행 중인 흐름에 대해 계속됩니다. 통계가 5분 간격으로 제공됩니다.E
: 흐름이 종료되면 끝납니다. 통계가 제공됩니다.
Packets sent - Version 2 Only
: 마지막 업데이트 이후 원본에서 대상으로 전송된 총 TCP 패킷 수입니다.Bytes sent - Version 2 Only
: 마지막 업데이트 이후 원본에서 대상으로 전송된 총 TCP 패킷 바이트 수입니다. 패킷 바이트에는 패킷 헤더 및 페이로드가 포함됩니다.Packets received - Version 2 Only
: 마지막 업데이트 이후 대상에서 원본으로 전송된 총 TCP 패킷 수입니다.Bytes received - Version 2 Only
: 마지막 업데이트 이후 대상에서 원본으로 전송된 총 TCP 패킷 바이트 수입니다. 패킷 바이트에는 패킷 헤더 및 페이로드가 포함됩니다.
NSG 로그 흐름 버전 2에는 흐름 상태라는 개념이 도입되었습니다. 수신하는 흐름 로그 버전을 구성할 수 있습니다.
흐름 상태 B
는 흐름이 시작될 때 기록됩니다. 흐름 상태 C
및 흐름 상태 E
는 각각 흐름의 연속 및 흐름 종료를 나타내는 상태입니다. C
및 E
상태 모두 트래픽 대역폭 정보를 포함합니다.
샘플 로그 레코드
다음 NSG 흐름 로그 예제에서는 여러 레코드가 앞에서 설명한 속성 목록을 따릅니다.
참고 항목
flowTuples
속성의 값은 쉼표로 구분된 목록입니다.
버전 1
다음은 버전 1 NSG 흐름 로그의 형식 예제입니다.
{
"records": [
{
"time": "2017-02-16T22:00:32.8950000Z",
"systemId": "55ff55ff-aa66-bb77-cc88-99dd99dd99dd",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/FABRIKAMRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/FABRIAKMVM1-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 1,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282421,192.0.2.95,10.1.0.4,51529,5358,T,I,D"
]
}
]
},
{
"rule": "UserRule_default-allow-rdp",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282370,192.0.2.17,10.1.0.4,61771,3389,T,I,A",
"1487282393,203.0.113.34,10.1.0.4,58596,3389,T,I,A",
"1487282393,192.0.2.154,10.1.0.4,61540,3389,T,I,A",
"1487282423,203.0.113.229,10.1.0.4,53163,3389,T,I,A"
]
}
]
}
]
}
},
{
"time": "2017-02-16T22:01:32.8960000Z",
"systemId": "55ff55ff-aa66-bb77-cc88-99dd99dd99dd",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/FABRIKAMRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/FABRIAKMVM1-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 1,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282481,198.51.100.194,10.1.0.4,53,1732,U,I,D"
]
}
]
},
{
"rule": "UserRule_default-allow-rdp",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282435,198.51.100.68,10.1.0.4,57776,3389,T,I,A",
"1487282454,203.0.113.170,10.1.0.4,59085,3389,T,I,A",
"1487282477,192.0.2.50,10.1.0.4,65078,3389,T,I,A"
]
}
]
}
]
}
},
{
"records": [
{
"time": "2017-02-16T22:00:32.8950000Z",
"systemId": "55ff55ff-aa66-bb77-cc88-99dd99dd99dd",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/FABRIKAMRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/FABRIAKMVM1-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 1,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282421,192.0.2.95,10.1.0.4,51529,5358,T,I,D"
]
}
]
},
{
"rule": "UserRule_default-allow-rdp",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282370,192.0.2.17,10.1.0.4,61771,3389,T,I,A",
"1487282393,203.0.113.34,10.1.0.4,58596,3389,T,I,A",
"1487282393,192.0.2.154,10.1.0.4,61540,3389,T,I,A",
"1487282423,203.0.113.229,10.1.0.4,53163,3389,T,I,A"
]
}
]
}
]
}
},
{
"time": "2017-02-16T22:01:32.8960000Z",
"systemId": "55ff55ff-aa66-bb77-cc88-99dd99dd99dd",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/FABRIKAMRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/FABRIAKMVM1-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 1,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282481,198.51.100.194,10.1.0.4,53,1732,U,I,D"
]
}
]
},
{
"rule": "UserRule_default-allow-rdp",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282435,198.51.100.68,10.1.0.4,57776,3389,T,I,A",
"1487282454,203.0.113.170,10.1.0.4,59085,3389,T,I,A",
"1487282477,192.0.2.50,10.1.0.4,65078,3389,T,I,A"
]
}
]
}
]
}
},
{
"time": "2017-02-16T22:02:32.9040000Z",
"systemId": "55ff55ff-aa66-bb77-cc88-99dd99dd99dd",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/FABRIKAMRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/FABRIAKMVM1-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 1,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282492,203.0.113.29,10.1.0.4,28918,5358,T,I,D",
"1487282505,192.0.2.55,10.1.0.4,8080,8080,T,I,D"
]
}
]
},
{
"rule": "UserRule_default-allow-rdp",
"flows": [
{
"mac": "000D3AF8801A",
"flowTuples": [
"1487282512,192.0.2.154,10.1.0.4,59046,3389,T,I,A"
]
}
]
}
]
}
}
]
}
]
}
버전 2
다음은 버전 2 NSG 흐름 로그의 형식 예제입니다.
{
"records": [
{
"time": "2018-11-13T12:00:35.3899262Z",
"systemId": "66aa66aa-bb77-cc88-dd99-00ee00ee00ee",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/FABRIKAMRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/FABRIAKMVM1-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 2,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "000D3AF87856",
"flowTuples": [
"1542110402,192.0.2.190,10.5.16.4,28746,443,U,I,D,B,,,,",
"1542110424,203.0.113.10,10.5.16.4,56509,59336,T,I,D,B,,,,",
"1542110432,198.51.100.8,10.5.16.4,48495,8088,T,I,D,B,,,,"
]
}
]
},
{
"rule": "DefaultRule_AllowInternetOutBound",
"flows": [
{
"mac": "000D3AF87856",
"flowTuples": [
"1542110377,10.5.16.4,203.0.113.118,59831,443,T,O,A,B,,,,",
"1542110379,10.5.16.4,203.0.113.117,59932,443,T,O,A,E,1,66,1,66",
"1542110379,10.5.16.4,203.0.113.115,44931,443,T,O,A,C,30,16978,24,14008",
"1542110406,10.5.16.4,198.51.100.225,59929,443,T,O,A,E,15,8489,12,7054"
]
}
]
}
]
}
},
{
"time": "2018-11-13T12:01:35.3918317Z",
"systemId": "66aa66aa-bb77-cc88-dd99-00ee00ee00ee",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/FABRIKAMRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/FABRIAKMVM1-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 2,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "000D3AF87856",
"flowTuples": [
"1542110437,125.64.94.197,10.5.16.4,59752,18264,T,I,D,B,,,,",
"1542110475,80.211.72.221,10.5.16.4,37433,8088,T,I,D,B,,,,",
"1542110487,46.101.199.124,10.5.16.4,60577,8088,T,I,D,B,,,,",
"1542110490,176.119.4.30,10.5.16.4,57067,52801,T,I,D,B,,,,"
]
}
]
}
]
}
}
]
}
로그 튜플 및 대역폭 계산
다음은 TCP 대화 간의 203.0.113.105:35370
흐름 튜플에 대한 대역폭 계산의 예입니다.10.0.0.5:443
1708978215,203.0.113.105,10.0.0.5,35370,443,T,I,A,B,,,,
1708978215,203.0.113.105,10.0.0.5,35370,443,T,I,A,C,1021,588096,8005,4610880
1708978215,203.0.113.105,10.0.0.5,35370,443,T,I,A,E,52,29952,47,27072
계속(C
) 및 종료(E
) 흐름 상태의 경우 바이트 및 패킷 수는 이전 흐름의 튜플 레코드 시간부터 집계됩니다. 통신 예제에서 전송된 총 패킷 수는 1021+52+8005+47 = 9125입니다. 전송된 바이트의 총 수는 588096+29952+4610880+27072 = 5256000입니다.
NSG 흐름 로그 관리
NSG 흐름 로그를 생성, 변경, 비활성화 또는 삭제하는 방법을 알아보려면 다음 가이드 중 하나를 참조하세요.
흐름 로그 작업
흐름 로그 읽기 및 내보내기
NSG 흐름 로그를 읽고 내보내는 방법을 알아보려면 다음 가이드 중 하나를 참조하세요.
NSG 흐름 로그 파일은 다음 경로의 스토리지 계정에 저장됩니다.
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
흐름 로그 시각화
NSG 흐름 로그를 시각화하는 방법을 알아보려면 다음 가이드 중 하나를 참조하세요.
- Network Watcher 트래픽 분석을 사용하여 NSG 흐름 로그 시각화
- Power BI를 사용하여 NSG 흐름 로그 시각화
- Elastic Stack을 사용하여 NSG 흐름 로그 시각화
- Grafana를 사용하여 NSG 흐름 로그 관리 및 분석
- Graylog를 사용하여 NSG 흐름 로그 관리 및 분석
NSG 흐름 로그의 고려 사항
스토리지 계정
- 위치: 스토리지 계정은 네트워크 보안 그룹과 동일한 지역에 있어야 합니다.
- 구독: 스토리지 계정은 네트워크 보안 그룹의 동일한 구독에 있거나 네트워크 보안 그룹 구독의 동일한 Microsoft Entra 테넌트와 연결된 구독에 있어야 합니다.
- 성능 계층: 스토리지 계정은 표준이어야 합니다. Premium Storage 계정은 지원되지 않습니다.
- 자체 관리형 키 회전: 스토리지 계정의 액세스 키를 변경하거나 회전하면 NSG 흐름 로그가 작동을 중지합니다. 이 문제를 해결하려면 NSG 흐름 로그를 사용하지 않도록 설정했다가 다시 사용하도록 설정해야 합니다.
비용
NSG 흐름 로깅은 생성된 로그의 볼륨에 대해 청구됩니다. 트래픽이 많을수록 흐름 로그 볼륨이 커지게 되며 관련 비용이 증가합니다.
NSG 흐름 로그 가격 책정에는 기본 스토리지 비용이 포함되지 않습니다. NSG 흐름 로그 데이터를 영원히 보존하거나 보존 정책 기능을 사용하면 장기간 스토리지 비용이 발생합니다.
기본이 아닌 인바운드 TCP 규칙
네트워크 보안 그룹은 상태 저장 방화벽으로 구현됩니다. 그러나 현재 플랫폼 제한 사항으로 인해 인바운드 TCP 흐름에 영향을 미치는 네트워크 보안 그룹 기본이 아닌 보안 규칙은 상태 비저장 방식으로 구현됩니다.
기본이 아닌 인바운드 규칙의 영향을 받는 흐름은 종료되지 않습니다. 또한 해당 흐름의 바이트 및 패킷 수가 기록되지 않습니다. 이러한 요인 때문에 NSG 흐름 로그(및 Network Watcher 트래픽 분석)에 보고되는 바이트 및 패킷 수가 실제와 다를 수 있습니다.
연결된 가상 네트워크의 FlowTimeoutInMinutes
속성을 null이 아닌 값으로 설정하면 이 차이를 해결할 수 있습니다. FlowTimeoutInMinutes
를 4분으로 설정하여 기본 상태 저장 동작을 수행할 수 있습니다. 서비스 또는 대상에서 흐름의 연결을 끊지 않으려는 장기 실행 연결의 경우 FlowTimeoutInMinutes
를 30분까지 설정할 수 있습니다. Set-AzVirtualNetwork를 사용하여 FlowTimeoutInMinutes
속성을 설정합니다.
$virtualNetwork = Get-AzVirtualNetwork -Name 'myVNet' -ResourceGroupName 'myResourceGroup'
$virtualNetwork.FlowTimeoutInMinutes = 4
$virtualNetwork | Set-AzVirtualNetwork
공용 IP 없이 인터넷 IP에서 VM으로 기록된 인바운드 흐름
인스턴스 수준 공용 IP로 NIC와 연결된 공용 IP 주소가 없거나 기본 부하 분산 장치 백 엔드 풀에 포함됨 VM(가상 머신)은 기본 SNAT를 사용합니다. Azure는 아웃바운드 연결을 용이하게 하기 위해 해당 VM에 IP 주소를 할당합니다. 따라서 SNAT에 할당된 포트 범위의 포트로 흐름을 보내는 경우 인터넷 IP 주소에서 흐름 로그 항목을 확인할 수 있습니다.
Azure는 VM에 대한 이러한 흐름을 허용하지 않지만, 시도가 기록되고 Network Watcher NSG 흐름 로그에 기본적으로 표시됩니다. 네트워크 보안 그룹을 사용하여 원치 않는 인바운드 인터넷 트래픽을 명시적으로 차단하는 것이 좋습니다.
ExpressRoute 게이트웨이 서브넷의 네트워크 보안 그룹
트래픽이 해당 유형의 게이트웨이(예: FastPath)를 무시할 수 있으므로 Azure ExpressRoute 게이트웨이 서브넷에 흐름을 기록하지 않는 것이 좋습니다. NSG가 ExpressRoute 게이트웨이 서브넷에 연결되어 있고 NSG 흐름 로그를 사용하도록 설정된 경우 가상 머신에 대한 아웃바운드 흐름이 캡처되지 않을 수 있습니다. 이러한 흐름은 VM의 서브넷 또는 NIC에서 캡처해야 합니다.
프라이빗 엔드포인트에 대한 트래픽
프라이빗 엔드포인트에 대한 트래픽은 원본 VM에서만 캡처할 수 있습니다. 트래픽은 VM의 원본 IP 주소와 프라이빗 엔드포인트의 대상 IP 주소로 기록됩니다. 플랫폼 제한 사항으로 인해 프라이빗 엔드포인트 자체에서는 트래픽을 기록할 수 없습니다.
Application Gateway v2 서브넷에 연결된 네트워크 보안 그룹 지원
Azure Application Gateway V2 서브넷에 연결된 네트워크 보안 그룹의 NSG 흐름 로그는 현재 지원되지 않습니다. Application Gateway V1 서브넷에 연결된 네트워크 보안 그룹의 NSG 흐름 로그는 지원됩니다.
호환되지 않는 서비스
현재 다음 Azure 서비스는 NSG 흐름 로그를 지원하지 않습니다.
- Azure Container Instances
- Azure Logic Apps
- Azure Functions
- Azure DNS Private Resolver
- App Service
- Azure Database for MariaDB
- Azure Database for MySQL
- Azure Database for PostgreSQL
- Azure NetApp Files
참고 항목
Azure App Service 요금제로 배포된 앱 서비스는 NSG 흐름 로그를 지원하지 않습니다. 자세한 내용은 가상 네트워크 통합 작동 방식을 참조하세요.
호환되지 않는 가상 머신
NSG 흐름 로그는 다음 가상 머신 크기에서 지원되지 않습니다.
이러한 가상 머신 크기에는 가상 네트워크 흐름 로그를 사용하는 것이 좋습니다.
참고 항목
많은 네트워킹 트래픽을 실행하는 가상 머신은 흐름 로깅 오류가 발생할 수 있습니다. 이 형식의 워크로드의 경우 NSG 흐름 로그를 가상 네트워크 흐름 로그로 마이그레이션하는 것이 좋습니다.
모범 사례
중요한 서브넷에서 NSG 흐름 로그사용: 구독의 중요한 모든 서브넷에서 흐름 로그를 감사 및 보안 모범 사례로 사용해야 합니다.
리소스에 연결된 모든 네트워크 보안 그룹에서 NSG 흐름 로그 사용: NSG 흐름 로그는 네트워크 보안 그룹에 구성됩니다. 흐름은 네트워크 보안 그룹 규칙 중 하나에만 연결됩니다. 여러 네트워크 보안 그룹을 사용하는 경우에는 리소스의 서브넷 및 NIC(네트워크 인터페이스)에서 적용된 모든 NSG 흐름 로그에서 NSG 흐름 로그를 사용하도록 설정하여 모든 트래픽을 기록하는 것이 좋습니다. 자세한 내용은 네트워크 보안 그룹이 네트워크 트래픽을 필터링하는 방법을 참조하세요.
다음은 몇 가지 일반적인 시나리오입니다.
- 가상 머신의 여러 NIC: 여러 NIC가 가상 머신에 연결된 경우 모든 NIC에서 흐름 로그를 사용하도록 설정해야 합니다.
- NIC 및 서브넷 수준의 네트워크 보안 그룹: 네트워크 보안 그룹이 NIC 수준 및 서브넷 수준에서 구성된 경우 두 네트워크 보안 그룹 모두에서 흐름 로그를 사용하도록 설정해야 합니다. NIC 및 서브넷 수준에서 네트워크 보안 그룹이 규칙을 처리하는 정확한 순서는 플랫폼에 따라 다르며 대/소문자마다 다릅니다. 트래픽 흐름은 마지막으로 처리된 네트워크 보안 그룹을 대상으로 기록됩니다. 플랫폼 상태는 처리 순서를 변경합니다. 두 흐름 로그를 모두 검사해야 합니다.
- AKS(Azure Kubernetes Service) 클러스터 서브넷: AKS는 클러스터 서브넷에서 기본 네트워크 보안 그룹을 추가합니다. 이 네트워크 보안 그룹에서 NSG 흐름 로그를 사용하도록 설정해야 합니다.
스토리지 프로비저닝: 예상되는 흐름 로그 볼륨에 맞게 스토리지를 프로비저닝합니다.
이름 지정: 네트워크 보안 그룹 이름은 80자 이하여야 하며, 네트워크 보안 그룹 규칙 이름은 65자 이하여야 합니다. 이름이 문자 제한을 초과하면 로깅하는 동안 이름이 잘릴 수 있습니다.
일반적인 문제 해결
NSG 흐름 로그를 사용하도록 설정할 수 없음
NSG 흐름 로그를 사용하도록 설정하기 전에 구독에서 Microsoft.Insights 리소스 공급자를 사용하도록 설정하지 않은 경우 AuthorizationFailed 또는 GatewayAuthenticationFailed 오류가 발생할 수 있습니다. 자세한 내용은 Insights 공급자 등록을 참조하세요.
NSG 흐름 로그를 사용하도록 설정했지만 스토리지 계정에 데이터가 표시되지 않음
이 문제는 다음과 관련이 있을 수 있습니다.
설정 시간: 스토리지 계정에 NSG 흐름 로그가 표시될 때까지 최대 5분이 걸릴 수 있습니다(올바르게 구성된 경우). PT1H.json 파일이 나타납니다. 자세한 내용은 흐름 로그 다운로드를 참조하세요.
네트워크 보안 그룹의 트래픽 부족: 가상 머신이 활성 상태가 아니거나 Application Gateway 또는 다른 디바이스의 업스트림 필터가 네트워크 보안 그룹으로 들어오는 트래픽을 차단하여 로그가 표시되지 않는 경우가 가끔 있습니다.
가격 책정
NSG 흐름 로그는 수집된 네트워크 흐름 로그의 기가바이트당 요금이 청구되며 구독당 월 5GB의 무료 계층이 제공됩니다.
NSG 흐름 로그를 통해 트래픽 분석이 사용하도록 설정된 경우 트래픽 분석 가격 책정은 기가바이트당 처리 속도로 적용됩니다. 트래픽 분석은 무료 계층 가격 책정으로 제공되지 않습니다. 자세한 내용은 Network Watcher 가격 책정을 참조하세요.
로그 저장 비용은 별도로 청구됩니다. 자세한 내용은 Azure Blob Storage 가격 책정을 참조하세요.
관련 콘텐츠
- NSG 흐름 로그를 관리하는 방법을 알아보려면 Azure Portal을 사용하여 NSG 흐름 로그 만들기, 변경, 사용 안 함 또는 삭제를 참조하세요.
- NSG 흐름 로그에 대한 가장 자주 묻는 질문 중 일부에 대한 답변을 찾으려면 흐름 로그 FAQ를 참조하세요.
- 트래픽 분석에 대한 자세한 내용은 트래픽 분석 개요를 참조하세요.