가상 네트워크 흐름 로그
가상 네트워크 흐름 로그는 Azure Network Watcher의 기능입니다. 가상 네트워크를 통해 흐르는 IP 트래픽에 대한 정보를 기록하는 데 사용합니다.
가상 네트워크 흐름 로그의 흐름 데이터는 Azure Storage로 전송됩니다. 여기에서 데이터에 액세스하여 시각화 도구나 SIEM(보안 정보 및 이벤트 관리) 솔루션, IDS(침입 탐지 시스템)로 내보낼 수 있습니다. 가상 네트워크 흐름 로그는 네트워크 보안 그룹 흐름 로그의 일부 제한 사항을 극복합니다.
흐름 로그를 사용하는 이유
네트워크를 보호하고 최적화할 수 있도록 자체 네트워크를 모니터링, 관리 및 파악하는 것이 중요합니다. 네트워크의 현재 상태, 연결 중인 사용자 및 사용자가 연결하는 위치를 알아야 합니다. 또한 인터넷에 열려 있는 포트, 예상되는 네트워크 동작, 불규칙한 네트워크 동작 및 트래픽이 갑자기 증가하는 시기를 알아야 합니다.
흐름 로그는 클라우드 환경에서 모든 네트워크 활동의 진위를 보여 주는 요소입니다. 리소스를 최적화하려는 스타트업이든 침입을 탐지하려는 대기업이든, 흐름 로그가 도움이 될 수 있습니다. 네트워크 흐름 최적화, 처리량 모니터링, 규정 준수 확인, 침입 탐지 등에 흐름 로그를 사용할 수 있습니다.
일반 사용 예
네트워크 모니터링
- 알 수 없거나 원치 않는 트래픽을 식별합니다.
- 트래픽 수준과 대역폭 사용량을 모니터링합니다.
- IP와 포트로 흐름 로그를 필터링하여 애플리케이션 동작을 이해합니다.
- 모니터링 대시보드를 설정하려면 선택한 분석 및 시각화 도구로 흐름 로그를 내보냅니다.
사용량 모니터링 및 최적화
- 네트워크에서 상위 토커를 식별합니다.
- GeoIP 데이터와 결합하여 하위 지역 간 트래픽을 식별합니다.
- 용량 예측을 위한 트래픽 증가를 이해합니다.
- 데이터를 사용하여 지나치게 제한적인 트래픽 규칙을 제거합니다.
규정 준수
- 흐름 데이터를 사용하여 네트워크 격리 및 엔터프라이즈 액세스 규칙 준수를 확인합니다.
네트워크 포렌식 및 보안 분석
- 손상된 IP 및 네트워크 인터페이스에서 네트워크 흐름을 분석합니다.
- 흐름 로그를 선택한 SIEM 또는 IDS 도구로 내보냅니다.
네트워크 보안 그룹 흐름 로그와 비교한 가상 네트워크 흐름 로그
가상 네트워크 흐름 로그와 네트워크 보안 그룹 흐름 로그는 모두 IP 트래픽을 기록하지만 동작과 기능이 다릅니다.
가상 네트워크 흐름 로그는 가상 네트워크에서 로깅을 사용하도록 설정할 수 있으므로 트래픽 모니터링 범위를 간소화합니다. 가상 네트워크 내에서 지원되는 모든 워크로드를 통한 트래픽이 기록됩니다.
또한 가상 네트워크 흐름 로그를 사용하면 네트워크 보안 그룹 흐름 로그와 같은 다중 수준 흐름 로깅을 사용하도록 설정할 필요가 없습니다. 네트워크 보안 그룹 흐름 로그에서 네트워크 보안 그룹은 서브넷과 NIC(네트워크 인터페이스) 모두에서 구성됩니다.
가상 네트워크 흐름 로그는 네트워크 보안 그룹 규칙에서 허용하거나 거부하는 트래픽을 식별하기 위한 기존 지원 외에도 Azure Virtual Network Manager 보안 관리자 규칙이 허용하거나 거부하는 트래픽의 식별을 지원합니다. 또한 가상 네트워크 흐름 로그는 가상 네트워크 암호화를 사용하는 시나리오에서 네트워크 트래픽의 암호화 상태 평가를 지원합니다.
Important
중복 트래픽 기록 및 추가 비용을 방지하려면 동일한 기본 워크로드에서 가상 네트워크 흐름 로그를 사용하도록 설정하기 전에 네트워크 보안 그룹 흐름 로그를 사용하지 않도록 설정하는 것이 좋습니다.
서브넷의 네트워크 보안 그룹에서 네트워크 보안 그룹 흐름 로그를 사용하도록 설정한 경우 동일한 서브넷 또는 부모 가상 네트워크에서 가상 네트워크 흐름 로그를 사용하도록 설정하면 중복 로깅 또는 가상 네트워크 흐름 로그만 얻을 수 있습니다.
로깅 작동 방법
가상 네트워크 흐름 로그의 주요 속성은 다음과 같습니다.
- 흐름 로그는 OSI(Open Systems Interconnection) 모델의 레이어 4에서 작동하며 가상 네트워크를 통과하는 모든 IP 흐름을 기록합니다.
- 로그는 Azure 플랫폼을 통해 1분 간격으로 수집됩니다. Azure 리소스나 네트워크 트래픽에는 영향을 주지 않습니다.
- 로그는 JSON(JavaScript Object Notation) 형식으로 작성됩니다.
- 각 로그 기록에는 흐름이 적용되는 네트워크 인터페이스, 5-튜플 정보, 트래픽 결정, 흐름 상태, 암호화 상태, 처리량 정보가 포함됩니다.
- 네트워크의 모든 트래픽 흐름은 해당 네트워크 보안 그룹 규칙 또는 Azure Virtual Network Manager 보안 관리자 규칙을 통해 평가됩니다.
로그 형식
가상 네트워크 흐름 로그에는 다음과 같은 속성이 있습니다.
time
: 이벤트가 기록된 시간(UTC)입니다.flowLogVersion
: 흐름 로그의 버전입니다.flowLogGUID
:FlowLog
리소스의 리소스 GUID입니다.macAddress
: 이벤트가 캡처된 네트워크 인터페이스의 MAC 주소입니다.category
: 이벤트의 범주입니다. 범주는 항상FlowLogFlowEvent
입니다.flowLogResourceID
:FlowLog
리소스의 리소스 ID입니다.targetResourceID
:FlowLog
리소스에 연결된 대상 소스의 리소스 ID입니다.operationName
: 항상FlowLogFlowEvent
입니다.flowRecords
: 흐름 레코드의 컬렉션입니다.flows
: 흐름 컬렉션입니다. 이 속성에는 다양한 ACL(액세스 제어 목록) 관련 항목이 있습니다.aclID
: 트래픽을 평가하는 리소스인 네트워크 보안 그룹 또는 Virtual Network Manager의 식별자입니다. 암호화로 인해 거부된 트래픽을 위해 이 값은unspecified
입니다.flowGroups
: 다음과 같은 규칙 수준의 흐름 레코드 컬렉션입니다.rule
: 트래픽을 허용하거나 거부한 규칙의 이름입니다. 암호화로 인해 거부된 트래픽을 위해 이 값은unspecified
입니다.flowTuples
: 흐름 튜플의 여러 속성을 쉼표로 구분된 형식으로 포함하는 문자열입니다.Time Stamp
: 흐름이 발생한 타임스탬프이며 UNIX epoch 형식입니다.Source IP
: 원본 IP 주소입니다.Destination IP
: 대상 IP 주소입니다.Source port
: 원본 포트입니다.Destination port
: 대상 포트입니다.Protocol
: IANA 할당 값으로 표현된, 대상 흐름의 계층 4 프로토콜입니다.Flow direction
: 트래픽 흐름의 방향입니다. 유효한 값은 인바운드의 경우I
이고 아웃바운드의 경우O
입니다.Flow state
: 흐름의 상태입니다. 가능한 상태는 다음과 같습니다.B
: 흐름이 만들어질 때 시작됩니다. 통계는 제공되지 않습니다.C
: 진행 중인 흐름에 대해 계속됩니다. 통계가 5분 간격으로 제공됩니다.E
: 흐름이 종료되면 끝납니다. 통계가 제공됩니다.D
: 흐름이 거부되면 거부합니다.
Flow encryption
: 흐름의 암호화 상태입니다. 이 목록 뒤의 표에서는 가능한 값을 설명합니다.Packets sent
: 마지막 업데이트 이후 원본에서 대상으로 전송된 전체 패킷 수입니다.Bytes sent
: 마지막 업데이트 이후 원본에서 대상으로 전송된 전체 패킷 바이트 수입니다. 패킷 바이트에는 패킷 헤더 및 페이로드가 포함됩니다.Packets received
: 마지막 업데이트 이후 대상에서 원본으로 전송된 전체 패킷 수입니다.Bytes received
: 마지막 업데이트 이후 대상에서 원본으로 전송된 전체 패킷 바이트 수입니다. 패킷 바이트에는 패킷 헤더 및 페이로드가 포함됩니다.
Flow encryption
에서 가능한 암호화 상태는 다음과 같습니다.
암호화 상태 | 설명 |
---|---|
X |
연결이 암호화되었습니다. 암호화가 구성되고 플랫폼이 연결을 암호화했습니다. |
NX |
연결이 암호화되지 않았습니다. 이 이벤트는 다음 두 가지 시나리오를 통해 기록됩니다. - 암호화가 구성되지 않은 경우 - 암호화된 가상 머신이 인터넷 엔드포인트처럼 암호화가 없는 엔드포인트와 통신하는 경우 |
NX_HW_NOT_SUPPORTED |
하드웨어는 지원되지 않습니다. 암호화가 구성되었지만 가상 머신이 암호화를 지원하지 않는 호스트에서 실행 중입니다. 일반적으로 이 문제는 FPGA(필드 프로그래머블 게이트 어레이)가 호스트에 연결되지 않았거나 결함이 있기 때문에 발생합니다. 조사를 위해 이 문제를 Microsoft에 보고합니다. |
NX_SW_NOT_READY |
소프트웨어가 준비되지 않았습니다. 암호화가 구성되었지만 호스트 네트워킹 스택의 소프트웨어 구성 요소(GFT)는 암호화된 연결을 처리할 준비가 되지 않았습니다. 이 문제는 가상 머신의 최초 시작이나 재시작 시 또는 재배포 시에 발생할 수 있습니다. 가상 머신이 실행 중인 호스트에서 네트워킹 구성 요소에 대한 업데이트가 있을 때도 발생할 수 있습니다. 이 모든 시나리오에서는 패킷이 삭제됩니다. 문제는 일시적이어야 합니다. 가상 머신이 완전히 실행 중이거나 호스트의 소프트웨어 업데이트가 완료되면 암호화는 작동을 시작해야 합니다. 문제가 계속 이어지면 조사를 위해 Microsoft에 보고합니다. |
NX_NOT_ACCEPTED |
암호화가 없어서 삭제합니다. 암호화는 원본과 대상 엔드포인트에서 모두 구성되며, 암호화되지 않은 정책을 삭제하도록 구성됩니다. 트래픽 암호화에 실패하면 해당 패킷은 삭제됩니다. |
NX_NOT_SUPPORTED |
검색이 지원되지 않습니다. 암호화가 구성되었지만 호스트 네트워킹 스택이 검색을 지원하지 않으므로 암호화 세션이 설정되지 않았습니다. 이 경우 패킷이 삭제됩니다. 이 문제가 발생하면 조사를 위해 Microsoft에 보고합니다. |
NX_LOCAL_DST |
대상이 동일한 호스트에 있습니다. 암호화가 구성되었지만 원본 가상 머신과 대상 가상 머신이 동일한 Azure 호스트에서 실행되고 있습니다. 이런 경우에는 의도적으로 연결이 암호화되지 않습니다. |
NX_FALLBACK |
암호화 없음으로 대체합니다. 암호화는 원본 및 대상 엔드포인트 모두에 대해 암호화 없음 허용 정책을 사용하여 구성됩니다. 시스템에서 암호화를 시도했지만 문제가 발생했습니다. 이 경우 연결은 허용되지만 암호화되지 않습니다. 예를 들어, 가상 머신이 처음에는 암호화를 지원하는 노드에 연결되었지만 이후에 이 지원이 제거된 경우가 있습니다. |
사용자의 가상 네트워크 트래픽은 기본적으로 암호화되지 않습니다(NX
). 암호화된 트래픽에 대해서는 가상 네트워크 암호화를 참조하세요.
샘플 로그 레코드
다음 가상 네트워크 흐름 로그 예에서는 여러 레코드가 앞에서 설명한 속성 목록을 따릅니다.
{
"records": [
{
"time": "2022-09-14T09:00:52.5625085Z",
"flowLogVersion": 4,
"flowLogGUID": "66aa66aa-bb77-cc88-dd99-00ee00ee00ee",
"macAddress": "112233445566",
"category": "FlowLogFlowEvent",
"flowLogResourceID": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/NETWORKWATCHERRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKWATCHERS/NETWORKWATCHER_EASTUS2EUAP/FLOWLOGS/VNETFLOWLOG",
"targetResourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"operationName": "FlowLogFlowEvent",
"flowRecords": {
"flows": [
{
"aclID": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"flowGroups": [
{
"rule": "DefaultRule_AllowInternetOutBound",
"flowTuples": [
"1663146003599,10.0.0.6,192.0.2.180,23956,443,6,O,B,NX,0,0,0,0",
"1663146003606,10.0.0.6,192.0.2.180,23956,443,6,O,E,NX,3,767,2,1580",
"1663146003637,10.0.0.6,203.0.113.17,22730,443,6,O,B,NX,0,0,0,0",
"1663146003640,10.0.0.6,203.0.113.17,22730,443,6,O,E,NX,3,705,4,4569",
"1663146004251,10.0.0.6,203.0.113.17,22732,443,6,O,B,NX,0,0,0,0",
"1663146004251,10.0.0.6,203.0.113.17,22732,443,6,O,E,NX,3,705,4,4569",
"1663146004622,10.0.0.6,203.0.113.17,22734,443,6,O,B,NX,0,0,0,0",
"1663146004622,10.0.0.6,203.0.113.17,22734,443,6,O,E,NX,2,134,1,108",
"1663146017343,10.0.0.6,198.51.100.84,36776,443,6,O,B,NX,0,0,0,0",
"1663146022793,10.0.0.6,198.51.100.84,36776,443,6,O,E,NX,22,2217,33,32466"
]
}
]
},
{
"aclID": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"flowGroups": [
{
"rule": "BlockHighRiskTCPPortsFromInternet",
"flowTuples": [
"1663145998065,101.33.218.153,10.0.0.6,55188,22,6,I,D,NX,0,0,0,0",
"1663146005503,192.241.200.164,10.0.0.6,35276,119,6,I,D,NX,0,0,0,0"
]
},
{
"rule": "Internet",
"flowTuples": [
"1663145989563,192.0.2.10,10.0.0.6,50557,44357,6,I,D,NX,0,0,0,0",
"1663145989679,203.0.113.81,10.0.0.6,62797,35945,6,I,D,NX,0,0,0,0",
"1663145989709,203.0.113.5,10.0.0.6,51961,65515,6,I,D,NX,0,0,0,0",
"1663145990049,198.51.100.51,10.0.0.6,40497,40129,6,I,D,NX,0,0,0,0",
"1663145990145,203.0.113.81,10.0.0.6,62797,30472,6,I,D,NX,0,0,0,0",
"1663145990175,203.0.113.5,10.0.0.6,51961,28184,6,I,D,NX,0,0,0,0",
"1663146015545,192.0.2.10,10.0.0.6,50557,31244,6,I,D,NX,0,0,0,0"
]
}
]
}
]
}
}
]
}
로그 튜플 및 대역폭 계산
다음은 203.0.113.105:35370
과 10.0.0.5:23
사이의 TCP 통신에서 흐름 튜플의 대역폭을 계산하는 예제입니다.
1708978215,203.0.113.105,10.0.0.5,35370,23,6,I,B,NX,,,,
1708978215,203.0.113.105,10.0.0.5,35370,23,6,I,C,NX,1021,588096,8005,4610880
1708978215,203.0.113.105,10.0.0.5,35370,23,6,I,E,NX,52,29952,47,27072
계속(C
) 및 종료(E
) 흐름 상태의 경우 바이트 및 패킷 수는 이전 흐름의 튜플 레코드 시간부터 집계됩니다. 통신 예제에서 전송된 총 패킷 수는 1,021+52+8,005+47 = 9,125입니다. 전송된 바이트의 총 수는 588,096+29,952+4,610,880+27,072 = 5,256,000입니다.
가상 네트워크 흐름 로그에 대한 고려 사항
스토리지 계정
- 위치: 스토리지 계정은 가상 네트워크와 동일한 지역에 있어야 합니다.
- 구독: 스토리지 계정은 가상 네트워크의 동일한 구독에 있거나 가상 네트워크 구독의 동일한 Microsoft Entra 테넌트와 연결된 구독에 있어야 합니다.
- 성능 계층: 스토리지 계정은 표준이어야 합니다. Premium Storage 계정은 지원되지 않습니다.
- 자체 관리형 키 회전: 스토리지 계정에 대한 액세스 키를 변경하거나 회전하면 가상 네트워크 흐름 로그의 작동이 중지됩니다. 이 문제를 해결하려면 가상 네트워크 흐름 로그를 사용하지 않도록 설정한 다음 다시 사용하도록 설정해야 합니다.
프라이빗 엔드포인트 트래픽
트래픽은 프라이빗 엔드포인트 자체에 기록할 수 없습니다. 원본 VM에서 프라이빗 엔드포인트로 트래픽을 캡처할 수 있습니다. 트래픽은 VM의 원본 IP 주소와 프라이빗 엔드포인트의 대상 IP 주소로 기록됩니다. 필드를 사용하여 PrivateEndpointResourceId
프라이빗 엔드포인트로 흐르는 트래픽을 식별할 수 있습니다. 자세한 내용은 트래픽 분석 스키마를 참조하세요.
가격 책정
가상 네트워크 흐름 로그는 수집된 네트워크 흐름 로그의 기가바이트당 요금이 부과되며 구독당 월 5GB의 무료 계층이 제공됩니다.
가상 네트워크 흐름 로그를 통해 트래픽 분석이 사용하도록 설정된 경우 트래픽 분석 가격 책정은 기가바이트당 처리 속도로 적용됩니다. 트래픽 분석은 무료 계층 가격 책정으로 제공되지 않습니다. 자세한 내용은 Network Watcher 가격 책정을 참조하세요.
로그 저장 비용은 별도로 청구됩니다. 자세한 내용은 Azure Blob Storage 가격 책정을 참조하세요.
지원되는 시나리오
다음 표는 흐름 로그의 지원 범위를 간략하게 설명합니다.
범위 | 네트워크 보안 그룹 흐름 로그 | 가상 네트워크 흐름 로그 |
---|---|---|
상태 비저장 흐름의 바이트 및 패킷 | 지원되지 않음 | 지원 여부 |
가상 네트워크 암호화 식별 | 지원되지 않음 | 지원 여부 |
Azure API Management | 지원되지 않음 | 지원 여부 |
Azure Application Gateway | 지원되지 않음 | 지원 여부 |
Azure Virtual Network Manager | 지원되지 않음 | 지원 여부 |
ExpressRoute 게이트웨이 | 지원되지 않음 | 지원 여부 |
가상 머신 크기 집합 | 지원됨 | 지원됨 |
VPN 게이트웨이 | 지원되지 않음 | 지원 여부 |
가용성
가상 네트워크 흐름 로그는 일반적으로 모든 Azure 공용 지역에서 사용할 수 있으며 현재 Azure Government에서 미리 보기로 제공됩니다.
관련 콘텐츠
- 가상 네트워크 흐름 로그를 만들기, 변경, 사용, 사용 안 함 또는 삭제하는 방법을 알아보려면 Azure Portal, PowerShell 또는 Azure CLI 가이드를 참조하세요.
- 트래픽 분석에 대한 자세한 내용은 Azure Network Watcher 트래픽 분석의 트래픽 분석 개요 및 스키마와 데이터 집계를 참조하세요.
- Azure 기본 제공 정책을 사용하여 트래픽 분석을 감사하거나 사용하도록 설정하는 방법을 알아보려면 Azure Policy를 사용하여 트래픽 분석 관리를 참조하세요.