가상 네트워크 흐름 로그는 Azure Network Watcher의 기능입니다. 가상 네트워크를 통해 흐르는 IP 트래픽에 대한 정보를 기록하는 데 사용합니다.
가상 네트워크 흐름 로그의 흐름 데이터는 Azure Storage로 전송됩니다. 여기에서 데이터에 액세스하여 시각화 도구나 SIEM(보안 정보 및 이벤트 관리) 솔루션, IDS(침입 탐지 시스템)로 내보낼 수 있습니다. 가상 네트워크 흐름 로그는 네트워크 보안 그룹 흐름 로그의 일부 제한 사항을 극복합니다.
흐름 로그를 사용하는 이유
네트워크를 보호하고 최적화할 수 있도록 자체 네트워크를 모니터링, 관리 및 파악하는 것이 중요합니다. 네트워크의 현재 상태, 연결 중인 사용자 및 사용자가 연결하는 위치를 알아야 합니다. 또한 인터넷에 열려 있는 포트, 예상되는 네트워크 동작, 불규칙한 네트워크 동작 및 트래픽이 갑자기 증가하는 시기를 알아야 합니다.
흐름 로그는 클라우드 환경에서 모든 네트워크 활동의 진위를 보여 주는 요소입니다. 리소스를 최적화하려는 스타트업이든 침입을 탐지하려는 대기업이든, 흐름 로그가 도움이 될 수 있습니다. 네트워크 흐름 최적화, 처리량 모니터링, 규정 준수 확인, 침입 탐지 등에 흐름 로그를 사용할 수 있습니다.
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). 암호화된 트래픽에 대해서는 가상 네트워크 암호화를 참조하세요.
샘플 로그 레코드
다음 가상 네트워크 흐름 로그 예에서는 여러 레코드가 앞에서 설명한 속성 목록을 따릅니다.
계속(C) 및 종료(E) 흐름 상태의 경우 바이트 및 패킷 수는 이전 흐름의 튜플 레코드 시간부터 집계됩니다. 통신 예제에서 전송된 총 패킷 수는 1,021+52+8,005+47 = 9,125입니다. 전송된 바이트의 총 수는 588,096+29,952+4,610,880+27,072 = 5,256,000입니다.
가상 네트워크 흐름 로그에 대한 고려 사항
스토리지 계정
위치: 스토리지 계정은 가상 네트워크와 동일한 지역에 있어야 합니다.
구독: 스토리지 계정은 가상 네트워크의 동일한 구독에 있거나 가상 네트워크 구독의 동일한 Microsoft Entra 테넌트와 연결된 구독에 있어야 합니다.
자체 관리형 키 회전: 스토리지 계정에 대한 액세스 키를 변경하거나 회전하면 가상 네트워크 흐름 로그의 작동이 중지됩니다. 이 문제를 해결하려면 가상 네트워크 흐름 로그를 사용하지 않도록 설정한 다음 다시 사용하도록 설정해야 합니다.
프라이빗 엔드포인트 트래픽
트래픽은 프라이빗 엔드포인트 자체에 기록할 수 없습니다. 원본 VM에서 프라이빗 엔드포인트로 트래픽을 캡처할 수 있습니다. 트래픽은 VM의 원본 IP 주소와 프라이빗 엔드포인트의 대상 IP 주소로 기록됩니다. 필드를 사용하여 PrivateEndpointResourceId 프라이빗 엔드포인트로 흐르는 트래픽을 식별할 수 있습니다. 자세한 내용은 트래픽 분석 스키마를 참조하세요.