Traffic-Flow-Datensätze werden benötigt? Zeige Flow Logs an

Veröffentlicht am:

Ein Packet Capture liefert detaillierte Belege für eine kurze Untersuchung, aber keinen fortlaufenden Datensatz von Netzwerkverbindungen. Operations- und Security-Teams benötigen auch Metadaten zu Adressen, Ports, Protokollen, Richtungen und Traffic-Entscheidungen im Zeitverlauf.

Verwende Virtual Network Flow Logs für vnet-cloudtrips-test-weu. Erzeuge eine bekannte HTTP-Verbindung von WEB02 zu WEB01, finde ihren JSON-Datensatz in Azure Storage und interpretiere das Flow Tuple.

Dieser Trip baut auf Belege auf Paketebene werden benötigt? Zeichne Pakete auf auf. Behalte beide Web-VMs und den funktionierenden HTTP-Dienst auf WEB01. Beende und entferne das Packet Capture, bevor du Flow Logs aktivierst.

Warum dies kein neues NSG Flow Log ist

Azure NSG Flow Logs sind eine auslaufende Legacy-Funktion. Neue NSG Flow Logs können seit dem 30. Juni 2025 nicht mehr erstellt werden; die Funktion endet am 30. September 2027. Vorhandene Dateien bleiben entsprechend ihrer Retention in Storage, neue Deployments müssen jedoch Virtual Network Flow Logs verwenden.

VNet Flow Logs liefern die benötigten Layer-4-Verbindungsdatensätze auf VNet-, Subnetz- oder NIC-Ebene. Sie zeichnen Metadaten statt Paketpayloads auf. Nutze Packet Capture für Payload- oder TCP-Flag-Belege und Flow Logs für länger laufende Verbindungsdatensätze.

Insights Provider registrieren

Prüfe die für Flow Logs erforderliche Registrierung von Microsoft.Insights:

az provider show \
  --namespace Microsoft.Insights \
  --query registrationState \
  --output tsv

Ist das Ergebnis nicht Registered, führe aus:

az provider register --namespace Microsoft.Insights

Warte vor dem Erstellen des Flow Logs auf den Status Registered.

Flow-Log Storage erstellen

Erzeuge einen global eindeutigen Storage-Account-Namen:

FLOW_STORAGE="stctflow$(az account show --query id --output tsv | tr -d '-' | cut -c1-10)"
printf 'Flow-log storage account: %s\n' "$FLOW_STORAGE"

Erstelle einen StorageV2-Account mit Standard LRS, diesem Namen, rg-cloudtrips-network-test-weu und West Europe. Behalte Secure Transfer und mindestens TLS 1.2. Flow Logs und Storage-Operationen können Kosten verursachen; dieses Lab verwendet kurze Retention und entfernt die Ressourcen.

Virtual Network Flow Log aktivieren

Suche nach Network Watcher, öffne den Dienst und wähle Logs > Flow logs > Create. Konfiguriere:

Subscription: CloudTrips TEST
Flow log type: Virtual network
Target resource: vnet-cloudtrips-test-weu
Flow log name: vnet-cloudtrips-test-weu-flowlog
Storage account subscription: CloudTrips TEST
Storage account: FLOW_STORAGE-Wert
Retention: 1 day
Traffic analytics: Disabled

Traffic Analytics ist für einen bekannten Fluss unnötig und würde Log- Analytics-Verarbeitung und Kosten hinzufügen. Wähle Review + create > Create. Azure speichert die Flow-Log-Ressource in NetworkWatcherRG, auch wenn VNet und Storage Account in der CloudTrips Resource Group liegen.

Virtual Network Flow Log für das CloudTrips-VNet mit einem Tag Retention

Bekannten HTTP-Fluss erzeugen

Starte beide VMs bei Bedarf und lies ihre privaten Adressen:

WEB01_IP=$(az vm list-ip-addresses \
  --resource-group rg-cloudtrips-network-test-weu \
  --name vm-cloudtrips-web01-test-weu \
  --query '[0].virtualMachine.network.privateIpAddresses[0]' \
  --output tsv)

WEB02_IP=$(az vm list-ip-addresses \
  --resource-group rg-cloudtrips-network-test-weu \
  --name vm-cloudtrips-web02-test-weu \
  --query '[0].virtualMachine.network.privateIpAddresses[0]' \
  --output tsv)

printf 'Expected flow: %s -> %s:80\n' "$WEB02_IP" "$WEB01_IP"

Sende mehrere Anfragen, damit der Fluss leicht erkennbar ist:

az vm run-command invoke \
  --resource-group rg-cloudtrips-network-test-weu \
  --name vm-cloudtrips-web02-test-weu \
  --command-id RunShellScript \
  --scripts "for request in 1 2 3; do curl --silent --show-error --connect-timeout 5 http://${WEB01_IP}/; done"

Erwarte drei WEB01-Antworten. Flow Logs werden in Intervallen gesammelt und nicht sofort geschrieben. Warte etwa fünf bis zehn Minuten auf die erste Datei.

JSON-Flow-Datensatz herunterladen

Öffne den Account $FLOW_STORAGE und wähle Data storage > Containers > insights-logs-flowlogflowevent. Navigiere durch Flow-Log-Ressource, Jahr, Monat, Tag, Stunde, Minute und MAC-Adressordner zu PT1H.json. Wähle dessen Auslassungszeichen und Download.

PT1H.json des Virtual Network Flow Logs im flowlogflowevent-Container

Öffne PT1H.json in einem Texteditor und suche nach $WEB02_IP und $WEB01_IP. Ein Version-4-flowTuple ähnelt:

timestamp,sourceIp,destinationIp,sourcePort,destinationPort,protocol,direction,state,encryption,packetsSent,bytesSent,packetsReceived,bytesReceived

Prüfe für die bekannte Anfrage:

sourceIp: WEB02_IP
destinationIp: WEB01_IP
destinationPort: 80
protocol: 6 (TCP)
direction: O (outbound von der aufgezeichneten Schnittstelle)

Der temporäre Quellport variiert. Paket- und Bytezähler fassen den Fluss zusammen, enthalten aber keinen HTTP-Payload. Der Datensatz kann außerdem die NSG- oder Virtual-Network-Manager-Regel nennen, die den Fluss verarbeitet hat.

JSON Flow Tuple der WEB02-zu-WEB01-Verbindung auf TCP-Port 80

Flow Log entfernen

Kehre zu Network Watcher > Flow logs zurück, wähle vnet-cloudtrips-test-weu-flowlog und danach Delete. Lösche anschließend den temporären Account $FLOW_STORAGE, nachdem erforderliche Belege exportiert wurden. Das Löschen der Flow-Log-Ressource stoppt neue Erfassung, löscht jedoch nicht bereits in Blob Storage gespeicherte Daten.

Deallokiere beide VMs. Lege in Produktion Retention, Storage-Netzwerkkontrollen, Zugriffsrollen und SIEM-Export entsprechend den Security- und Compliance- Anforderungen der Organisation fest.