top of page

Preparing Your Landing Zone for the New Azure VNet Outbound Access Changes

  • peterrivera813
  • May 9
  • 5 min read

Azure recently announced a significant change: the default outbound access for Virtual Networks (VNets) is being removed. This update affects how resources within VNets connect to the internet and other Azure services. If you manage Azure environments, especially landing zones, this change requires immediate attention to avoid disruptions.


This post explains what the change means, why it matters, and how to prepare your landing zone to handle outbound connectivity without relying on default access.



Eye-level view of a cloud network diagram showing Azure VNet components

What Changed with Azure VNet Default Outbound Access


Previously, Azure quietly handled outbound internet access for your VMs and Virtual Machine Scale Sets through a mechanism called default outbound access. It worked by using platform-managed public IPs to SNAT your outbound traffic, no configuration required on your end. Convenient, but the IPs were unpredictable, not yours to control, and never formally supported as a production feature.

Microsoft is now retiring this behavior for newly created resources. Any VM or VMSS you deploy after March 31st, 2026 without an explicit outbound method will have no internet connectivity out of the box. If you have existing resources relying on default outbound access, they aren't breaking today, but Microsoft has made clear this is a path toward full retirement, so treating it as a long-term solution isn't an option.

One important scoping note: this change is IaaS-specific. If you're running App Service, Azure Functions, AKS, or other PaaS workloads, their outbound connectivity models are separate as this retirement doesn't directly touch them.

To find out if you're exposed today, look for the default outbound access warning on your VMs in the Azure portal, or pull the DefaultOutboundAccess metric in Azure Monitor. If you're managing landing zones at scale, running that check across subscriptions before you onboard new workloads is worth doing.


Why Microsoft Made This Change


  • Security and auditability. Default outbound used a shared pool of Microsoft-managed public IPs that you had no visibility into or control over. Your VMs could egress on an IP you don't own, can't add to allow lists, and can't track in your SIEM or threat intelligence feeds. In regulated environments, that's not just uncomfortable, it's an audit finding waiting to happen.

  • Zero Trust alignment. Implicit connectivity is the opposite of Zero Trust. When outbound access exists by default, every VM is a potential egress point unless something explicitly blocks it. Requiring an intentional outbound method forces the right conversation at design time: does this workload need internet access, through what path, and who approved it?

  • Reliability. Default outbound carried no SLA and offered no control over SNAT port exhaustion, a common source of silent connection failures at scale. Explicit methods like NAT Gateway give you dedicated IPs, predictable port allocation, and defined behavior under load.

  • Industry alignment. AWS and GCP have enforced private-by-default subnet behavior for years. This brings Azure into line with the broader cloud industry standard, and frankly, with what most enterprise network teams have expected Azure to do for a while.


How This Affects Your Landing Zone


Landing zones are foundational Azure environments designed to host workloads securely and efficiently. They include network configurations, security controls, and governance policies.


With default outbound access removed, landing zones that rely on this implicit connectivity will face issues such as:


  • Virtual machines unable to reach update servers or external APIs.

  • Azure services inside VNets failing to connect to required endpoints.

  • Automation scripts and deployment tools losing internet access.


If your landing zone does not explicitly configure outbound connectivity, workloads may break or degrade.


Steps to Prepare Your Landing Zone

To adapt your landing zone for this change, follow these practical steps:


Identify Resources Needing Outbound Access


Before you can fix anything, you need to know what you're dealing with. Start by identifying every resource in your VNets that depends on outbound internet or Azure service connectivity.


Common resources to account for:

  • Virtual machines requiring OS patching, activation, or application updates including any VM-based infrastructure like domain controllers or monitoring agents.

  • AKS node pools with dependencies on ACR image pulls, API server communication, Azure Monitor, and OS-level updates. In most ALZ deployments AKS already routes through an NVA or NAT Gateway, but confirm it before assuming.

  • Self-hosted DevOps agents running on VMs inside your VNet, these need outbound access to Azure DevOps or GitHub endpoints. Cloud-hosted agents run outside your VNet and aren't affected.

  • Any VM-hosted integration workloads calling external APIs, SaaS endpoints, or on-premises systems over the internet.


At landing zone scale, manual discovery isn't realistic. Use Azure Resource Graph to query across subscriptions for VMs and VMSS instances without an associated NAT Gateway, load balancer outbound rule, or instance-level public IP. That query gives your exposure list in one shot and is repeatable as new workloads onboard.


Choose an Outbound Connectivity Method


Azure supports several explicit outbound methods, each with different trade-offs for security, scale, and landing zone fit.


  • Azure NAT Gateway. The preferred option for most production workloads. Managed, scalable, static outbound IPs you own. Attaches at the subnet level with no topology changes required. If you're not routing through a central firewall, this is your default.

  • Azure Firewall or NVA via UDR. If your hub-and-spoke already has a central firewall, the egress path exists — you likely just have a missing or misconfigured UDR on the spoke subnet. Fix the route before deploying new resources.

  • Instance-level public IP. Fine for dev/test or break-glass. Not appropriate for production. It bypasses centralized egress controls entirely.

  • Load Balancer outbound rules. A legacy pattern. It works but carries SNAT port exhaustion risk and couples outbound config to your inbound topology. Avoid for new designs.


ALZ note: New spoke subscriptions should have UDR enforcement and egress path validation baked into your landing zone onboarding policy not left as a manual step.


Update Network Security Groups (NSGs)


NSGs don't grant outbound internet access, your NAT Gateway, firewall, or UDR does that. What NSGs can do is silently block legitimate outbound traffic if your rules are too restrictive, so this is an audit step, not a provisioning step.

Key things to verify:


  • No overly broad outbound deny rules that block traffic before it reaches your egress path. If you're routing through Azure Firewall via UDR, remember that NSG rules are evaluated first — a deny at the NSG means the firewall never sees the packet.

  • Use Service Tags for Azure platform traffic  AzureMonitor, Storage, AzureActiveDirectory, WindowsUpdate rather than maintaining static IP ranges that drift over time.

  • Restrict outbound to 443 where possible. If port 80 is required, treat it as an exception with a documented justification, not a default.


Implement and Test Changes in a Staging Environment


Before applying changes to production landing zones:


  • Deploy outbound connectivity solutions in a test environment.

  • Validate that all workloads can reach required external endpoints.

  • Monitor logs and metrics for any blocked traffic or failures.


Testing helps avoid downtime and ensures smooth transition.



High angle view of a network engineer configuring Azure firewall settings on a laptop


Best Practices for Managing Outbound Access


  • Use NAT Gateway for Simplicity

NAT Gateway is easy to deploy and scales automatically. It provides static outbound IPs, which help with firewall whitelisting on external services.


  • Limit Outbound Access to Required Destinations

Avoid opening unrestricted internet access. Use service tags and IP ranges to restrict outbound traffic.


  • Monitor Outbound Traffic

Enable logging and alerts on firewalls or NAT Gateways to detect unusual activity.


  • Document Network Changes

Keep clear records of outbound connectivity configurations for audit and troubleshooting.


  • Automate Deployment

Use Infrastructure as Code (IaC) tools like Bicep or Terraform to manage outbound access consistently.


Closing the Gap: From Default to Explicit Outbound


This isn't just a networking fix, it's an opportunity to close a governance gap that should have been addressed at landing zone design time.


  • Run the Resource Graph query across your subscriptions to identify VMs and VMSS without an explicit outbound method. That's your remediation backlog.

  • Start with non-production spokes to validate your egress pattern before rolling to production.

  • Update your IaC templates so every new spoke gets an explicit outbound path at deployment time, not as an afterthought.

  • Enforce with Azure Policy ,detection alone isn't enough at scale. Policy should flag non-compliant subnets and deny deployments that omit an outbound method.


Teams that treat this as an architectural reset will come out with a stronger network posture than they went in with.




 
 
 

Comments


bottom of page