TL;DR
- HTTP-Trigger funktionieren in isolierten Netzwerken sofort, andere Trigger (Timer, Service Bus, Blob) jedoch oft nicht ohne Weiteres.
- Azure Functions benötigen zwingend ausgehende Kommunikation zum Service Tag
AzureCloud, um Hintergrund-Trigger in der Microsoft-Infrastruktur erfolgreich zu registrieren. - Für Telemetrie und Logs muss zudem der ausgehende Traffic zum Service Tag
AzureMonitorin der Firewall freigegeben werden.
Wenn du Azure Functions in einem vollständig isolierten virtuellen Netzwerk betreibst, werden Timer, Storage und Service Bus Trigger ohne spezifische Firewall-Freigaben nicht ausgeführt. Die Lösung ist die gezielte Freigabe der Service Tags AzureCloud und AzureMonitor.
In Enterprise-Umgebungen ist eine strikte Netzwerkisolation per Landing Zone der absolute Standard. Die goldene Regel lautet: Kein unkontrollierter Traffic nach außen, kein Traffic von außen nach innen. Die logische Annahme beim Cloud-Design ist dabei meistens: Wenn die Function App, der Blob Storage und der Service Bus im selben privaten Subnetz liegen und per Private Endpoints verbunden sind, sollten sie problemlos miteinander kommunizieren.
Genau das haben wir in einem Kundenprojekt erlebt. Wir hatten ein hochsicheres Setup gebaut, alles schien perfekt konfiguriert, doch die Trigger blieben stumm. Hier erfährst du, warum das passiert und wie du das Firewall-Routing für deine Serverless-Architektur korrekt aufbaust.
Warum schlagen Nicht-HTTP-Trigger in einem isolierten Azure Virtual Network fehl?
Azure Functions nutzen eine zentrale Management-Infrastruktur (den Scale Controller), um Hintergrund-Trigger wie Timer, Blob oder Service Bus zu registrieren. In einem strikt isolierten Netzwerk blockiert die Firewall diesen ausgehenden Registrierungs-Traffic. Das Hinzufügen des Service Tags AzureCloud in den Routing-Regeln behebt dieses Problem.
Wir hatten für unseren Kunden eine klassische, hochsichere Landing Zone implementiert. Alles war abgeriegelt, die VNet-Integration war aktiv und die Kommunikation lief ausschließlich über Private Endpoints. Als wir die Functions deployten, liefen die HTTP-Trigger auf Anhieb einwandfrei.
Doch dann kam das böse Erwachen: Als wir versuchten, Workloads über den Service Bus oder einen Blob Storage Upload anzustoßen, passierte schlichtweg nichts. Die Trigger feuerten nicht, Fehlermeldungen waren spärlich.
Nach langem Troubleshooting und dem Debugging der Netzwerk-Routen stießen wir auf das fundamentale Architektur-Detail von Azure Serverless. Der Scale Controller und die internen Registrierungs-Mechanismen der Functions leben außerhalb deines eigenen VNets, direkt in der allgemeinen Azure-Fabric. Ohne diesen expliziten Kommunikationsweg weiß die zugrundeliegende Azure-Plattform nicht, dass sie deine spezifische Function bei einem neuen Service-Bus-Ereignis aufwecken soll. Die Blockade in der Firewall hat also nicht die eigentliche Datenverarbeitung verhindert, sondern das essenzielle "Anmelden" der Funktion beim System.
Wie verhält sich Azure Monitoring in einer vollständig privaten Umgebung?
Telemetriedaten, Logs und Metriken von Azure Functions fließen nicht automatisch über das interne VNet. Damit Application Insights die Ausführungsdaten erfassen kann, muss ausgehender Traffic zum Service Tag AzureMonitor auf der Firewall erlaubt werden.
Nachdem die Trigger durch die Freigabe des AzureCloud Service Tags endlich funktionierten, standen wir direkt vor dem nächsten blinden Fleck. Die Functions verarbeiteten nun zwar fleißig Daten, aber wir sahen keinerlei Logging-Informationen. In Application Insights herrschte gähnende Leere.
In einer verteilten Architektur ist fehlendes Monitoring ein Zustand, der den Betrieb praktisch unmöglich macht. Auch hier greift exakt dasselbe Prinzip wie bei den Triggern: Der Application Insights Agent innerhalb der Function versucht, seine gesammelten Pakete über HTTPS an die globalen Telemetrie-Endpunkte von Microsoft zu senden. Wenn deine strikte Firewall-Regel (Deny-All-Outbound) diesen Weg blockiert, gehen die wertvollen Ausführungsdaten stillschweigend verloren.
Schritt-für-Schritt: Welche Firewall-Regeln sind essenziell?
Um Azure Functions sicher und voll funktionsfähig in einem Private Network zu betreiben, benötigst du mindestens zwei ausgehende Firewall-Regeln für spezifische Microsoft-Dienste, kombiniert mit aktivierter VNet-Integration.
Damit dein Setup sowohl sicher bleibt als auch technisch funktioniert, musst du die folgenden Schritte umsetzen:
- Outbound Rule für AzureCloud erstellen: Konfiguriere deine Azure Firewall oder Network Security Group (NSG) so, dass ausgehender HTTPS-Traffic (Port 443) explizit zum Service Tag
AzureCloudzugelassen wird. - Outbound Rule für AzureMonitor erstellen: Füge eine weitere Regel für den ausgehenden Traffic (Port 443) zum Service Tag
AzureMonitorhinzu. - VNet-Integration konfigurieren: Stelle sicher, dass die Option "Route All" (vnetRouteAllEnabled) in der Function App aktiviert ist, damit der gesamte ausgehende Traffic zwingend durch deine Firewall geleitet und dort kontrolliert wird.
Hier ist die Übersicht der benötigten Ausnahmen in deiner Firewall:

FAQ: Häufige Fragen zu Azure Functions im Private Network
Benötigen HTTP-Trigger den Service Tag AzureCloud?
Nein. HTTP-Trigger reagieren direkt auf eingehende Web-Requests, die über das Netzwerk (z. B. via Application Gateway oder Private Endpoint) eintreffen, und benötigen keine Hintergrundregistrierung beim Azure Scale Controller.
Ist mein Netzwerk noch "privat", wenn ich AzureCloud freigebe?
Ja. Ein Service Tag ist eine von Microsoft verwaltete Gruppierung von IP-Adressen. Wenn du AzureCloud freigibst, beschränkst du die Kommunikation ausschließlich auf die offiziellen IP-Bereiche der Microsoft Azure-Infrastruktur. Ein Zugriff auf das offene Internet bleibt weiterhin blockiert.
Kann ich statt der Service Tags auch Private Endpoints nutzen?
Für den Zugriff auf deine eigenen Azure-Ressourcen (wie Storage Accounts, Key Vaults oder SQL Datenbanken) sind Private Endpoints der absolut richtige Weg. Für die zugrundeliegende, systeminterne Kommunikation der Function-Plattform (Trigger-Registrierung und Basis-Telemetrie) benötigst du derzeit dennoch die entsprechenden Service Tags.
Fazit
Eine sichere Cloud-Architektur bedeutet nicht, dass Systeme blind und taub gemacht werden dürfen. Der Betrieb von Azure Functions in einem vollständig isolierten Private Network ist der korrekte Weg für maximale Enterprise-Security, erfordert aber ein tiefes Verständnis der Serverless-Mechanismen unter der Haube. Wenn du die Service Tags AzureCloud und AzureMonitor blockierst, sabotierst du deine eigene Infrastruktur. Mit den richtigen Firewall-Regeln verbindest du das Beste aus beiden Welten: höchste Sicherheit und volle Funktionalität.

.png)