<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Azure Networking Blog articles</title>
    <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/bg-p/AzureNetworkingBlog</link>
    <description>Azure Networking Blog articles</description>
    <pubDate>Sun, 07 Jun 2026 14:41:57 GMT</pubDate>
    <dc:creator>AzureNetworkingBlog</dc:creator>
    <dc:date>2026-06-07T14:41:57Z</dc:date>
    <item>
      <title>Pod CIDR Expansion Generally Available and IP Address Planning on Azure CNI Overlay</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/pod-cidr-expansion-generally-available-and-ip-address-planning/ba-p/4521700</link>
      <description>&lt;div data-video-id="https://youtu.be/XC5MMt4MZqo?si=_4oCc2bbg-Ch4MAN/1779317204448" data-video-remote-vid="https://youtu.be/XC5MMt4MZqo?si=_4oCc2bbg-Ch4MAN/1779317204448" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FXC5MMt4MZqo%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DXC5MMt4MZqo&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXC5MMt4MZqo%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;In networking with Azure CNI Overlay, the cluster-wide pod CIDR is logically partitioned into smaller “node” blocks where each node is assigned a fixed CIDR slice (/24) by Azure. This decouples pod networking from the VNet address space entirely because pods receive addresses from a private CIDR that is separate from the VNet.&lt;/P&gt;
&lt;P&gt;By default, Azure CNI Overlay uses a pod CIDR of 10.244.0.0/16 which provides 65,536 addresses. Since each node consumes 256 addresses from the /24 slice, the default cluster has a node scaling limit of 65,536 divided by 256, or 256 nodes. Choosing a pod CIDR at cluster creation effectively sets an upper bound on how many nodes the cluster can accommodate.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Pod CIDR&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Per-Node Block&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Max Nodes Supported&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;/16&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;/24&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;256&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;/15&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;/24&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;512&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;/14&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;/24&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;1,024&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;What does Pod CIDR Expansion enable?&lt;/H2&gt;
&lt;P&gt;Even with careful upfront planning, long-lived clusters grow in ways that are difficult to anticipate. For organizations using Azure CNI Overlay, this previous represents a difficult migration without meticulous IP planning.&lt;/P&gt;
&lt;P&gt;Pod CIDR expansion allows you to expand the existing CIDR without downtime or node reimaging. Instead of being locked to the range chosen at cluster creation, operators can expand the available pod address space with minimal operational burden.&lt;/P&gt;
&lt;H2&gt;Choosing a Pod CIDR&lt;/H2&gt;
&lt;P&gt;In addition to node scaling limits, there are other considerations for pod CIDR planning:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Overlapping pod CIDRs across clusters – even though pod IPs are not directly routable between clusters, overlapping CIDRs can cause problems with observability tooling or cross-cluster networking on top of the overlay. Careful planning can prevent having to recreate the cluster down the road.&lt;/LI&gt;
&lt;LI&gt;Accounting for system node pools – each system node also consumes a /24 block. IP address planning should factor nodes running cluster control plane components in addition to existing workloads.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Learn More&lt;/H2&gt;
&lt;P&gt;Read more about Azure CNI Overlay:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/aks/concepts-network-azure-cni-overlay" target="_blank" rel="noopener"&gt;Overview of Azure CNI Overlay Networking in Azure Kubernetes Service (AKS)&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Try pod CIDR expansion:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/azure-cni-overlay-pod-expand" target="_blank" rel="noopener"&gt;Expand Pod CIDR Space in Azure CNI Overlay Azure Kubernetes Service (AKS) Clusters&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 05 Jun 2026 00:14:24 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/pod-cidr-expansion-generally-available-and-ip-address-planning/ba-p/4521700</guid>
      <dc:creator>Sam_Foo</dc:creator>
      <dc:date>2026-06-05T00:14:24Z</dc:date>
    </item>
    <item>
      <title>Simplify Virtual WAN Spoke Connectivity at Scale with Azure Virtual Network Manager</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/simplify-virtual-wan-spoke-connectivity-at-scale-with-azure/ba-p/4523055</link>
      <description>&lt;P&gt;&lt;STRONG&gt;With Azure Virtual Network Manager (AVNM) integration, organizations using Virtual WAN for transitive connectivity can simplify spoke connectivity and policy management across large-scale hub-and-spoke deployments.&lt;/STRONG&gt; By using a Virtual WAN hub as the hub in an AVNM hub-and-spoke topology, organizations can define connectivity and routing intent once at the network group level and apply it consistently across large numbers of spoke VNets. This reduces repetitive per-spoke connection and routing configuration, helps maintain operational consistency as deployments expand, and makes it easier to manage hub-and-spoke environments at scale. Together, AVNM’s centralized, group-based orchestration and Virtual WAN’s managed routing, security integration, and hybrid connectivity provide a more streamlined way to simplify operations and scale with confidence.&lt;/P&gt;
&lt;H2&gt;What is Azure Virtual Network Manager?&lt;/H2&gt;
&lt;P&gt;Azure Virtual Network Manager is a management service that lets you group, configure, and deploy network connectivity and security policies across virtual networks at scale. Instead of configuring VNet peering and access rules on each virtual network individually, you define &lt;STRONG&gt;network groups&lt;/STRONG&gt; — logical collections of virtual networks based on static selection or dynamic Azure Policy conditions — and apply &lt;STRONG&gt;connectivity configurations&lt;/STRONG&gt; and &lt;STRONG&gt;security admin rules&lt;/STRONG&gt; to those groups.&lt;/P&gt;
&lt;P&gt;Key capabilities include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Hub-and-spoke and mesh topologies&lt;/STRONG&gt; — Define how virtual networks in a network group connect to a central hub or to each other.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Network groups&lt;/STRONG&gt; — Group VNets statically or dynamically (using tags, subscriptions, resource group names, or other Azure Policy conditions).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Security admin rules&lt;/STRONG&gt; — Author and enforce access control lists across all VNets in a network group, providing a centralized layer of defense that complements NSGs and firewalls.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Region-scoped deployment&lt;/STRONG&gt; — Deploy configurations to specific Azure regions, enabling incremental rollout and controlled blast radius.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;AVNM operates as an overlay management layer — it orchestrates VNet peering, connectivity, and security rules without replacing the underlying networking primitives.&lt;/P&gt;
&lt;H2&gt;What is Azure Virtual WAN?&lt;/H2&gt;
&lt;P&gt;Azure Virtual WAN as a service brings together routing, security, VPN, ExpressRoute, and transitive connectivity in a hub-and-spoke architecture. A Virtual WAN hub is a managed regional resource that acts as a central transit point for branch connectivity, remote users, private enterprise connectivity, spoke virtual networks, and private traffic routing through security services.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Site-to-site VPN&lt;/STRONG&gt; connectivity (branch offices, SD-WAN devices)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Point-to-site VPN&lt;/STRONG&gt; connectivity (remote users)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;ExpressRoute&lt;/STRONG&gt; private connectivity (on-premises datacenters)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;VNet-to-VNet&lt;/STRONG&gt; transitive connectivity (spoke virtual networks)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Routing, firewall, and encryption&lt;/STRONG&gt; for private traffic&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;All hubs in a Standard Virtual WAN are connected in a full mesh over the Microsoft backbone, enabling any-to-any connectivity between spokes, branches, and remote users across regions. Virtual WAN removes the need to manually manage complex route tables and transit VNets — routing is handled by the hub's built-in router.&lt;/P&gt;
&lt;H2&gt;What this integration enables&lt;/H2&gt;
&lt;P&gt;When you select a Virtual WAN hub as the hub in an AVNM connectivity configuration, AVNM handles the spoke-to-hub wiring for you. For each virtual network in your selected network groups:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;If the VNet is not yet connected&lt;/STRONG&gt; to the Virtual WAN hub, AVNM creates the Virtual Network connection to Virtual WAN hub and applies a consistent routing configuration with Virtual WAN connection policy.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;If the VNet is already connected&lt;/STRONG&gt;, AVNM updates the existing Virtual Network connection to utilize the routing properties in the Virtual WAN connection policy.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;A &lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-wan/how-to-connection-policy" target="_blank"&gt;connection policy&lt;/A&gt;&lt;/STRONG&gt; is a hub-level Virtual WAN resource that defines shared routing behavior for the virtual network connections it governs, including route table association and propagation, route maps, internet security settings, and propagated labels. Because the policy applies these settings consistently across governed connections, it helps standardize routing and overrides conflicting settings configured directly on individual connections.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;How it works&lt;/H2&gt;
&lt;P&gt;The setup follows AVNM's standard workflow:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Create a network group.&lt;/STRONG&gt; Add virtual networks as members — either statically (by selecting specific VNets) or dynamically (using Azure Policy conditions such as tags or resource group names).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create a connectivity configuration.&lt;/STRONG&gt; Choose hub-and-spoke topology, select your Virtual WAN hub as the hub, and select or create a connection policy.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deploy.&lt;/STRONG&gt; Commit the configuration to your target regions. AVNM connects all VNets in the network groups to the Virtual WAN hub and applies the connection policy in parallel.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;You can also enable &lt;STRONG&gt;direct connectivity&lt;/STRONG&gt; within a spoke network group. When enabled, VNet-to-VNet traffic within that group routes directly between virtual networks instead of transiting the Virtual WAN hub — useful for latency-sensitive or high-throughput east-west workloads. By default, direct connectivity is regional; enable global mesh to extend it across Azure regions.&lt;/P&gt;
&lt;H2&gt;Key use cases&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Bulk spoke onboarding&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Connect many virtual networks to a Virtual WAN hub in one operation. All connections are orchestrated in parallel by AVNM, and the pre-defined routing configuration is automatically applied.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Policy-based dynamic onboarding&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Use Azure Policy to define network group membership conditions. When a new virtual network matches those conditions—for example, a VNet tagged env:prod—it is automatically added to the network group. On the next deployment, AVNM connects it to the Virtual WAN hub with the correct routing configuration, reducing manual onboarding effort.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Batch routing configuration updates&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Push routing changes to all virtual networks in a network group as a single, fully parallelized operation. This significantly reduces maintenance window duration for network-wide changes and makes rollback straightforward.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Incremental deployment&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Segment your network into precise update domains by creating separate network groups — for example, by environment (staging, dev, production) or by region. Deploy connection policies to each group or region independently. This lets you test changes on a smaller subset before applying them broadly, minimizing blast radius.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Mesh for selective inspection bypass&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you use routing intent to send all private traffic through a firewall in the Virtual WAN hub, certain high-throughput or latency-sensitive flows (such as database replication) may benefit from bypassing that inspection. Enable direct connectivity in AVNM to create a mesh between selected spokes, allowing VNet-to-VNet traffic to route directly while all other traffic continues through the hub firewall.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Security admin rules at scale&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Define network groups for your Virtual WAN spokes, then use AVNM security admin rules to author and deploy access control lists across those spokes. This provides an additional layer of defense alongside next-generation firewalls in the Virtual WAN hub.&lt;/P&gt;
&lt;H2&gt;Getting started&lt;/H2&gt;
&lt;H3&gt;Prerequisites:&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;An existing Azure Virtual Network Manager instance&lt;/LI&gt;
&lt;LI&gt;An existing Azure Virtual WAN and Virtual WAN hub&lt;/LI&gt;
&lt;LI&gt;One or more virtual networks to use as spoke members&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;To configure:&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Go to your Network Manager instance in the Azure portal.&lt;/LI&gt;
&lt;LI&gt;Create a network group and add your spoke VNets.&lt;/LI&gt;
&lt;LI&gt;Create a connectivity configuration → select hub-and-spoke → select your Virtual WAN hub → select or create a connection policy → add spoke network groups.&lt;/LI&gt;
&lt;LI&gt;Deploy the configuration to your target regions.&lt;/LI&gt;
&lt;LI&gt;In your Virtual WAN resource, verify that the expected spoke VNet connections are in a connected state. Review effective routes in the virtual hub to confirm routing behavior matches the selected connection policy.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For detailed step-by-step instructions, see &lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network-manager/configure-virtual-wan-hub-for-network-manager" target="_blank"&gt;Configure Azure Virtual WAN hub for Azure Virtual Network Manager&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;For more on connection policy, see &lt;A href="https://learn.microsoft.com/en-us/azure/virtual-wan/how-to-connection-policy" target="_blank"&gt;Connection policy in Azure Virtual WAN&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Learn more&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network-manager/" target="_blank"&gt;Azure Virtual Network Manager documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-wan/virtual-network-manager-integration" target="_blank"&gt;Virtual WAN and Virtual Network Manager integration overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-wan/" target="_blank"&gt;Azure Virtual WAN documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 26 May 2026 20:44:54 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/simplify-virtual-wan-spoke-connectivity-at-scale-with-azure/ba-p/4523055</guid>
      <dc:creator>Jay-Li</dc:creator>
      <dc:date>2026-05-26T20:44:54Z</dc:date>
    </item>
    <item>
      <title>Summarized Gateway Prefixes for Route Advertisement in Azure Virtual Networks</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/summarized-gateway-prefixes-for-route-advertisement-in-azure/ba-p/4521652</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Background&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Many Azure deployments follow a &lt;STRONG&gt;hub-and-spoke topology&lt;/STRONG&gt;: one VNet is designated as the &lt;STRONG&gt;hub&lt;/STRONG&gt; and holds the connection to on-premises (via ExpressRoute Gateway, VPN Gateway, or both), and workload VNets — the &lt;STRONG&gt;spokes&lt;/STRONG&gt; — peer to the hub to reach on-premises and shared services. This centralizes gateway connectivity so many workloads can share a single ExpressRoute or VPN Gateway.&lt;/P&gt;
&lt;P&gt;However, in large hub-and-spoke topologies, ExpressRoute and VPN Gateway limits on advertised prefixes (for example, 1,000 IPv4 and 100 IPv6 prefixes) can be reached. Because each spoke adds its own address prefixes to that count, these limits are approached quickly, constraining how far the topology can scale.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What's New&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With Summarized Gateway Prefixes, customers can now advertise a single covering prefix (for example, 10.0.0.0/16) instead of many smaller CIDRs (for example, multiple /24s) – dramatically reducing advertised route count and enabling larger-scale Azure environments.&lt;/P&gt;
&lt;P&gt;A new property, summarizedGatewayPrefixes, is now available on the Virtual Network resource in public preview. When configured on a hub VNet, it controls what your &lt;STRONG&gt;ExpressRoute Gateway and VPN Gateway&lt;/STRONG&gt; advertise to on-premises, replacing the default behavior of advertising all individual hub and spoke VNet CIDRs with a set of aggregated prefixes you define.&lt;/P&gt;
&lt;P&gt;For example, instead of advertising 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, and so on for each spoke, you can advertise a single 10.0.0.0/16.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Benefits&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Fewer advertised routes&lt;/STRONG&gt; — Replace hundreds of individual spoke CIDRs with a small set of summarized prefixes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Scales with your topology&lt;/STRONG&gt; — Supports deployments with 500+ spokes without requiring address plan redesigns or VNet splits.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;IPv4 and IPv6&lt;/STRONG&gt; — Summarize both address families.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Works with both gateway types&lt;/STRONG&gt; — Supported on ExpressRoute Gateway and VPN Gateway.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Simple configuration&lt;/STRONG&gt; — A single property on the VNet resource. No additional services or dependencies.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Backward compatible&lt;/STRONG&gt; — If the property is left empty, behavior is unchanged: all hub and peered spoke address spaces are advertised as before.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;How It Works&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Default behavior&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;ExpressRoute Gateway and VPN Gateway advertise &lt;STRONG&gt;all&lt;/STRONG&gt; address spaces of the hub VNet and &lt;STRONG&gt;all&lt;/STRONG&gt; address spaces of peered spoke VNets to on-premises.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;With summarizedGatewayPrefixes configured&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The gateways advertise &lt;STRONG&gt;the summarized prefixes&lt;/STRONG&gt; instead of the hub VNet's individual address spaces.&lt;/LI&gt;
&lt;LI&gt;For each peered spoke, if the spoke's address space falls within a summarized prefix, the spoke's individual CIDRs are &lt;STRONG&gt;suppressed&lt;/STRONG&gt; from advertisement.&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;Spoke address spaces &lt;STRONG&gt;not covered&lt;/STRONG&gt; by a summarized prefix continue to be advertised individually.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Example:&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td style="border-width: 1px;"&gt;
&lt;P&gt;&lt;STRONG&gt;Without Summarization&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td style="border-width: 1px;"&gt;
&lt;P&gt;&lt;STRONG&gt;With Summarization&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-width: 1px;"&gt;
&lt;P&gt;10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, …&lt;/P&gt;
&lt;/td&gt;&lt;td style="border-width: 1px;"&gt;
&lt;P&gt;10.0.0.0/16&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-width: 1px;"&gt;
&lt;P&gt;Hundreds of prefixes&lt;/P&gt;
&lt;/td&gt;&lt;td style="border-width: 1px;"&gt;
&lt;P&gt;One prefix&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Getting Started&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open the hub VNet (the VNet containing your &lt;STRONG&gt;GatewaySubnet&lt;/STRONG&gt;) in the Azure portal.&lt;/LI&gt;
&lt;LI&gt;Go to &lt;STRONG&gt;Address space → Advertised gateway prefixes&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Add one or more IPv4 or IPv6 CIDR prefixes that cover the address spaces you want to summarize.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;Navigate to your virtual network and verify that the summarized prefixes appear.&lt;BR /&gt;&lt;img /&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Things to Know&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The property is set on the hub VNet (the VNet with the GatewaySubnet).&lt;/LI&gt;
&lt;LI&gt;The summarized prefixes list can include prefixes outside the VNet's own address space.&lt;/LI&gt;
&lt;LI&gt;Avoid overlap among prefixes within the list, but overlap with peered VNet address spaces is expected in hub-and-spoke designs.&lt;/LI&gt;
&lt;LI&gt;For dual-stack (IPv4 + IPv6) VNets, define both IPv4 and IPv6 summarized prefixes explicitly.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 20 May 2026 19:10:30 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/summarized-gateway-prefixes-for-route-advertisement-in-azure/ba-p/4521652</guid>
      <dc:creator>Jay-Li</dc:creator>
      <dc:date>2026-05-20T19:10:30Z</dc:date>
    </item>
    <item>
      <title>Deploy with Confidence: Using Rule Impact Analyzer in Azure Virtual Network Manager</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/deploy-with-confidence-using-rule-impact-analyzer-in-azure/ba-p/4521342</link>
      <description>&lt;H2&gt;Introduction&lt;/H2&gt;
&lt;P&gt;In a&amp;nbsp;&lt;A href="https://azure.microsoft.com/en-us/blog/using-microsoft-azure-virtual-network-manager-to-enhance-network-security/" target="_blank" rel="noopener"&gt;previous blog post&lt;/A&gt;, we described how Azure Virtual Network Manager (AVNM) enables central teams to enforce security admin rules across hundreds of virtual networks—bring consistency and governance to complex enterprise environments.&lt;/P&gt;
&lt;P&gt;But enforcement at scale introduces a new challenge:&amp;nbsp;&lt;STRONG&gt;deployment confidence&lt;/STRONG&gt;. Security admin rules take priority over NSG rules and can span subscriptions and management groups. That makes them powerful—but a single misconfigured rule can disrupt critical traffic across your entire network. Governance teams need a way to understand the real-world impact of a rule&amp;nbsp;&lt;EM&gt;before&lt;/EM&gt;&amp;nbsp;it reaches production—not after.&lt;/P&gt;
&lt;P&gt;This is exactly the problem Azure Virtual Network Manager now solves with the&amp;nbsp;&lt;STRONG&gt;Rule Impact Analyzer&lt;/STRONG&gt;—a capability that simulates proposed security admin rules against your real network traffic, so you can see exactly what will change, what won't, and deploy with confidence instead of guesswork.&lt;/P&gt;
&lt;H2&gt;The Challenge: Understanding Rule Impact Before Deployment&lt;/H2&gt;
&lt;P&gt;As enterprises scale up their use of security admin rules, a visibility gap emerges. Consider a common scenario: a central governance team needs to block high-risk ports across all production virtual networks. The rules are well-intentioned, but the team has no visibility into which existing traffic flows would be affected. Without a way to preview the impact, teams face an uncomfortable tradeoff—move quickly and risk disruption, or slow down manual review across every affected network.&lt;/P&gt;
&lt;P&gt;The Rule Impact Analyzer is designed to close this gap—giving teams with a clear, data-driven view of what a rule of change will do before it reaches production.&lt;/P&gt;
&lt;H2&gt;What Is the Rule Impact Analyzer?&lt;/H2&gt;
&lt;P&gt;The Rule Impact Analyzer is a joint capability of&amp;nbsp;&lt;STRONG&gt;Azure Virtual Network Manager&lt;/STRONG&gt;&amp;nbsp;and&amp;nbsp;&lt;STRONG&gt;Azure Network Watcher&lt;/STRONG&gt;. It lets you simulate proposed security admin rules against traffic data derived from virtual network (VNet) flow logs and Traffic Analytics in your environment.&lt;/P&gt;
&lt;P&gt;Instead of relying on manual review, the analyzer evaluates proposed rules against observed traffic and classifies each flow:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Affected&lt;/STRONG&gt;&amp;nbsp;— The proposed rule would change the current evaluation outcome for this flow (e.g., traffic that is currently allowed would be blocked).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Not Affected&lt;/STRONG&gt;&amp;nbsp;— The flow would continue as-is; the rule does not apply.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Indeterminate&lt;/STRONG&gt;&amp;nbsp;— The flow cannot be conclusively evaluated (e.g., insufficient traffic data).&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This gives governance teams and network administrators a clear, data-driven view of what a rule of change will do—before it reaches production.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&amp;nbsp;The analysis is based on traffic data available through flow logs and Traffic Analytics. Results reflect recorded traffic patterns; traffic that has not yet been observed will not appear in results.&lt;/P&gt;
&lt;H2&gt;The Customer Journey: From Rule Authoring to Validated Deployment&lt;/H2&gt;
&lt;P&gt;The Rule Impact Analyzer fits naturally into the lifecycle of security admin rule management:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This workflow lets teams author rules, simulate impact, review results, and refine policies before committing a single change to production. Teams can cycle through simulation as many times as needed.&lt;/P&gt;
&lt;H2&gt;Key Capabilities&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; Predicted Impact Visibility&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;See briefly how your proposed security admin rules would affect existing traffic flows. Results are based on Traffic Analytics data, helping teams make informed deployment decisions.&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;STRONG&gt; Flow-Level Drill-Down&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Go beyond summary counts. Inspect specific source and destination paths, see which rule affects each flow, and identify legitimate traffic that would be unintentionally blocked. This makes it easy to pinpoint issues and refine your rules.&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt; Configurable Scope&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;You don't have to analyze everything at once. Target your analysis to specific:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Rule collections&lt;/STRONG&gt;&amp;nbsp;or individual security admin rules&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Network groups&lt;/STRONG&gt;&amp;nbsp;or specific virtual networks&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This lets you focus on the areas that matter most, whether you're validating a single rule change or assessing a broad policy rollout.&lt;/P&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;&lt;STRONG&gt; Controlled Iteration&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Modify your security admin rules, re-run the analysis, and repeat—as many times as you need. Deploy only when the simulated impact matches your intended connectivity outcome.&lt;/P&gt;
&lt;OL start="5"&gt;
&lt;LI&gt;&lt;STRONG&gt; Inbound and Outbound Evaluation&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The analyzer evaluates both inbound and outbound traffic directions, giving you full visibility into the rule's impact across your network.&lt;/P&gt;
&lt;H2&gt;Real-World Scenario: Locking Down Internet-Exposed Management Ports at Scale&lt;/H2&gt;
&lt;P&gt;Let’s look at a real-world scenario as an example. Your organization runs hundreds of VNets across multiple subscriptions. Over time, different teams have created NSG rules that allow inbound SSH (port 22) and RDP (port 3389) from broad source ranges — some even from 0.0.0.0/0. Your security team mandates: &lt;STRONG&gt;block all inbound management-port access except from trusted bastion subnets&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The challenge? You can't just flip a switch. Blocking the wrong traffic could be risky, and you want to know the impact of applying the security rules.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;With Rule Impact Analyzer, you can:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Define the proposed security admin rule&lt;/STRONG&gt; — deny inbound TCP 22/3389 from all sources except your bastion subnet prefix&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Simulate before you commit&lt;/STRONG&gt; — see exactly which VNets, subnets, and NICs currently have traffic matching the rule, and which existing NSG rules would be overridden&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify conflicts&lt;/STRONG&gt; — spot cases where a team's NSG "Allow" rule would be superseded by your new admin-level "Deny," so you can coordinate before deployment&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deploy with confidence&lt;/STRONG&gt; — roll out the rule knowing the blast radius is fully understood, not guessed&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Before Rule Impact Analyzer&lt;/STRONG&gt;, this required manually auditing NSG rules across every subscription, cross-referencing with resource inventories, and hoping nothing was missed. &lt;STRONG&gt;Now&lt;/STRONG&gt;, a single simulation gives you a complete picture in minutes — turning a week-long audit into a self-service workflow.&lt;/P&gt;
&lt;H2&gt;How It Works: Architecture and Design&lt;/H2&gt;
&lt;P&gt;Rule Impact Analyzer uses existing Azure networking telemetry and analytics components. It does not require a separate data collection pipeline.&lt;/P&gt;
&lt;P&gt;The following diagram provides an interactive version of the architecture:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1: Traffic Analytics as Ground Truth.&lt;/STRONG&gt;&amp;nbsp;The analyzer queries your existing VNet flow logs through Traffic Analytics. No new agents, log pipelines, or storage accounts are required.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2: Log Analytics as the Query Engine.&lt;/STRONG&gt;&amp;nbsp;Traffic Analytics data resides in your Log Analytics workspace. The Rule Impact Analyzer runs Kusto Query Language (KQL) queries to retrieve the observed flows relevant to your analysis scope.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3: AVNM Rule Evaluation Engine.&lt;/STRONG&gt;&amp;nbsp;The retrieved flows are evaluated using AVNM's own enforcement logic—the same priority ordering, allow/deny behavior, and scope resolution used in production. This ensures that what you see in the analyzer matches what would happen when rules are enforced.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 4: Results Correlation and Surfacing.&lt;/STRONG&gt;&amp;nbsp;Each flow is classified and surfaced in the Azure Portal with drill-down capabilities—from summary impact counts down to individual flow paths and the specific rules affecting them.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What Means for You&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Uses existing infrastructure.&lt;/STRONG&gt;&amp;nbsp;If you already have Traffic Analytics enabled, there is nothing new to deploy.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No data duplication.&lt;/STRONG&gt;&amp;nbsp;Queries run in place within your existing Log Analytics workspace, under your existing RBAC and data retention policies.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Transparent costs.&lt;/STRONG&gt;&amp;nbsp;Only standard Log Analytics query costs apply—no hidden charges or separate billing.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Getting Started&lt;/H2&gt;
&lt;P&gt;You can access Rule Impact Analyzer from two entry points in the Azure Portal:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;From Azure Virtual Network Manager:&lt;/STRONG&gt;&amp;nbsp;Navigate to your security admin configuration → select a rule collection → launch the Rule Impact Analyzer.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;From Azure Network Watcher:&lt;/STRONG&gt;&amp;nbsp;Navigate to Monitoring → Traffic Analytics → Rule Analyzer.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Both paths lead to the same analysis experience, so you can start with whichever tool fits your workflow.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Prerequisites&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Before using the Rule Impact Analyzer, ensure the following are in place:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;VNet flow logs&lt;/STRONG&gt;&amp;nbsp;are enabled on the virtual networks you want to analyze.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Traffic Analytics&lt;/STRONG&gt;&amp;nbsp;is configured and sends data to a&amp;nbsp;&lt;STRONG&gt;Log Analytics workspace&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;You have the necessary&amp;nbsp;&lt;STRONG&gt;RBAC permissions&lt;/STRONG&gt;&amp;nbsp;to access the AVNM security admin configuration and the Log Analytics workspace.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Steps&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Enable VNet flow logs and Traffic Analytics&lt;/STRONG&gt;&amp;nbsp;on your target virtual networks.&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/network-watcher/traffic-analytics" target="_blank" rel="noopener"&gt;Learn more about Traffic Analytics&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Author or update your security admin rules&lt;/STRONG&gt;&amp;nbsp;in Azure Virtual Network Manager.&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network-manager/concept-security-admins" target="_blank" rel="noopener"&gt;Learn more about AVNM security admin rules&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Launch the Rule Impact Analyzer&lt;/STRONG&gt;&amp;nbsp;from either portal entry point, configure your scope (rule collections, network groups, or specific VNets), and run the analysis.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Review, refine, and deploy.&lt;/STRONG&gt;&amp;nbsp;Iterate your rules until the simulated impact matches your intended outcome, then deploy with confidence.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The screenshot below shows the Rule Impact Analyzer in the Azure Portal. After running a simulation, you can see a summary of predicted traffic impact—total paths analyzed, how many are affected or not affected—along with a detailed results table to drill into individual flows and identify which rule impacts each one.&lt;/P&gt;
&lt;H2&gt;Why It Matters&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Outage Prevention&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For organizations rolling out network isolation policies at scale, Rule Impact Analyzer acts as a safety net. By simulating rule impact against recorded traffic patterns, teams can catch misconfigurations before they reach production.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Faster Rule Adoption&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Without the analyzer, deploying new admin rules often requires lengthy manual review cycles. With self-service impact analysis, governance teams can validate and deploy rules faster—without waiting for manual approval.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Aligning with Behavior&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Security policies express&amp;nbsp;&lt;EM&gt;intent&lt;/EM&gt;—what traffic should or shouldn't be allowed. Rule Impact Analyzer validates whether a proposed rule achieves that intent against your&amp;nbsp;&lt;EM&gt;observed&lt;/EM&gt;&amp;nbsp;traffic, closing the loop between policy design and operational behavior.&lt;/P&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;The AVNM Rule Impact Analyzer closes the gap between policy intent and deployment confidence. Simulating rules against observed traffic—with no additional infrastructure required—governance teams can validate impact before enforcement.&lt;/P&gt;
&lt;P&gt;Enforcement without visibility is a risk. Visibility without enforcement is incomplete. This capability brings both together.&lt;/P&gt;
&lt;P&gt;We welcome your feedback as you start using this capability. Share your experience through the Azure Portal feedback button or your Microsoft account team.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Learn more:&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network-manager/overview" target="_blank" rel="noopener"&gt;Azure Virtual Network Manager&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/network-watcher/network-watcher-monitoring-overview" target="_blank" rel="noopener"&gt;Azure Network Watcher&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/network-watcher/traffic-analytics" target="_blank" rel="noopener"&gt;Traffic Analytics&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network-manager/concept-security-admins" target="_blank" rel="noopener"&gt;AVNM Security Admin Rules&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://azure.microsoft.com/en-us/blog/using-microsoft-azure-virtual-network-manager-to-enhance-network-security/" target="_blank" rel="noopener"&gt;Using Azure Virtual Network Manager to Enhance Network Security&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Authors:&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Deepak Bansal, Corporate Vice President and Technical Fellow, Microsoft Azure, Xinyan Zan, Vice President, Ashish Bhargava, Principal Software Development Manager, and Jay Li, Senior Product Manager&lt;/P&gt;</description>
      <pubDate>Fri, 22 May 2026 06:36:58 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/deploy-with-confidence-using-rule-impact-analyzer-in-azure/ba-p/4521342</guid>
      <dc:creator>Jay-Li</dc:creator>
      <dc:date>2026-05-22T06:36:58Z</dc:date>
    </item>
    <item>
      <title>Understanding and building an Azure Hybrid Meshed Hub-Spoke Topology</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/understanding-and-building-an-azure-hybrid-meshed-hub-spoke/ba-p/4516879</link>
      <description>&lt;H1&gt;A meshed hybrid hub-spoke topology&lt;/H1&gt;
&lt;P&gt;Azure offers two main approaches to build network architectures. This article focuses on &lt;STRONG&gt;traditional networking&lt;/STRONG&gt; (using VNets, peering, route tables, etc.), rather than Azure Virtual WAN.&lt;/P&gt;
&lt;H2&gt;Why a hub-spoke topology?&lt;/H2&gt;
&lt;P&gt;A hub‑spoke topology is the only way to &lt;STRONG&gt;control traffic flows while maintaining scalability&lt;/STRONG&gt;, because it enforces a central point of connectivity and policy enforcement:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Centralized traffic control / inspection: &lt;/STRONG&gt;All connectivity (to on‑premises, the internet, and between spokes) is anchored through the hub. The hub hosts shared services such as firewalls or NVAs, providing a single control point where traffic is inspected, filtered, and governed consistently.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Avoids uncontrolled lateral communication: &lt;/STRONG&gt;Spokes do not connect arbitrarily to each other. All connectivity is routed through the hub, preventing uncontrolled east‑west communication and ensuring traffic follows defined security and routing policies.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Inherent scalability by design: &lt;/STRONG&gt;New workloads are added by introducing additional spokes. The core network design remains unchanged, enabling linear scaling without the complexity of full-mesh connectivity.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In summary, the hub‑spoke model provides centralized control combined with scalable, decoupled workload networks—something that flat or full-mesh designs struggle to achieve.&lt;/P&gt;
&lt;H2&gt;From hub-spoke to meshed multi-region&lt;/H2&gt;
&lt;P&gt;In a hub‑spoke topology, it’s important to keep in mind that the hub is implemented as an Azure Virtual Network (VNet) and VNets are scoped to a single region. This means that in a multi‑region setup, you’ll always need at least one hub per region. Each of these hubs hosts shared services like firewalls, NVAs, and DNS, acting as the central point for connectivity and traffic control.&lt;/P&gt;
&lt;P&gt;Extending dependencies across regions—for example by connecting spokes to a hub in another region—is generally not recommended. It creates tight coupling between regions, which goes against the goal of keeping regions independent. A well-designed multi‑region architecture aims for &lt;STRONG&gt;regional self‑containment to improve resilience and fault isolation&lt;/STRONG&gt;. Relying on a remote hub can lead to issues like failure propagation between regions, higher latency for inspected traffic and more complex routing and operations. It can also introduce organizational challenges when different regions are managed by separate teams, reducing agility and increasing operational risk.&lt;/P&gt;
&lt;P&gt;For this reason, meshed hub‑spoke architectures should use &lt;STRONG&gt;hubs that are deployed within each region&lt;/STRONG&gt;. Connectivity between regions should be established directly between the hubs, not through spokes. In a meshed design, hubs are typically connected in a full‑mesh peering model, allowing for controlled and predictable inter‑region communication while still maintaining regional independence.&lt;/P&gt;
&lt;P&gt;Within a single region, it can also make sense to deploy multiple hubs to create isolated environments. This is especially useful when you need to separate workloads based on security requirements, regulatory needs, or organizational boundaries. Each hub can then have its own dedicated set of connectivity and inspection services.&lt;/P&gt;
&lt;P&gt;Finally, &lt;STRONG&gt;each spoke VNet connects to just one hub&lt;/STRONG&gt;. This keeps routing simple and predictable, ensures that all traffic passes through the correct inspection and policy enforcement layers, and reinforces the hub’s role as the central control point for network traffic within the region.&lt;/P&gt;
&lt;H2&gt;Integrating hybrid connectivity&lt;/H2&gt;
&lt;P&gt;In most enterprise scenarios, Azure doesn’t operate in isolation—it needs to connect to &lt;STRONG&gt;external networks&lt;/STRONG&gt; such as on‑premises datacenters or other cloud environments. This hybrid connectivity is typically set up using services like Azure ExpressRoute, Azure VPN Gateway or third‑party SD‑WAN solutions. In a (meshed) hub‑spoke topology, these&lt;STRONG&gt; connectivity components are best deployed in the hub VNet&lt;/STRONG&gt;, since the hub acts as the central point where all inbound and outbound traffic comes together.&lt;/P&gt;
&lt;P&gt;By centralizing external connectivity in the hub, all traffic—whether entering or leaving Azure—can be routed, inspected and governed in a consistent way using shared services like firewalls or NVAs. It also avoids the need to duplicate gateways and connectivity components across multiple spokes, which helps reduce cost and operational overhead.&lt;/P&gt;
&lt;P&gt;This approach also simplifies routing and policy management. Spokes can rely on the hub’s shared connectivity instead of maintaining their own connections to external networks. Overall, this reinforces the hub’s role as the single, controlled integration point between Azure and the broader network landscape.&lt;/P&gt;
&lt;H1&gt;Implementation fundamentals&lt;/H1&gt;
&lt;P&gt;With the overall architecture in place, the next step is to understand how Azure actually handles routing and traffic control in this kind of design.&lt;/P&gt;
&lt;P&gt;When working with a hub‑spoke topology in Azure, it’s important to realize that a virtual network (VNet) doesn’t behave like a traditional router. While you can associate &lt;STRONG&gt;Azure Route Tables&lt;/STRONG&gt; with subnets, those &lt;STRONG&gt;routes only apply to traffic originating from within that subnet&lt;/STRONG&gt;. Traffic entering the VNet from outside isn’t automatically re‑routed. This is also why VNet peering is non‑transitive by design: peered VNets can communicate directly, but they won’t forward traffic for other networks.&lt;/P&gt;
&lt;P&gt;To enable controlled routing between spokes—and between Azure and external networks such as ExpressRoute or VPN—you need a component in the hub that can actively receive and forward traffic. In most cases, this is handled by an Azure Firewall or a network virtual appliance (NVA) deployed in the hub. These components act as an explicit routing hop: they receive traffic, inspect or process it based on defined policies and then send it back into the virtual network so Azure’s routing engine can continue forwarding it.&lt;/P&gt;
&lt;P&gt;In a &lt;STRONG&gt;secure&lt;/STRONG&gt; hub‑spoke design, the &lt;STRONG&gt;firewall plays a dual role&lt;/STRONG&gt;. It not only provides centralized traffic inspection and enforces security policies, but also acts as the mechanism that enables transitive communication between spokes and external networks. This combination of control and connectivity is a key part of the architecture. Of course, this only works as intended if the firewall is configured with the right rules to allow or block traffic according to your security requirements.&lt;/P&gt;
&lt;P&gt;While it’s technically possible to implement routing using a basic virtual machine or even a Virtual Network Gateway, these approaches don’t meet typical enterprise requirements. They lack built‑in capabilities like advanced traffic inspection, high availability, autoscaling and centralized policy management. Purpose‑built solutions such as Azure Firewall or mature third‑party NVAs are designed to provide not just routing, but also integrated security, consistency, and scalability. For that reason, they’re generally the only realistic choice for production‑grade hub‑spoke environments where both control and resilience matter.&lt;/P&gt;
&lt;H1&gt;Design principles for building the topology&lt;/H1&gt;
&lt;P&gt;The diagram below shows the topology for a hybrid meshed hub-spoke, with 2 hubs and an Azure Firewall (any other 3rd party Firewall could be used as well).&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Ensuring correct connectivity in a hub-and-spoke topology may initially appear complex, but in practice it comes down to understanding and correctly applying &lt;STRONG&gt;four key design principles&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;controlled routing in the GatewaySubnet&lt;/LI&gt;
&lt;LI&gt;controlled routing in each spoke&lt;/LI&gt;
&lt;LI&gt;proper peering of spokes to the hub&lt;/LI&gt;
&lt;LI&gt;meshing the hubs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Before looking at these in detail, it is important to understand a fundamental behavior of Azure Virtual Network (VNet) peering. When two VNets are peered, Azure automatically &lt;STRONG&gt;exchanges their address spaces (CIDR ranges) and injects these prefixes as system routes into the effective route tables of all subnets.&lt;/STRONG&gt; As a result, resources in one VNet can communicate directly with resources in the other using private IP addressing, without any additional routing configuration. This built-in route propagation is what makes VNet peering an efficient and low-latency connectivity mechanism in Azure.&lt;/P&gt;
&lt;P&gt;However, this default behavior is not always aligned with the requirements of a hub-and-spoke topology. In this model, network services such as firewalls, inspection and routing control are typically centralized in the hub VNet. If communication between spokes is allowed to follow the automatically injected system routes, traffic could bypass these centralized controls, which would undermine design objectives such as inspection, segmentation and governance.&lt;/P&gt;
&lt;P&gt;For this reason, although VNet peering provides seamless connectivity by default, additional configuration is required in a hub-and-spoke architecture. This is usually achieved through &lt;STRONG&gt;Azure Route Tables, network virtual appliances (NVAs) or Azure Firewall&lt;/STRONG&gt;, ensuring that traffic between spokes is routed through the hub as intended. This approach enables a controlled routing model that is &lt;STRONG&gt;essential for maintaining security and architectural consistency&lt;/STRONG&gt; in enterprise-scale Azure environments.&lt;/P&gt;
&lt;H2&gt;Design principle 1: Controlled routing in the GatewaySubnet&lt;/H2&gt;
&lt;P&gt;In hybrid connectivity scenarios, traffic originating from on-premises environments over VPN or ExpressRoute is first terminated by the Azure Virtual Network Gateway. From there, the traffic is injected into the Azure network using the routing context of the GatewaySubnet. By default, this process &lt;STRONG&gt;relies on system routes that are automatically populated through VNet peering&lt;/STRONG&gt;. As a result, when the destination resides in a spoke VNet, the traffic is forwarded directly to that spoke, since its address space has already been learned and installed as a system route. While this behavior is efficient, it also means that traffic will bypass centralized security controls in the hub, such as Azure Firewall.&lt;/P&gt;
&lt;P&gt;To ensure that all incoming traffic is properly inspected, this &lt;STRONG&gt;default routing behavior needs to be adjusted&lt;/STRONG&gt;. This is done by &lt;STRONG&gt;associating a custom Azure Route Table with the GatewaySubnet and defining user-defined routes for each spoke address range&lt;/STRONG&gt;. These routes should point to the private IP address of the firewall as the next hop, effectively overriding the system routes created by VNet peering. Because Azure gives precedence to user-defined routes over system routes, traffic that would normally go directly to the spoke is instead redirected through the firewall before reaching its destination.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;It is important that these user-defined routes precisely match the CIDR ranges defined for the spoke VNets!&lt;/STRONG&gt; Any mismatch, such as using broader or more specific prefixes, can lead to unexpected routing behavior and may introduce issues such as asymmetric traffic flows or packet loss. For instance, if a spoke uses address spaces like 10.10.10.0/24 and 192.168.10.0/24, these exact prefixes must be reflected in the route table. Only by aligning the custom routes with the advertised address ranges can you ensure predictable routing and consistent inspection through the firewall.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;If the hub VNet hosts additional resources&lt;/STRONG&gt; beyond an Azure Firewall or third-party network virtual appliance that also require traffic inspection, &lt;STRONG&gt;the corresponding CIDR ranges&lt;/STRONG&gt;—either for the specific subnets or for the entire hub VNet—&lt;STRONG&gt;should be included as routes in the route table associated with the GatewaySubnet&lt;/STRONG&gt;. These routes should be configured in the same way as those for spoke VNets, ensuring that traffic destined for these resources is directed through the intended inspection point. A typical example is Azure DNS Private Resolver, which can include both inbound and outbound endpoints deployed in dedicated subnets. When such endpoints are present in the hub, their associated subnet address ranges must also be added to the route table for the GatewaySubnet. This ensures that traffic to and from these endpoints is routed through the designated inspection path, maintaining consistent enforcement of security controls.&lt;/P&gt;
&lt;H2&gt;Design principle 2: Controlled routing in every spoke&lt;/H2&gt;
&lt;P&gt;In a hub-and-spoke architecture, traffic flows should follow the intended security model. &lt;STRONG&gt;Workloads within the same spoke VNet&lt;/STRONG&gt; are usually treated as part of the &lt;STRONG&gt;same trust boundary&lt;/STRONG&gt;, so traffic between resources in that spoke can flow directly over the Azure backbone without needing to pass through centralized controls. &lt;STRONG&gt;Network Security Groups (NSGs)&lt;/STRONG&gt; should still be used at the subnet level to provide granular, stateful filtering, but routing this traffic through a central firewall is typically not required.&lt;/P&gt;
&lt;P&gt;The situation changes when traffic leaves the local VNet. As soon as &lt;STRONG&gt;traffic is destined for another spoke, the hub, or on-premises networks&lt;/STRONG&gt;, it &lt;STRONG&gt;crosses a trust boundary and needs to be inspected&lt;/STRONG&gt; centrally. To enforce this, Azure’s default routing behavior must be overridden by associating an &lt;STRONG&gt;Azure Route Table&lt;/STRONG&gt; with each subnet in the spoke VNets.&lt;/P&gt;
&lt;P&gt;In most cases, this route table can be kept simple by defining a &lt;STRONG&gt;single default route&lt;/STRONG&gt; that sends all outbound, non-local traffic to the firewall in the hub:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Destination: 0.0.0.0/0&lt;/LI&gt;
&lt;LI&gt;Next hop: Private IP address of the hub firewall (Virtual Appliance)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;With this configuration in place, all traffic that is not local to the spoke is forced through the hub, ensuring that communication between VNets and towards external networks is inspected and controlled.&lt;/P&gt;
&lt;P&gt;From a management perspective, the same route table can often be reused across multiple subnets or even multiple VNets within the same subscription, which helps keep the design consistent and easy to maintain. It’s worth noting, however, that Azure requires route tables and the subnets they’re associated with to be in the same subscription, as this association is enforced by the platform.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;There is one additional setting that is often overlooked but plays an important role in getting routing right in a hub-and-spoke design. Azure route tables include an option called &lt;STRONG&gt;“Propagate gateway routes”&lt;/STRONG&gt;, which controls whether routes learned by a Virtual Network Gateway are added to the effective routes of the associated subnets. By default, routes learned via BGP (for example from ExpressRoute or VPN) or defined through a Local Network Gateway are propagated not only within the hub VNet, but also across VNet peerings. This means that spoke VNets can automatically learn routes to on-premises or external networks and may send traffic directly to the gateway, bypassing the firewall in the hub.&lt;/P&gt;
&lt;P&gt;To avoid this and keep traffic flowing through the centralized security controls, this setting should be disabled on the route tables used by the spoke subnets. When &lt;STRONG&gt;“Propagate gateway routes”&lt;/STRONG&gt; is set to &lt;STRONG&gt;No&lt;/STRONG&gt;, routes learned by the gateway are no longer injected into the spokes. As a result, traffic to those destinations cannot take a direct path and instead follows the user-defined default route (0.0.0.0/0) toward the hub firewall, where it can be properly inspected.&lt;/P&gt;
&lt;P&gt;When combined with the default route to the firewall, this setup ensures that traffic—whether it is going to other VNets, on-premises environments, or external networks—always follows a controlled and predictable path through the hub. This helps maintain consistent security enforcement and avoids unexpected routing behavior in larger or hybrid deployments.&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Design principle 3: Peering the spokes to the hub&lt;/H2&gt;
&lt;P&gt;Virtual Network (VNet) peering in Azure is often seen as a simple, single configuration, but in reality it is &lt;STRONG&gt;directional by design&lt;/STRONG&gt;. To fully connect two VNets, you need &lt;STRONG&gt;two separate peering configurations&lt;/STRONG&gt;—one in each direction—and both must be configured correctly to ensure not only connectivity, but also proper routing behavior. Each peering exposes &lt;STRONG&gt;four key settings &lt;/STRONG&gt;&amp;nbsp;and getting these right is especially important in a hub-and-spoke architecture.&lt;/P&gt;
&lt;P&gt;For basic connectivity, the first two settings—&lt;STRONG&gt;“allow virtual network access”&lt;/STRONG&gt; and &lt;STRONG&gt;“allow forwarded traffic”&lt;/STRONG&gt;—should be enabled on both peerings. These ensure that traffic can flow between VNets and support scenarios where traffic is routed through a central component, such as a firewall in the hub. The other two settings depend on the direction of the peering. In a typical hub-and-spoke setup, the &lt;STRONG&gt;Virtual Network Gateway (or Azure Route Server)&lt;/STRONG&gt; is deployed in the hub. This means the peering from the spoke to the hub must enable &lt;STRONG&gt;“use remote gateways”&lt;/STRONG&gt;, while the peering from the hub to the spoke must enable &lt;STRONG&gt;“allow gateway transit.”&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;At first, this might seem to contradict the idea that spokes should not directly use the gateway. However, these settings influence &lt;STRONG&gt;control plane behavior and &lt;/STRONG&gt;don't enable unrestricted traffic flow. They are required so the gateway can&amp;nbsp;&lt;STRONG&gt;learn and advertise spoke address ranges via BGP&lt;/STRONG&gt; to external networks, such as those connected over VPN or ExpressRoute. Whether those routes are actually used in the spokes is still controlled through the &lt;STRONG&gt;“propagate gateway routes”&lt;/STRONG&gt; setting on the route tables, allowing you to enforce routing through the firewall as intended.&lt;/P&gt;
&lt;P&gt;Even if you are not currently using BGP—for example, in environments relying on static routing—it is still a good practice to configure peerings this way. Doing so makes the design &lt;STRONG&gt;future-proof&lt;/STRONG&gt;, allowing you to introduce dynamic routing later without changes to the peering model. This approach keeps the architecture consistent and avoids unnecessary rework as the environment evolves.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Design principle 4: Meshing the hubs&lt;/H2&gt;
&lt;P&gt;When you extend a hub-and-spoke design across multiple regions, you typically introduce multiple hubs, each managing its own regional spokes. In this setup, it becomes important to connect the hubs to each other, which is done by &lt;STRONG&gt;fully meshing the hub VNets using VNet peering&lt;/STRONG&gt;. At the same time, a key principle remains unchanged: each spoke should connect to &lt;STRONG&gt;only one hub&lt;/STRONG&gt; &lt;STRONG&gt;in the same region&lt;/STRONG&gt;. This keeps the architecture simple, scalable and easier to reason about from a routing perspective.&lt;/P&gt;
&lt;P&gt;When configuring connectivity between hubs, it’s important to note that &lt;STRONG&gt;VNet peering settings differ from the typical hub–spoke configuration&lt;/STRONG&gt;. For inter-hub peerings, only &lt;STRONG&gt;“allow virtual network access”&lt;/STRONG&gt; and &lt;STRONG&gt;“allow forwarded traffic”&lt;/STRONG&gt; should be enabled. The remaining options—&lt;STRONG&gt;“allow gateway transit”&lt;/STRONG&gt; and &lt;STRONG&gt;“use remote gateways”&lt;/STRONG&gt;—should be left disabled, as gateway sharing is not required between hubs and would even be blocked in the configuration.&lt;/P&gt;
&lt;P&gt;Just connecting the hubs with peering is not enough to guarantee correct traffic flow. To ensure traffic moves between regions in a controlled and secure way, you need additional routing logic. Each hub should have an Azure Route Table assigned to its&amp;nbsp;&lt;STRONG&gt;FirewallSubnet (or the subnet hosting the 3rd party NVAs)&lt;/STRONG&gt;&amp;nbsp;defining how traffic towards other hub-and-spoke environments is handled. This ensures that inter-region traffic is &lt;STRONG&gt;always routed through the appropriate hub firewall&lt;/STRONG&gt;, instead of flowing directly across the Azure backbone.&lt;/P&gt;
&lt;P&gt;At this point, &lt;STRONG&gt;IP address planning becomes critical&lt;/STRONG&gt;. Without a clear addressing strategy, routing quickly becomes complex and hard to maintain. A common best practice is to assign a &lt;STRONG&gt;single “master” CIDR range per region&lt;/STRONG&gt;, and then allocate all VNets in that region—both hub and spokes—from that range. This creates a clean, hierarchical addressing model that simplifies routing decisions.&lt;/P&gt;
&lt;P&gt;With this approach in place, route tables can remain relatively simple. Instead of adding routes for every individual spoke, you only need &lt;STRONG&gt;one route per remote region&lt;/STRONG&gt;. The destination is the &lt;STRONG&gt;master CIDR range of that region&lt;/STRONG&gt;&amp;nbsp;and the next hop is the &lt;STRONG&gt;private IP of the firewall in the corresponding hub&lt;/STRONG&gt;. Because all hubs are peered with each other, these address ranges and firewall endpoints are automatically known through peering, allowing for consistent and predictable routing.&lt;/P&gt;
&lt;P&gt;Overall, this design keeps routing logic straightforward while ensuring that &lt;STRONG&gt;all inter-region traffic is inspected in the correct hub&lt;/STRONG&gt;, preserving the security model and making it easy to scale as new regions are added.&lt;/P&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;When the four design principles described in this article are applied consistently, a hub-and-spoke architecture becomes a strong, scalable and easy-to-operate foundation for your network. By combining controlled routing, centralized inspection and clear traffic flows, the model delivers both solid security and predictable behavior, even in complex environments.&lt;/P&gt;
&lt;P&gt;More importantly, the concepts covered here go beyond just one specific design. They represent the key building blocks of Azure networking, including routing, peering and traffic control. Understanding these fundamentals not only helps you implement hub-and-spoke topologies correctly, but also gives you a solid base for designing and running reliable, enterprise-grade network architectures in Azure.&lt;/P&gt;
&lt;P&gt;To make this easier to apply in practice, &lt;STRONG&gt;the table below summarizes the main concepts from this article and how they translate into actual configuration&lt;/STRONG&gt;. It can be useful both when setting up a hub-and-spoke topology and when troubleshooting existing environments.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-color-15" border="1" style="width: 100%; height: 1006.6px; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr style="height: 34.8px;"&gt;&lt;th class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Area&lt;/th&gt;&lt;th class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Configuration&lt;/th&gt;&lt;th class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Key Setting / Value&lt;/th&gt;&lt;th class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Purpose&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&lt;STRONG&gt;Hub VNet&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Deploy shared services&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Azure Firewall or NVA in hub&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Central inspection + routing&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Deploy connectivity&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;VPN Gateway / ExpressRoute in hub&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Centralize hybrid connectivity&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&lt;STRONG&gt;GatewaySubnet&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Associate Route Table&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;UDRs for each spoke CIDR → Firewall IP&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Force inbound traffic through firewall&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&lt;STRONG&gt;Spoke Subnets&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Associate Route Table&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;0.0.0.0/0 → Firewall (Virtual Appliance)&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Force all outbound traffic via hub&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Route Table setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&lt;STRONG&gt;Propagate gateway routes = Disabled&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Prevent bypass of firewall via gateway&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&lt;STRONG&gt;VNet Peering (Spoke → Hub)&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Allow VNet access = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Basic connectivity&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Allow forwarded traffic = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Support transitive routing via firewall&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Allow gateway transit = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Allow spoke to leverage hub gateway&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Use remote gateways = No&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&lt;STRONG&gt;VNet Peering (Hub → Spoke)&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Allow VNet access = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Basic connectivity&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Allow forwarded traffic = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Support routing through firewall&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Allow gateway transit = No&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Use remote gateways = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Advertise spoke prefixes via hub gateway&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&lt;STRONG&gt;VNet Peering (Hub→ Hub)&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Allow VNet access = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Basic connectivity&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 59.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 59.8px; border-width: 1px;"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 59.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 59.8px; border-width: 1px;"&gt;Allow forwarded traffic = Yes&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 59.8px; border-width: 1px;"&gt;Support transitive routing via firewall&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Allow gateway transit = No&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 34.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Setting&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;Use remote gateways = No&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 34.8px; border-width: 1px;"&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&lt;STRONG&gt;Hub FirewallSubnet&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Associate Route Table&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Route remote region CIDR → remote hub firewall IP&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Ensure inter-region/hub routing&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&lt;STRONG&gt;Addressing strategy&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;CIDR planning&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Assign master CIDR per region&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Simplify routing and reduce UDR complexity&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 58.8px;"&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;&lt;STRONG&gt;Spoke design rule&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Peering constraint&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Each spoke connected to &lt;STRONG&gt;one hub only&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-15" style="height: 58.8px; border-width: 1px;"&gt;Prevent routing ambiguity&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 18 May 2026 07:15:26 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/understanding-and-building-an-azure-hybrid-meshed-hub-spoke/ba-p/4516879</guid>
      <dc:creator>Svenbaeck</dc:creator>
      <dc:date>2026-05-18T07:15:26Z</dc:date>
    </item>
    <item>
      <title>Metrics Filtering and Log Aggregation Now GA for Advanced Container Networking Services</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/metrics-filtering-and-log-aggregation-now-ga-for-advanced/ba-p/4516508</link>
      <description>&lt;P&gt;We are thrilled to announce that Advanced Container Networking Services (ACNS) for Azure Kubernetes Service (AKS) now delivers two powerful observability features in General Availability: container network metrics filtering and container network log filtering and aggregation. Together, these capabilities set a new standard for Kubernetes network observability, giving you high-fidelity visibility at dramatically lower cost and noise. These capabilities fundamentally redefine how network observability works at scale while delivering up to 97% cost reduction.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why this is a Milestone?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Most Kubernetes observability solutions face a fundamental tension: collect everything and drown in noise and cost, or sample and miss the signals that matter, with new features of Advanced Container Networking Services that tradeoff has been eliminated.&lt;/P&gt;
&lt;P&gt;With this release, Azure becomes the first cloud provider to deliver on-node metrics filtering and flow log aggregation for Kubernetes networking, capabilities now also contributed to the upstream Hubble project, making them available to the broader open-source community.&lt;/P&gt;
&lt;P&gt;For AKS customers running Cilium-based clusters, this means:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Every flow you care about is captured. Everything else is dropped at the source.&lt;/LI&gt;
&lt;LI&gt;Log volume is compressed by up to 45% through aggregation, without losing security verdicts or error context.&lt;/LI&gt;
&lt;LI&gt;Costs scale with what you monitor, not with cluster size.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;What’s been improved in observability?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This release introduces two capabilities that work together: container network metrics filtering and container network log filtering and aggregation. Both are available on AKS clusters with the Cilium data plane and give you precise controls to keep observability costs predictable while maintaining the visibility you need.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Container Network Metrics Filtering&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Container network metrics are generated for all pods by default whenever Advanced Container Networking Services is enabled. With metrics filtering, you now control what gets collected at the point of ingestion, on the node, before anything is scraped or transmitted.&lt;/P&gt;
&lt;P&gt;A single ContainerNetworkMetric CRD per cluster defines which metric types (dns, flow, tcp, drop), namespaces, pod labels, and protocols to ingest. It supports both include and exclude filters, so you can maintain broad collection while carving out specific workloads or namespaces. Anything that doesn't match is dropped on the node. Changes reconcile in a few seconds, with no Cilium agent or Prometheus restarts required.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Container Network Log Filtering and Aggregation&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Unlike metrics, container network logs are not generated automatically. You start capturing network flows only after applying a ContainerNetworkLog CRD that defines exactly which traffic to capture-by namespace, pod, service, protocol, or verdict. Only matching flows are logged, giving you a precise, targeted view rather than a fire hose.&lt;/P&gt;
&lt;P&gt;This is where Azure's first-to-market innovation comes in. Flow log aggregation, now built into Advanced Container Networking Services and contributed upstream to Hubble for the open-source community, groups similar flows into summarized records every 30 seconds. The result is dramatically reduced data volume while preserving security verdicts, service identity, and error context. What previously required custom post-processing pipelines is now built directly into the platform before storage costs are incurred.&lt;/P&gt;
&lt;P&gt;Every matched flow log captures: source and destination pods, namespaces, ports, protocols, traffic direction, and policy verdicts.&lt;/P&gt;
&lt;P&gt;Logs are stored in a Log Analytics workspace (ContainerNetworkLogs table) with a choice of using the Analytics or Basic tier. Built-in Azure portal dashboards are available for both tiers. Logs can also be exported to external log collectors such as Splunk or Datadog.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;First to Market:&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;Azure and the upstream Hubble Contribution&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Advanced Container Networking Services built-in filtering and aggregation capabilities were engineered from the ground up to solve real production observability challenges at scale. Rather than keeping this innovation proprietary, Azure contributed the log aggregation and filtering capabilities to the upstream Hubble project, the observability layer of the Cilium ecosystem.&lt;/P&gt;
&lt;P&gt;This means:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AKS customers get a fully managed, Azure-native experience with portal dashboards, Log Analytics integration, and Grafana visualization, out of the box.&lt;/LI&gt;
&lt;LI&gt;The broader open-source community gains access to the same filtering and aggregation primitives through upstream Hubble.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Azure is the first to ship this capability in a managed Kubernetes service, and the first to give it back to the community.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Benefits&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;💰 Lower observability cost. Metrics filtering drops unwanted data on the node before Prometheus ever scrapes it. Flow log aggregation compresses log data by up to 97% in lab testing. Your cost scales with what you choose to monitor, not with cluster size.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;📉 Less noise, more signal. Metrics filtering carves out the namespaces and workloads that matter, so dashboards show only relevant signals. Log filters scope collection to specific pods and verdicts. Engineers start every investigation with data that's already relevant.&lt;/P&gt;
&lt;P&gt;⚡ Faster root-cause isolation. Every metric carries source and destination pod context. Targeted flow logs add the forensic detail, which policy, destination, or port is involved. Together, they cut mean time to resolution from hours of guesswork to minutes of structured investigation.&lt;/P&gt;
&lt;P&gt;🔒 Full signal, zero gaps. Within the scope you define, every flow is captured and every pattern is preserved. Aggregation compresses volume without losing security verdicts or error context.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Who Benefits&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Platform engineers managing multi-tenant clusters can scope data collection per namespace, so each team gets visibility into their own traffic without contributing to a shared cost pool.&lt;/P&gt;
&lt;P&gt;SREs can isolate packet drops, TCP resets, or DNS failures to a specific workload in minutes, starting with data that's already scoped to what matters.&lt;/P&gt;
&lt;P&gt;Decision-makers evaluating observability spend get predictable, controllable ingestion costs that scale with intent, not infrastructure size.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to optimize metrics and logs with filtering?&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Enable Advanced Container Networking Services ( ACNS) on your AKS cluster with the Cilium data plane:&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;EM&gt;az aks create --enable-acns&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Or on an existing cluster:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER --enable-acns&lt;/EM&gt;&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;Apply a ContainerNetworkMetric CRD to filter which metrics are collected on each node. Start by excluding noisy system namespaces, then scope to business-critical workloads.&lt;/LI&gt;
&lt;LI&gt;Apply a ContainerNetworkLog CRD to define which flows to capture.&lt;/LI&gt;
&lt;LI&gt;Enable Azure Monitor integration with --enable-container-network-logs to send logs to a Log Analytics workspace, or export logs from the node to an external logging system such as Splunk or Datadog.&lt;/LI&gt;
&lt;LI&gt;Check your dashboards. Open your cluster in the Azure portal and go to Monitor &amp;gt; Insights &amp;gt; Networking for bytes, drops, DNS errors, and flows. For flow logs, use the built-in Azure portal dashboards available for both Basic and Analytics tiers.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=3QmJ4HwNK54/1777662026234" data-video-remote-vid="https://www.youtube.com/watch?v=3QmJ4HwNK54/1777662026234" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F3QmJ4HwNK54%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D3QmJ4HwNK54&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F3QmJ4HwNK54%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Kubernetes network observability has long meant choosing between visibility and cost. With container network metrics filtering and log filtering and aggregation now GA in Advanced Container Networking Services (ACNS) and contributed to upstream Hubble for the open-source community, that tradeoff is gone.&lt;/P&gt;
&lt;P&gt;Azure is first to market with this capability. AKS customers get it fully managed, out of the box, with built-in dashboards with Log Analytics integration. And the broader Cilium ecosystem gets it through upstream Hubble.&lt;/P&gt;
&lt;P&gt;High-fidelity visibility. Lower cost. No compromise.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Learn more:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Container network metrics overview:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/container-network-observability-metrics?tabs=Cilium" target="_blank" rel="noopener"&gt;Container network metrics overview - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Container network logs overview:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/container-network-observability-logs" target="_blank" rel="noopener"&gt;Container Network Logs Overview - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Configure container network metrics filtering: &lt;A href="https://learn.microsoft.com/en-us/azure/aks/how-to-configure-container-network-metrics-filtering" target="_blank" rel="noopener"&gt;Configure Container network metrics filtering for Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Set up container network logs: &lt;A href="https://learn.microsoft.com/en-us/azure/aks/how-to-configure-container-network-logs?tabs=cli%2Ccilium" target="_blank" rel="noopener"&gt;Set up container network logs - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 19 May 2026 18:13:31 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/metrics-filtering-and-log-aggregation-now-ga-for-advanced/ba-p/4516508</guid>
      <dc:creator>chandanAggarwal</dc:creator>
      <dc:date>2026-05-19T18:13:31Z</dc:date>
    </item>
    <item>
      <title>Private subnets by default in Azure Virtual Networks: What changed and how to use NAT Gateway</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/private-subnets-by-default-in-azure-virtual-networks-what/ba-p/4513778</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure is evolving to better support&amp;nbsp;secure&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;by&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;default&amp;nbsp;cloud architectures.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Starting with&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;API version 2025&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;07&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;01 (released after March 31, 2026)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, newly created virtual networks now default to using&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;private subnets&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;. This change removes the&amp;nbsp;long&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;standing platform behavior of automatically enabling outbound internet access through implicit public IPs, also known as &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access?tabs=portal" target="_blank"&gt;default outbound access (DOA)&lt;/A&gt;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/default-outbound-access?tabs=portal#when-is-default-outbound-access-provided" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;As a result:&amp;nbsp;newly&amp;nbsp;deployed virtual machines will not have&amp;nbsp;public&amp;nbsp;outbound&amp;nbsp;connectivity unless explicitly configured.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;What changed?&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Previously, Azure automatically assigned a&amp;nbsp;hidden&amp;nbsp;Microsoft&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;owned&amp;nbsp;public IP to virtual machines deployed without an explicit outbound method (such as NAT Gateway, Load Balancer outbound rules, or&amp;nbsp;instance&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;public IPs). This allowed&amp;nbsp;public&amp;nbsp;outbound connectivity without requiring customer configuration.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;While convenient, this model introduced challenges:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Security&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;– Implicit internet access conflicts with Zero Trust principles.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Reliability&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;–&amp;nbsp;Platform&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed outbound IPs can change unexpectedly.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Operational consistency&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;– VMSS instances or&amp;nbsp;multi&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;NIC VMs may egress using different default outbound IPs.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;With API version&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;2025&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;07&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;01 and later&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Subnets in newly created&amp;nbsp;VNets&amp;nbsp;are&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;private by default&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The subnet property `defaultOutboundAccess` &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;is set to&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;false&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Azure no longer assigns implicit outbound public IPs.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This applies across deployment methods including Portal, ARM/Bicep, CLI, and PowerShell. Portal has started using the new model as of April 1, 2026.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Note:&amp;nbsp;This change has not yet&amp;nbsp;applied&amp;nbsp;to&amp;nbsp;Terraform.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;Am I impacted by this change?&lt;/SPAN&gt;&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 89.1667%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Deployment scenario&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Behavior&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Existing VNets or VMs using DOA&lt;/td&gt;&lt;td&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Unchanged&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New VMs in existing VNets&lt;/td&gt;&lt;td&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Unchanged&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Subnets already using explicit outbound&lt;/td&gt;&lt;td&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; Continue using configured outbound method&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New VMs in new VNets (with subnets created using API 07-01-2025 or later)&lt;/td&gt;&lt;td&gt;&lt;SPAN data-contrast="auto"&gt;🔒&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Subnets private by default&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New VMs in private subnets without explicit outbound configured&lt;/td&gt;&lt;td&gt;&lt;SPAN data-contrast="auto"&gt;❌&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;No&amp;nbsp;public&amp;nbsp;outbound&amp;nbsp;connectivity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Existing workloads are not&amp;nbsp;impacted.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If required, you can still create new subnets without the private setting by choosing the appropriate configuration option during creation. See the FAQ section of this blog for more information. However, we strongly recommend transitioning to an explicit outbound method so that:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Your workloads&amp;nbsp;won’t&amp;nbsp;be affected by public IP address changes.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;You have greater control over how your VMs connect to public endpoints.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Your VMs use traceable IP resources that you own.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;When is outbound connectivity required?&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If your virtual network&amp;nbsp;contains&amp;nbsp;virtual machines, you must&amp;nbsp;configure&amp;nbsp;explicit outbound connectivity. Here are common scenarios that require it:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Virtual machine operating system&amp;nbsp;activation and updates, such as&amp;nbsp;Windows or Linux.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Pulling&amp;nbsp;container images&amp;nbsp;from public registries&amp;nbsp;(Docker Hub or Microsoft Container Registry).&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Accessing&amp;nbsp;3&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-fontsize="10.5"&gt;rd&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;party SaaS or&amp;nbsp;public APIs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Virtual machine scale sets using flexible orchestration mode are always secure by default and therefore require an explicit outbound method.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Private subnets&amp;nbsp;don’t&amp;nbsp;apply to delegated or managed subnets that host PaaS services. In these cases, the service handles outbound connectivity—see the service-specific&amp;nbsp;documentation for details.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;Recommended outbound connectivity method: StandardV2 NAT Gateway&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure now recommends using an&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;explicit outbound connectivity method&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;such as:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;NAT Gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Load Balancer outbound rules&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Public IP assigned to the VM&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Network Virtual Appliance (NVA)&amp;nbsp;/ Firewall&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Among these,&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://aka.ms/standardv2natgw" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Azure StandardV2&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;NAT Gateway&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;is the recommended method for outbound connectivity&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for&amp;nbsp;scalable and resilient outbound connectivity.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;StandardV2 NAT Gateway:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Provides&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;zone&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;redundancy&amp;nbsp;by default&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;in supported regions&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Supports up to 100 Gbps throughput&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Provides dual-stack support with IPv4 and IPv6 public IPs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Uses&amp;nbsp;customer&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;owned&amp;nbsp;static public IPs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Enables outbound connectivity without allowing inbound internet access&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Requires no route table configuration when associated to a subnet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When configured, NAT Gateway automatically becomes the subnet’s default outbound path and&amp;nbsp;takes&amp;nbsp;precedence over:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Load Balancer outbound rules&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="7" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;VM instance&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;public IPs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Note: UDRs for 0.0.0.0/0 traffic directed to virtual appliances/Firewall takes precedence over NAT gateway.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img&gt;Flow chart showing priority order for different outbound methods&lt;/img&gt;
&lt;H3&gt;Migrate from Default Outbound Access to NAT Gateway&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To&amp;nbsp;transition&amp;nbsp;from DOA to&amp;nbsp;Azure’s recommended method of outbound,&amp;nbsp;StandardV2&amp;nbsp;NAT Gateway:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="23" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Go to your virtual network in the portal, and select the subnet you want to modify.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;In the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Edit subnet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;menu,&amp;nbsp;select the ‘&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Enable private subnet&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;’ checkbox under the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Private subnet&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; section&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Enabling private subnet can also be done through other supported clients, below is an example for CLI, in which the default-outbound parameter&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is set to false:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang=""&gt;az network vnet subnet update \ --resource-group rgname \ --name subnetname \ --vnet-name vnetname \ --default-outbound false&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;3. Deploy a StandardV2 NAT gateway resource.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;4. Associate one or more StandardV2 public IP addresses or prefixes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;5. Attach the NAT gateway to the target subnet.&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Once associated:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;All&amp;nbsp;new&amp;nbsp;outbound traffic from that subnet uses NAT Gateway&amp;nbsp;automatically&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;VM&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;public IPs are no longer&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Existing outbound connections are not interrupted&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Note: Enabling private subnet on an existing subnet will not affect any VMs already using default outbound IPs.&amp;nbsp;Private subnet ensures&amp;nbsp;that&amp;nbsp;only&amp;nbsp;new VMs&amp;nbsp;don’t&amp;nbsp;receive a default outbound public IP.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For step-by-step guidance, see&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/tutorial-migrate-outbound-nat#migrate-default-outbound-access" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;migrate default outbound access to NAT Gateway&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;FAQ&lt;/SPAN&gt;&lt;/H3&gt;
&lt;H5&gt;&lt;SPAN data-contrast="auto"&gt;1. Will my existing workloads lose outbound connectivity?&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;No. Workloads currently using default outbound IPs are not impacted by this change. The private subnet by default update only affects:&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1080,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Newly created&amp;nbsp;VNets&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1080,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;New subnets created using the updated API, 2025-07-01&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1080,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;New virtual machines deployed into those subnets&amp;nbsp;using the updated API&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1080,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;VMs and subnets using an explicit outbound connectivity method like a NAT gateway, NVA&amp;nbsp;/ Firewall, a VM instance level public IP or Load balancer outbound rules&amp;nbsp;is&amp;nbsp;not&amp;nbsp;impacted&amp;nbsp;by this change.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;2. Why can’t my new VM reach the internet or other public endpoints within Microsoft (e.g. VM activation, updates)?&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:220,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;New subnets are private by default. If your deployment does not include an explicit&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN data-contrast="auto"&gt;outbound method — such as a NAT Gateway, Public IP, Load&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Balancer outbound rule, or NVA/Firewall— outbound connectivity is not automatically enabled.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN data-contrast="auto"&gt;3. My workload has a dependency on default outbound IPs and isn’t ready to move to private subnets, what should I do?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You can opt-out of the default private subnet setting by disabling the private subnet feature. You can do this in the portal by unselecting the &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;private subnet checkbox:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Disabling private subnet can also be done through other supported clients, below is an example for CLI, in which the default-outbound parameter&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; is set to true:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang=""&gt;az network vnet subnet update \ --resource-group rgname \ --name subnetname \ --vnet-name vnetname \ --default-outbound true&lt;/LI-CODE&gt;
&lt;H5&gt;&lt;SPAN data-contrast="auto"&gt;4. Why do I see an alert showing that I have a default outbound IP on my VM?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;There's a NIC-level parameter `defaultOutboundConnectivityEnabled` that tracks whether a default outbound IP is allocated to a VM/Virtual&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Machine Scale Set instance. If detected, the Azure portal displays a notification banner and will generate Azure Advisor recommendations about&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; disabling default outbound connectivity for your VMs / VMSS.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN data-contrast="auto"&gt;5. How do I clear this alert?&lt;/SPAN&gt; &lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To remove the default outbound IP and clear the alert:&lt;/SPAN&gt; &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Configure a StandardV2 NAT gateway (or other explicit outbound method).&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Set your subnet to be private or by setting the subnet property defaultOutboundAccess = false using one of the supported clients.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;Stop and deallocate any applicable virtual machines (this will remove the default outbound IP currently associated with the VM).&amp;nbsp;&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H5&gt;6. I have a NAT gateway (or UDR pointing to an NVA) configured for my private subnet, why do I still see this alert?&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In some cases, a default outbound IP is still assigned to virtual machines in a non-private subnet, even when an explicit outbound method—such as a NAT&amp;nbsp;gateway&amp;nbsp;or a UDR directing traffic to an NVA/firewall—is configured.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This does&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;not&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;mean that the default outbound IP is used for egress traffic.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To fully remove the assignment (and clear the alert):&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Set the subnet to private&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Stop and deallocate the affected virtual machines&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;Summary&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The move to private subnets by default improves the security posture of Azure networking deployments by removing implicit outbound internet access.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Customers deploying new workloads must now explicitly configure outbound connectivity.&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;StandardV2 NAT Gateway&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;provides a scalable, resilient method for enabling outbound internet access without exposing workloads to inbound connections or relying on&amp;nbsp;platform&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed&amp;nbsp;IPs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Learn more&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access?tabs=portal" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Default Outbound Access&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/azure/nat-gateway/nat-overview#standardv2-nat-gateway" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;StandardV2 NAT Gateway&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/azure/nat-gateway/tutorial-migrate-outbound-nat#migrate-default-outbound-access" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Migrate Default Outbound Access to&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;&amp;nbsp;StandardV2&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;&amp;nbsp;NAT Gateway&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:210,&amp;quot;335559739&amp;quot;:210,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 22 Apr 2026 19:09:37 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/private-subnets-by-default-in-azure-virtual-networks-what/ba-p/4513778</guid>
      <dc:creator>aimeelittleton</dc:creator>
      <dc:date>2026-04-22T19:09:37Z</dc:date>
    </item>
    <item>
      <title>Azure VNet Data Gateway for Secure Power BI &amp; Power Platform Access in Enterprises</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-vnet-data-gateway-for-secure-power-bi-power-platform/ba-p/4511410</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;What Is a&amp;nbsp;VNet&amp;nbsp;data gateway?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The&amp;nbsp;VNet&amp;nbsp;data gateway is a&amp;nbsp;Microsoft&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed&amp;nbsp;gateway service that runs inside a delegated subnet of an Azure Virtual Network. It allows supported Microsoft cloud services—such as Power BI, Power Platform dataflows, and Microsoft Fabric workloads—to securely connect to data sources that are protected using private networking.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Key characteristics:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No&amp;nbsp;customer&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed&amp;nbsp;VM or container&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No OS, patching, or gateway software upgrades&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Gateway lifecycle fully managed by Microsoft&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Traffic stays on the Azure backbone network&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Works seamlessly with Private Endpoints&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This makes it ideal for enterprise and regulated environments where security and operational efficiency are equally important.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Why Enterprises need&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Eliminates gateway infrastructure management&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Traditional gateways require:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Virtual machines&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;High availability setup&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;OS patching and scaling&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Monitoring and troubleshooting&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;With the&amp;nbsp;VNet&amp;nbsp;data gateway:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft manages&amp;nbsp;compute&amp;nbsp;lifecycle&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No VM or gateway software to maintain&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No HA or load balancer design needed&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Result:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; Significant reduction in operational and maintenance overhead for platform and infrastructure teams.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt; Secure access to private Azure resources&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Most enterprise Azure environments use:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Private Endpoints&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;NSGs and route tables&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Firewalls blocking public access&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The&amp;nbsp;VNet&amp;nbsp;data gateway:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Is injected into a delegated subnet in your&amp;nbsp;VNet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Uses private IP addressing&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Enforces NSG and UDR rules&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Communicates with Microsoft services over a&amp;nbsp;Microsoft&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed&amp;nbsp;internal tunnel&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Result:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; Data sources&amp;nbsp;remain&amp;nbsp;fully private—no public endpoints or inbound ports&amp;nbsp;required.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt; Designed for Power Platform &amp;amp; Power BI at Scale&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The gateway supports secure access for:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Power BI semantic models&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Power BI paginated reports&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft Fabric Dataflow Gen2&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Fabric pipelines and copy jobs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Because&amp;nbsp;it’s&amp;nbsp;cloud&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;native&amp;nbsp;and centrally managed, the&amp;nbsp;VNet&amp;nbsp;data gateway scales well in large enterprises standardizing on Power Platform and Fabric.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;High&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;architecture overview&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;At runtime, the&amp;nbsp;VNet&amp;nbsp;data gateway works as follows:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;A query is&amp;nbsp;initiated&amp;nbsp;from &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Power BI / Power Platform&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Query details and credentials are sent to the &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft Power Platform&amp;nbsp;VNet&amp;nbsp;service&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;A &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;containerized gateway instance&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; is injected into the delegated subnet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The gateway connects to the&amp;nbsp;private data&amp;nbsp;source using private networking&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Results are sent back to Power BI or Power Platform via a &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed&amp;nbsp;internal tunnel&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Key security highlights:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No inbound connectivity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No public IP exposure&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Traffic&amp;nbsp;remains&amp;nbsp;on Azure backbone&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Full enforcement of NSGs and routing rules&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Key Enterprise benefits&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Least management overhead – no gateway servers&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Zero Trust aligned – private-only connectivity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Fully managed by Microsoft&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Enterprise-grade security &amp;amp; governance&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Works with Azure Private Endpoint architectures&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;When to Use&amp;nbsp;VNet&amp;nbsp;Data Gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Scenario&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Recommendation&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure private PaaS services&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Private Endpoint–only access&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Zero Trust network model&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Minimal ops &amp;amp; maintenance&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;On&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;prem&amp;nbsp;only, no Azure&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;❌&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Traditional gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;by&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;step&amp;nbsp;configuration:&amp;nbsp;VNet&amp;nbsp;data gateway (Enterprise setup)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;High&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;flow (What&amp;nbsp;you&amp;nbsp;will&amp;nbsp;configure)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Register required Azure resource provider&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Prepare Azure Virtual Network and subnet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Configure private connectivity to data source&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Create the&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Create and bind data source connections&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Validate with Power BI / Power Platform workloads&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step 1: Register&amp;nbsp;Microsoft.PowerPlatform&amp;nbsp;resource provider&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Why this step is&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The&amp;nbsp;VNet&amp;nbsp;data gateway is a &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed&amp;nbsp;service&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; that is injected into your Azure&amp;nbsp;VNet. Azure must explicitly allow Power Platform to deploy managed infrastructure into your subscription.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Configuration steps&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Sign in to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure portal&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Subscriptions&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Select the subscription that hosts the target&amp;nbsp;VNet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Go to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Resource providers&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Search for&amp;nbsp;Microsoft.PowerPlatform&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Click &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Register&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Status must show &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Registered&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This step enables subnet delegation to Power Platform services.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step 2: Prepare the Azure Virtual Network&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Why this step is&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The gateway runs &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;inside your&amp;nbsp;VNet&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;. It must be placed in a &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;dedicated, delegated subnet&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; to&amp;nbsp;maintain&amp;nbsp;isolation and security boundaries.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Requirements&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;VNet&amp;nbsp;can be in &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;any Azure region&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Subnet must be &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;exclusive to&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Subnet must have outbound connectivity to the data source&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Configuration steps&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Go to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure portal → virtual networks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Select your existing&amp;nbsp;VNet&amp;nbsp;(or create one)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Subnets → + Subnet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Configure:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Subnet name&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;:&amp;nbsp;snet-vnet-datagateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Address range&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;: /27 or larger (recommended)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Subnet delegation&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;:&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft.PowerPlatform/vnetaccesslinks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Save the subnet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;⚠️&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Do &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;not&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; place any VMs, app gateway, or other workloads in this subnet.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step 3: Configure private connectivity to the data source&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Why this step is&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Enterprises typically block public access to PaaS services. The&amp;nbsp;VNet&amp;nbsp;data gateway is designed to work &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;natively with private endpoints&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Example: Azure SQL / SQL Managed Instance&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Create &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Private Endpoint&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; for the data service&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Attach it to the same&amp;nbsp;VNet&amp;nbsp;(can be different subnet)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Create or link a &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Private DNS Zone&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, for example:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;privatelink.database.windows.net&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Link the Private DNS Zone to the&amp;nbsp;VNet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="14" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Ensure DNS resolution from the delegated subnet resolves to private IP&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;This ensures all traffic&amp;nbsp;remains&amp;nbsp;private and internal.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step 4: Create the&amp;nbsp;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Why this step is&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This is where the actual &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;managed&amp;nbsp;gateway&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; is logically created and associated with your&amp;nbsp;VNet.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Configuration steps&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You can do this from either &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Power BI Service&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; or &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Power Platform Admin Center&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Using Power Platform Admin Center&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Go to &lt;/SPAN&gt;&lt;A href="https://admin.powerplatform.microsoft.com/" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://admin.powerplatform.microsoft.com&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Select &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Data → Gateways&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Click &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;+ New → Virtual network data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Provide:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Gateway name&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Azure subscription&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Resource group&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Virtual network&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Delegated subnet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="15" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Click &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Create&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;📌&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Notes:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="16" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Gateway&amp;nbsp;metadata&amp;nbsp;is stored in Power BI&amp;nbsp;tenant&amp;nbsp;home region&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="16" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Gateway runtime executes in the&amp;nbsp;VNet&amp;nbsp;region&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="16" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No VM or scale settings are&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step 5: Create and configure data source connections&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Why this step is&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The gateway exists, but Power BI / Power Platform must know &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;which data sources&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; can be accessed via it.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Configuration steps (Power BI example)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Go to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Power BI Service&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Navigate to &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Settings → Manage connections and gateways&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Select the newly created &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Click &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;+ New connection&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Provide:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Data source type (Azure SQL, Storage, Databricks, etc.)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Server / endpoint name (private DNS name)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Authentication (SQL / Entra ID)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Save the connection&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="7" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Assign users or security groups&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;This step enables governance and access control.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step 6: Use the gateway in Power BI / Power Platform&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Power BI&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="18" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Open dataset or semantic model settings&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="18" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Under &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Gateway connection&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, select:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="18" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Use a data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="18" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Choose the &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;VNet&amp;nbsp;data gateway&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="18" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Apply changes&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="18" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Refresh or run queries&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Power Platform / Fabric&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="19" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Select the same connection when configuring:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="19" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Dataflows Gen2&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="19" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Fabric pipelines&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="o" data-font="Courier New" data-listid="19" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Courier New&amp;quot;,&amp;quot;469769242&amp;quot;:[9675],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;o&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;Copy jobs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step 7:&amp;nbsp;Validate&amp;nbsp;and test&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Validation Checklist&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;DNS resolves to private IP&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;No public endpoint access enabled&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;NSGs allow outbound traffic to data source&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Dataset refresh succeeds&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;No gateway VM exists in subscription&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Optional:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Enable logging and auditing from Power BI / Fabric&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Monitor gateway health in Admin Center&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Key Enterprise design guidance (Best practices)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Use &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;one gateway per environment tier&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; (Prod /&amp;nbsp;Non&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;Prod)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Use &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;dedicated&amp;nbsp;VNets&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; for data access where possible&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Use &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Private Endpoint only&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; (avoid service endpoints)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Control access via &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;AAD groups&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, not individuals&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="21" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Avoid mixing gateway subnet with other workloads&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Conclusion:&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;For enterprises looking to consume Power Platform, Power BI, and Microsoft Fabric securely while keeping operational overhead close to zero, the&amp;nbsp;VNet&amp;nbsp;data gateway is the recommended approach.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;It removes gateway infrastructure complexity, strengthens security posture, and aligns perfectly with modern Azure landing zone and Zero Trust architectures.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 22 Apr 2026 16:30:19 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-vnet-data-gateway-for-secure-power-bi-power-platform/ba-p/4511410</guid>
      <dc:creator>kirankumar_manchiwar04</dc:creator>
      <dc:date>2026-04-22T16:30:19Z</dc:date>
    </item>
    <item>
      <title>Introducing the Container Network Insights Agent for AKS: Now in Public Preview</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/introducing-the-container-network-insights-agent-for-aks-now-in/ba-p/4512197</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We are thrilled to announce public preview of &lt;STRONG&gt;Container Network Insights Agent - Agentic AI &lt;/STRONG&gt;network troubleshooting&amp;nbsp;for your workloads running in Azure Kubernetes Service (AKS).&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;div data-video-id="https://www.youtube.com/watch?v=cxwq8rEchFI/1776372906450" data-video-remote-vid="https://www.youtube.com/watch?v=cxwq8rEchFI/1776372906450" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fcxwq8rEchFI%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dcxwq8rEchFI&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fcxwq8rEchFI%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;H4&gt;The Challenge&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;AKS networking is layered by design. Azure CNI,&amp;nbsp;eBPF, Cilium,&amp;nbsp;CoreDNS,&amp;nbsp;NetworkPolicy,&amp;nbsp;CiliumNetworkPolicy, Hubble. Each layer&amp;nbsp;contributes&amp;nbsp;capabilities, and some of these can fail silently in ways the surrounding layers cannot&amp;nbsp;observe.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When something breaks, the evidence usually exists. Operators already have&amp;nbsp;the tools&amp;nbsp;such as Azure Monitor for metrics, Container Insights for cluster health,&amp;nbsp;Prometheus&amp;nbsp;and Grafana for dashboarding, Cilium and Hubble for pod network observation, and&amp;nbsp;Kubectl&amp;nbsp;for direct inspection. However, correlating different signals and&amp;nbsp;identifying&amp;nbsp;the root cause takes time.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Imagine this scenario: An application performance alert fires. The on-call engineer checks dashboards, reviews events, inspects&amp;nbsp;pod health. Each tool shows its own slice. But the root cause usually lives in the relationship between signals, not in any single tool.&amp;nbsp;So&amp;nbsp;the real work begins to manually cross-reference Hubble flows,&amp;nbsp;NetworkPolicy&amp;nbsp;specs, DNS state, node-level stats, and verdicts. Each check is a separate query, a separate context switch, a separate mental model of how the layers interact.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This process is&amp;nbsp;manual,&amp;nbsp;it is slow, needs domain knowledge, and does not scale. Mean time to resolution (MTTR) stays high not because engineers lack skill, but because the investigation surface is wide and the interactions between the layers are complex.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;The&amp;nbsp;solution: Container Network Insights Agent&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Container Network Insights Agent is agentic AI to simplify and speed up AKS network troubleshooting&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Rather than replacing your existing observability tools, the container network insights agent&amp;nbsp;correlates&amp;nbsp;signals on demand to help you quickly&amp;nbsp;identify&amp;nbsp;and resolve network issues. You describe a problem in natural language, and the agent runs a structured investigation across layers. It delivers a diagnosis with the evidence, the root cause, and the exact commands to fix it.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The container network insights agent gets its visibility through two data sources:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;-&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;AKS MCP server&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; container network insight agent integrates with the AKS MCP (Model Context Protocol) server, a standardized and secure interface&amp;nbsp;to&amp;nbsp;kubectl, Cilium, and Hubble. Every diagnostic command runs through the same tools operators already use, via a well-defined protocol that enforces security boundaries. No ad-hoc scripts, no custom API integrations.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;-&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Linux Networking plugin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;  For diagnostics that require visibility below the Kubernetes API layer, container network insights agent collects kernel-level telemetry directly from cluster nodes. This includes NIC ring buffer stats, kernel packet counters, SoftIRQ distribution, and socket buffer utilization. This is how it pinpoints packet drops and network saturation that surface-level metrics cannot explain.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When you describe a symptom, the container network insights agent:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- Classifies the issue and plans an investigation tailored to the symptom pattern&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- Gathers evidence through the AKS MCP server and its Linux networking plugin across DNS, service routing, network policies, Cilium, and node-level statistics&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- Reasons across layers to&amp;nbsp;identify&amp;nbsp;how a failure in one&amp;nbsp;component&amp;nbsp;manifests in another&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- Delivers a structured report with pass/fail evidence, root cause analysis, and specific remediation guidance&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The container network insight agent is scoped to AKS networking: DNS failures, packet drops, connectivity issues, policy conflicts, and Cilium dataplane health. It does not modify workloads or change configurations. All remediation guidance is advisory. The agent tells you what to run, and you decide whether to apply it.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;What makes the container network insights agent different&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Deep telemetry, not just surface metrics&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; Most&amp;nbsp;observability tools&amp;nbsp;operate&amp;nbsp;at the Kubernetes API level.&amp;nbsp;container&amp;nbsp;network insight agent goes deeper, collecting kernel-level network statistics, BPF program drop counters, and interface-level diagnostics that pinpoint exactly where packets are being lost and why. This is the difference between knowing&amp;nbsp;something is&amp;nbsp;wrong and knowing precisely what is causing it.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Cross-layer reasoning&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; Networking incidents rarely have single-layer explanations. The container network insights agent correlates evidence from DNS, service routing, network policy, Cilium, and node-level statistics together. It surfaces causal relationships that span layers. For example: node-level RX drops caused by a Cilium policy denial triggered by a label mismatch after a routine Helm deployment, even though the pods themselves appear healthy.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Structured and auditable&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Every conclusion&amp;nbsp;traces&amp;nbsp;to a specific check, its output, and its pass/fail status. If all checks pass, container network insights agent reports no issue. It does not invent problems. Investigations are deterministic and reproducible. Results can be reviewed, shared, and rerun.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Guidance, not just findings&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; The&amp;nbsp;container network insights agent explains what the evidence means,&amp;nbsp;identifies&amp;nbsp;the root cause, and provides specific remediation commands. The analysis is done; the operator reviews and decides.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Where the container network insights agent fits&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The container network insights agent is not another monitoring tool. It does not collect continuous metrics or replace dashboards. Your existing observability stack, including Azure Monitor, Prometheus, Grafana, Container Insights, and your log pipelines, keeps doing what it does. The agent complements those tools by adding an intelligence layer that turns fragmented signals into actionable diagnosis. Your alerting detects the problem; this agent helps you understand it.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Safe by Design&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The container network insights agent is built for production clusters.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Read-only access&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; Minimal RBAC scoped to pods, services, endpoints, nodes, namespaces, network policies, and Cilium resources. container network insight agent deploys a temporary debug&amp;nbsp;DaemonSet&amp;nbsp;only for packet-drop diagnostics that require host-level stats.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Advisory remediation only&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; The&amp;nbsp;container network insights agent tells you what to run. It never executes changes.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Evidence-backed conclusions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; Every root&amp;nbsp;cause&amp;nbsp;traces to a specific failed check. No speculation.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Scoped and enforced&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt; &lt;/STRONG&gt;The&amp;nbsp;agent handles AKS networking questions only. It does not respond to off-topic requests. Prompt injection defenses are built in.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Credentials stay in the cluster&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; The&amp;nbsp;container network insights agent authenticates via managed identity with workload identity federation. No secrets, no static credentials. Only a&amp;nbsp;session&amp;nbsp;ID cookie reaches the browser.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Get Started&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Container network insights agent is available in Public Preview in&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;**Central US, East US, East US 2, UK South, and West US 2**&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The agent&amp;nbsp;deploys as&amp;nbsp;an AKS cluster extension and uses your own Azure OpenAI resource, giving you control over model configuration and data residency. Full capabilities require Cilium and Advanced Container Networking Services. DNS and packet drop diagnostics work on all supported AKS clusters.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;To try it:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- Review the Container Network Insights Agent overview on Microsoft Learn &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/container-network-insights-agent-overview" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://learn.microsoft.com/en-us/azure/aks/container-network-insights-agent-overview&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- Follow the&amp;nbsp;quickstart&amp;nbsp;to deploy container network&amp;nbsp;insights&amp;nbsp;agent and run your first diagnostic&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;- Share feedback via the Azure feedback channel or the thumbs-up and thumbs-down feedback controls on each response&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Your feedback shapes the roadmap. If the agent gets something wrong or misses a scenario you&amp;nbsp;encounter, we want to hear about it.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Apr 2026 21:05:45 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/introducing-the-container-network-insights-agent-for-aks-now-in/ba-p/4512197</guid>
      <dc:creator>chandanAggarwal</dc:creator>
      <dc:date>2026-04-16T21:05:45Z</dc:date>
    </item>
    <item>
      <title>Enabling fallback to internet for Azure Private DNS Zones in hybrid architectures</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/enabling-fallback-to-internet-for-azure-private-dns-zones-in/ba-p/4511131</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Introduction&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure Private Endpoint enables secure connectivity to Azure PaaS services such as:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Azure SQL Managed Instance&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Azure Container Registry&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Azure Key Vault&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Azure Storage Account&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;through private IP addresses within a virtual network.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When Private Endpoint is enabled for a service, Azure DNS automatically changes the name resolution path using&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;CNAME Redirection&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Example:&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;myserver.database.windows.net &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;↓&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;myserver.privatelink.database.windows.net&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;↓&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Private IP&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure Private DNS Zones are then used to resolve this Private Endpoint FQDN within the&amp;nbsp;VNet.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;However, this introduces a &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;critical DNS limitation&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; in:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Hybrid cloud architectures (AWS → Azure SQL MI)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Multiregion&amp;nbsp;deployments (DR region access)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Crosstenant&amp;nbsp;/&amp;nbsp;Crosssubscription&amp;nbsp;access&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;MultiVNet&amp;nbsp;isolated networks&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If the Private DNS zone does not&amp;nbsp;contain&amp;nbsp;a corresponding record, Azure DNS returns:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;NXDOMAIN (NonExistent&amp;nbsp;Domain)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When a DNS resolver receives a negative response (NXDOMAIN), it sends no DNS response to the DNS client and the query fails.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This results in:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;❌&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Application connectivity failure&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;❌&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Database connection timeout&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;❌&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;AKS pod DNS resolution errors&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;❌&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;DR failover application outage&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Problem statement&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In traditional Private Endpoint DNS resolution:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;DNS&amp;nbsp;query is sent from the application.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Azure DNS checks&amp;nbsp;linked&amp;nbsp;Private DNS Zone.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;If no matching record exists: NXDOMAIN returned&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;DNS queries for Azure Private Link and network isolation scenarios across different&amp;nbsp;tenants&amp;nbsp;and resource groups have unique name resolution paths which can affect the ability to reach Private&amp;nbsp;Linkenabled&amp;nbsp;resources outside a tenant's control.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;does not retry resolution using public DNS by default&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Therefore:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Public Endpoint resolution never occurs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;DNS query fails permanently&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Application cannot connect&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Microsoft native solution&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Fallback to internet (NxDomainRedirect)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure introduced a DNS resolution policy:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;resolutionPolicy&amp;nbsp;=&amp;nbsp;NxDomainRedirect&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This property enables public recursion via Azure’s recursive resolver fleet when an authoritative NXDOMAIN response is received for a Private Link zone.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When enabled:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Azure DNS retries the query&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Public endpoint resolution occurs&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Application connectivity continues&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;No custom DNS forwarder&amp;nbsp;required&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Fallback policy is configured at:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Private DNS Zone →&amp;nbsp;virtualnetwork&amp;nbsp;link&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Resolution policy is enabled at the virtual network link level with the&amp;nbsp;NxDomainRedirect&amp;nbsp;setting.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In the Azure portal this appears as:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         Enable fallback to internet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;How it works&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;SPAN data-contrast="auto"&gt;Without fallback:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Application → Azure DNS&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Private DNS Zone&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Record&amp;nbsp;missing&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → NXDOMAIN&amp;nbsp;returned&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Connection failure&lt;/SPAN&gt; &lt;SPAN data-ccp-props="{&amp;quot;469777462&amp;quot;:[9360],&amp;quot;469777927&amp;quot;:[0],&amp;quot;469777928&amp;quot;:[4]}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;SPAN data-contrast="auto"&gt;With fallback&amp;nbsp;enabled:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Application → Azure DNS&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Private DNS Zone&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Record&amp;nbsp;missing&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → NXDOMAIN&amp;nbsp;returned&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Azure recursive resolver&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Public DNS resolution&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Public endpoint IP returned&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;         → Connection successful&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure recursive resolver retries the query using the public endpoint QNAME each time NXDOMAIN is received from the private zone scope&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Real world&amp;nbsp;use case&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;AWS Application Connecting to Azure SQL Managed Instance&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You are running:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;SQL MI in Azure&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Private Endpoint&amp;nbsp;enabled&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Private DNS Zone: privatelink.database.windows.net&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;AWS application tries to connect:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;my-mi.database.windows.net&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If DR region DNS record is not available:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Without fallback:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;DNS query → NXDOMAIN → App failure&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;With fallback enabled:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;DNS query → Retry public DNS → Connection success&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Step-by-step&amp;nbsp;configuration&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Method 1 – Azure&amp;nbsp;portal&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Go to:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Private DNS Zones&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Select your Private Link DNS Zone:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Example:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;privatelink.database.windows.net&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Select:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Virtual network links&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Open your linked&amp;nbsp;VNet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Enable:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Enable fallback to internet&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Click:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="8" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Save&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Method 2 – Azure CLI&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You can configure fallback policy using:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;az&amp;nbsp;network private-dns&amp;nbsp;link&amp;nbsp;vnet&amp;nbsp;update \&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;      --resource-group RG-Network \&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;      --zone-name privatelink.database.windows.net \&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;      --name VNET-Link \&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;      --resolution-policy&amp;nbsp;NxDomainRedirect&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Validation steps&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Run from Azure VM:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;nslookup&amp;nbsp;my-mi.database.windows.net&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Expected:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✔&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Private IP (if available)&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✔&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Public IP (if fallback triggered)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Security considerations&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Fallback to internet:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Does NOT expose data&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Only&amp;nbsp;impacts&amp;nbsp;DNS resolution&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;✅&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Network traffic still governed by:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;NSG&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Azure Firewall&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;UDR&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="9" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Service Endpoint Policies&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;DNS resolution fallback only&amp;nbsp;triggers on&amp;nbsp;NXDOMAIN and does not change&amp;nbsp;networklevel&amp;nbsp;firewall&amp;nbsp;controls.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When should you enable this?&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Recommended in:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Hybrid AWS → Azure connectivity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Multiregion&amp;nbsp;DR deployments&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;AKS accessing Private Endpoint services&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;CrossTenant&amp;nbsp;connectivity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Private Link + VPN / ExpressRoute scenarios&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Conclusion&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Fallback to Internet using&amp;nbsp;NxDomainRedirect&amp;nbsp;provides:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Seamless hybrid connectivity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Reduced DNS complexity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;No custom forwarders&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Improved application resilience&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;and simplifies DNS resolution for modern Private&amp;nbsp;Endpointenabled&amp;nbsp;architectures.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Apr 2026 15:57:15 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/enabling-fallback-to-internet-for-azure-private-dns-zones-in/ba-p/4511131</guid>
      <dc:creator>kirankumar_manchiwar04</dc:creator>
      <dc:date>2026-04-15T15:57:15Z</dc:date>
    </item>
    <item>
      <title>A demonstration of Virtual Network TAP</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/a-demonstration-of-virtual-network-tap/ba-p/4479136</link>
      <description>&lt;P&gt;Azure &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-tap-overview" target="_blank" rel="noopener"&gt;Virtual Network Terminal Access Point (VTAP)&lt;/A&gt;, at the time of writing in April 2026 in public preview in select regions, copies network traffic from source Virtual Machines to a collector or traffic analytics tool, running as a Network Virtual Appliance (NVA). VTAP creates a full copy of all traffic sent and received by Virtual Machine Network Interface Card(s) (NICs) designated as VTAP source(s). This includes packet payload content - in contrast to VNET Flow Logs, which only collect traffic meta data. Traffic collectors and analytics tools are 3rd party partner products, available from the Azure Marketplace, amongst which are the major Network Detection and Response solutions.&lt;/P&gt;
&lt;P&gt;VTAP is an agentless, cloud-native traffic tap at the Azure network infrastructure level. It is entirely out-of-band; it has no impact on the source VM's network performance and the source VM is unaware of the tap. Tapped traffic is VXLAN-encapsulated and delivered to the collector NVA, in the same VNET as the source VMs, or in a peered VNET.&lt;/P&gt;
&lt;P&gt;This post demonstrates the basic functionality of VTAP: copying traffic into and out of a source VM, to a destination VM.&lt;/P&gt;
&lt;P&gt;The demo consists of 3 three Windows VMs in one VNET, each running a basic web server that responds with the VM's name. Another VNET contains the target - a Windows VM on which Wireshark is installed, to inspect traffic forwarded by VTAP. This demo does not use 3rd party&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-tap-overview#virtual-network-tap-partner-solutions" target="_blank" rel="noopener"&gt;VTAP partner solutions&lt;/A&gt; from the Marketplace.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The lab for this demonstration is available on Github: &lt;A href="https://github.com/mddazure/virtual-network-tap-lab" target="_blank" rel="noopener"&gt;Virtual Network TAP&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The VTAP resource is configured with the target VM's NIC as the destination.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;All traffic captured from sources is VXLAN-encapsulated and sent to the destination on UDP port 4789 (this cannot be changed).&lt;/P&gt;
&lt;P&gt;We use a single source to easier inspect the traffic flows in Wireshark; we will see that communication from the other VMs to our source VM is captured and copied to the destination. In a real world scenario, multiple or all of the VMs in an environment could be set up as TAP sources.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The source VM, vm1, generates traffic through a script that continuously polls vm2 and vm3 on http://10.0.2.5 and http://10.0.2.6, and &lt;A class="lia-external-url" href="http://ipconfig.io" target="_blank" rel="noopener"&gt;https://ipconfig.io&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;On the destination VM, we use Wireshark to observe captured traffic.&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The filter on UDP port 4789 causes Wireshark to only capture the VXLAN encapsulated traffic forwarded by VTAP.&lt;/P&gt;
&lt;P&gt;Wireshark automatically decodes VXLAN and displays the actual traffic to and from vm1, which is set up as the (only) VTAP source. Wireshark's capture panel shows the decapsulated TCP and HTTP exchanges, including the TCP handshake, between vm1 and the other VMs, and&amp;nbsp;&lt;A href="https://ipconfig.io/" target="_blank" rel="noopener"&gt;https://ipconfig.io&lt;/A&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Expanding the lines in the detail panel below the capture panel shows the details of the VXLAN encapsulation. The outer IP packets, encapsulating the VXLAN frames in UDP, originate from the source VM's IP address, 10.0.2.4, and have the target VM's address, 10.1.1.4, as the destination.&lt;/P&gt;
&lt;P&gt;The VXLAN frames contain all the details of the original Ethernet frames sent from and received by the source VM, and the IP packets within those. The Wireshark trace shows the full exchange between vm1 and the destinations it speaks with.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;This brief demonstration uses Wireshark to simply visualize the operation of VTAP.&amp;nbsp;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;The&lt;/SPAN&gt;&lt;A class="lia-external-url" style="font-style: normal; font-weight: 400; background-color: rgb(255, 255, 255);" href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-tap-overview#virtual-network-tap-partner-solutions" target="_blank" rel="noopener"&gt; partner solutions&lt;/A&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; available from the Azure Marketplace operate on the captured traffic to implement their specific functionality.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Apr 2026 10:30:01 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/a-demonstration-of-virtual-network-tap/ba-p/4479136</guid>
      <dc:creator>Marc de Droog</dc:creator>
      <dc:date>2026-04-15T10:30:01Z</dc:date>
    </item>
    <item>
      <title>Connecting an ExpressRoute circuit to Megaport Virtual Edge</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/connecting-an-expressroute-circuit-to-megaport-virtual-edge/ba-p/4510770</link>
      <description>&lt;P&gt;Megaport is an ExpressRoute partner in many &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/expressroute/expressroute-locations?tabs=america%2Cj-m%2Cus-government-cloud%2Ca-C#global-commercial-azure" target="_blank" rel="noopener"&gt;locations&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://docs.megaport.com/mcr/" target="_blank" rel="noopener"&gt;Megaport Cloud Router (MCR)&lt;/A&gt; allows ExpressRoute customers to connect leased lines to their on-premise locations, and to connect other Cloud Providers. MCR is easy to set up and operate, it even automatically configures the ExpressRoute Private Peering on both the Megaport and Azure sides, but it does not have a command line interface and does not permit advanced configuration.&lt;/P&gt;
&lt;P&gt;For advanced scenario's,&amp;nbsp;&lt;A class="lia-external-url" href="https://docs.megaport.com/mve/" target="_blank" rel="noopener"&gt;Megaport Virtual Edge (MVE)&lt;/A&gt; provides a platform to run fully configurable Network Virtual Appliances (NVAs) from a variety of vendors.&lt;/P&gt;
&lt;P&gt;This post describes how to connect ExpressRoute to MVE running a Cisco 8000v NVA.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H1&gt;Create the Expressroute Circuit&lt;/H1&gt;
&lt;P&gt;In the Azure portal, create an &amp;nbsp;ExpressRoute circuit with Standard Resiliency in a Peering location where Megaport is available.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;When the circuit deployment is completed, copy the Service key.&lt;/P&gt;
&lt;img /&gt;
&lt;H1&gt;Create MVE and ExpressRoute connections&lt;/H1&gt;
&lt;P&gt;Log in to the &lt;A class="lia-external-url" href="https://portal.megaport.com/" target="_blank" rel="noopener"&gt;Megaport management portal&lt;/A&gt;, go to Services and click Create MVE.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Select Cisco C8000 as the Vendor / Product.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;On the next screen:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Select the Location where the MVE is to be deployed - use the ExpressRoute peering location.&lt;/LI&gt;
&lt;LI&gt;Select the MVE size.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;On the following screen:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Select Autonomous under Appliance Mode.&lt;/LI&gt;
&lt;LI&gt;Paste a &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/viva/glint/setup/sftp-ssh-key-gen" target="_blank"&gt;2048-bit RS SSH public key&lt;/A&gt; in the box.&lt;/LI&gt;
&lt;LI&gt;Under Virtual Interfaces (vNICs), add vNICs as needed. One ExpressRoute circuit requires 2 vNICs, one for each path.&lt;BR /&gt;vNIC0 will be used to connect a Megaport Internet VXC for SSH access to the device.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;On the following screen, give the MVE a name under Finalize Details in the left bar, verify the Summary, and and click Add MVE.&lt;/P&gt;
&lt;P&gt;Clicking Create Megaport Internet in the pop up that now appears lets you directly to provision an internet VXC:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Select the location with the lowest latest latency to the MVE - this will be at the top of the list.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;On the next screen:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Leave the name as proposed or change as needed.&lt;/LI&gt;
&lt;LI&gt;Set Rate Limit to 20 Mbps (lowest possible, this is for SSH access only).&lt;/LI&gt;
&lt;LI&gt;Leave A-vNIC set to vNIC-0.&lt;/LI&gt;
&lt;LI&gt;Leave Preferred A-End VLAN at Untagged.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;On the next screen verify the configuration and click Add VXC.&lt;/P&gt;
&lt;P&gt;On the main Services page, the MVE and Internet VXC now show with the note "Order pending".&lt;/P&gt;
&lt;P&gt;Click +Connection in the MVE box to connect a VXC to the ExpressRoute Circuit.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Under Choose Destination Type select Cloud.&lt;/LI&gt;
&lt;LI&gt;Then select Microsoft Azure as the Provider.&lt;/LI&gt;
&lt;LI&gt;Paste in the circuit's Service Key and select Port for the Primary path.&lt;/LI&gt;
&lt;LI&gt;Click Next.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;On the next screen:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Give the connection a name.&lt;/LI&gt;
&lt;LI&gt;Leave the Rate Limit as proposed, this is set to the bandwidth of the circuit.&lt;/LI&gt;
&lt;LI&gt;At A-end vNIC, select vNIC-1 (do not leave this at vNIC-0!).&lt;/LI&gt;
&lt;LI&gt;At Preferred A-End VLAN, turn off Untag and enter a VLAN number. This will be used to set the sub-interface in the MVE configuration later.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Scroll down to Azure peering VLAN.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Leave Configure Azure Peering VLAN turned on.&lt;/LI&gt;
&lt;LI&gt;Enter the same VLAN ID that will be used in the configuration of the Private Peering on the Azure end.&lt;/LI&gt;
&lt;LI&gt;Click Next.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Verify the configuration summary and click Add VXC.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Repeat the process to add the Secondary path, terminating on vNIC-2. Enter a different VLAN ID for Preferred A-End VLAN. Enter the same VLAN ID that will be used in the Private Peering under Azure peering VLAN.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;When the second ExpressRoute VXC is configured, click Review Order in the right hand bar of the Services screen.&lt;/P&gt;
&lt;P&gt;When the validation completes, click Order Now.&lt;/P&gt;
&lt;P&gt;This will provision the MVE and the VXC. It will take a few minutes for all services to come up.&lt;/P&gt;
&lt;P&gt;In the Azure portal, the Provider Status of the ExpressRoute circuit will change to Provisioned.&lt;/P&gt;
&lt;H1&gt;Configure Private Peering&lt;/H1&gt;
&lt;P&gt;Go back to the ExpressRoute circuit in the Azure portal. The Provider Status will now be Provisioned, and the Private Peering can be enabled. Click on Peerings under Settings and then click Azure private.&lt;/P&gt;
&lt;P&gt;Enter the Peer ASN and Primary and Secondary subnets. Under VLAN ID enter the&amp;nbsp;&lt;STRONG&gt;same number as configured under Azure Peering VLAN in the Primary and Secondary VXC configurations&lt;/STRONG&gt;&amp;nbsp;in the Megaport portal.&lt;/P&gt;
&lt;img /&gt;
&lt;H1&gt;Configure Cisco IOS&lt;/H1&gt;
&lt;P&gt;Establish an SSH session to the MVE. Use the public ip address from the internet VXC, and the private key that belongs with the public key used when deploying the MVE.&lt;/P&gt;
&lt;LI-CODE lang="shell-session"&gt;ssh -i &amp;lt;private-key-file&amp;gt; mveadmin@&amp;lt;public ip&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;Configure interfaces:&lt;/P&gt;
&lt;LI-CODE lang="shell-session"&gt;interface GigabitEthernet2
 no ip address
 no shutdown
 negotiation auto
!
interface GigabitEthernet2.100
 encapsulation dot1Q 100
 ip address 192.168.0.1 255.255.255.252
!
interface GigabitEthernet3
 no ip address
 no shutdown
 negotiation auto
!
interface GigabitEthernet3.101
 encapsulation dot1Q 101
 ip address 192.168.0.5 255.255.255.252&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;Use the Preferred A-end VLAN values set in the primary and secondary VXCs to configure the encapsulation on the subinterfaces. Use the lower address of the /30 subnets configured on the Private Peering.&lt;/P&gt;
&lt;P&gt;The higher IP addresses of the Private Peering should now respond to ping:&lt;/P&gt;
&lt;LI-CODE lang="shell-session"&gt;ping 192.168.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms&lt;/LI-CODE&gt;
&lt;P&gt;If ping does not work there likely is an ARP resolution issue. Run `show arp` and `debug arp` and check the&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/troubleshoot/azure/expressroute/expressroute-troubleshooting-arp-resource-manager" target="_blank" rel="noopener"&gt;ARP table&lt;/A&gt; of the Private Peering.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Configure BGP:&lt;/P&gt;
&lt;LI-CODE lang="shell-session"&gt;router bgp 64000
 bgp log-neighbor-changes
 neighbor 192.168.0.2 remote-as 12076
 neighbor 192.168.0.2 soft-reconfiguration inbound
 neighbor 192.168.0.6 remote-as 12076
 neighbor 192.168.0.6 soft-reconfiguration inbound&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;Verify both neighbors show BGP state = Established:&lt;/P&gt;
&lt;LI-CODE lang="shell-session"&gt;sh ip bgp neighbor 192.168.0.2
BGP neighbor is 192.168.0.2,  remote AS 12076, external link
  BGP version 4, remote router ID 192.168.0.2
  BGP state = Established, up for 1d21h
  ...&lt;/LI-CODE&gt;
&lt;P&gt;This completes the basic configuration of ExpressRoute to MVE.&lt;/P&gt;</description>
      <pubDate>Mon, 13 Apr 2026 13:18:18 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/connecting-an-expressroute-circuit-to-megaport-virtual-edge/ba-p/4510770</guid>
      <dc:creator>Marc de Droog</dc:creator>
      <dc:date>2026-04-13T13:18:18Z</dc:date>
    </item>
    <item>
      <title>Announcing public preview: Cilium mTLS encryption for Azure Kubernetes Service</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/announcing-public-preview-cilium-mtls-encryption-for-azure/ba-p/4504423</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We are thrilled to announce the public preview of&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Cilium&amp;nbsp;mTLS&amp;nbsp;encryption in Azure Kubernetes Service (AKS)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, delivered as part of&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/advanced-container-networking-services-overview" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;&lt;STRONG&gt;Advanced Container Networking Services&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;and powered by the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Azure CNI&amp;nbsp;dataplane&amp;nbsp;built on Cilium&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This capability is the result of a close engineering collaboration between Microsoft and&amp;nbsp;Isovalent&amp;nbsp;(now part of Cisco). It brings transparent,&amp;nbsp;workload&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level mutual TLS (mTLS) to AKS without sidecars, without application changes, and without introducing a separate service mesh stack.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This public preview&amp;nbsp;represents&amp;nbsp;a major step forward in delivering secure,&amp;nbsp;high&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;performance, and operationally simple networking for AKS customers. In this post,&amp;nbsp;we’ll&amp;nbsp;walk through how Cilium&amp;nbsp;mTLS&amp;nbsp;works, when to use it, and how to get started.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Why Cilium &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;mTLS&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;e&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;ncryption&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;m&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;atters&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Traditionally, teams looking to&amp;nbsp;in-transit&amp;nbsp;traffic&amp;nbsp;encryption&amp;nbsp;in Kubernetes have had two primary options:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Node-level encryption&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(for example,&amp;nbsp;WireGuard&amp;nbsp;or&amp;nbsp;virtual network encryption), which secures traffic in transit but lacks workload identity and authentication.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Service meshes&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, which provide strong identity and&amp;nbsp;mTLS&amp;nbsp;guarantees but introduce operational complexity.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;T&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;his&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;trade&lt;/SPAN&gt;&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;off&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;has become increasingly problematic&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;, as m&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;any teams want&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;workload&lt;/SPAN&gt;&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;level&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;encryption and authentication&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;, but without the cost, overhead, and architectural impact of deploying and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;operating&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;full-service&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;mesh.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:2,&amp;quot;335559740&amp;quot;:300}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;Cilium&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;mTLS&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;closes this gap directly in the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;dataplane&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;. It delivers transparent, inline&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;mTLS&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;encryption and authentication for&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;pod&lt;/SPAN&gt;&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;to&lt;/SPAN&gt;&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;pod&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;TCP traffic, enforced below the application layer.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;And&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;implemented natively in the Azure CNI&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;dataplane&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;built on Cilium,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;so&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;customers gain&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;workload&lt;/SPAN&gt;&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;level&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Normal (Web)"&gt;&amp;nbsp;security without introducing a separate service mesh, resulting in a simpler architecture with lower operational overhead.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To see how this works under the hood, the next section breaks down the Cilium mTLS architecture and follows a pod&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;to&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;pod&amp;nbsp;TCP flow from interception to authentication and encryption.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;Architecture and&amp;nbsp;design: How Cilium&amp;nbsp;mTLS&amp;nbsp;works&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Cilium&amp;nbsp;mTLS&amp;nbsp;achieves&amp;nbsp;workload&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;authentication and encryption by combining&amp;nbsp;three key&amp;nbsp;components, each responsible for a specific part of the&amp;nbsp;authentication and encryption&amp;nbsp;lifecycle.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;Cilium&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;a&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;gent&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;Transparent&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;t&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;raffic&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;i&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;nterception and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;w&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;iring&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Cilium agent which already exists on any cluster running with Azure CNI powered by cilium, is responsible for making mTLS invisible to applications. When a namespace is labelled with “io.cilium/mtls-enabled=true”, The Cilium agent enrolls all pods in that namespace. It enters each pod's network namespace and installs iptables rules that redirect outbound traffic to ztunnel on port 15001.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;It is also&amp;nbsp;responsible&amp;nbsp;for&amp;nbsp;passing&amp;nbsp;workload metadata (such as pod&amp;nbsp;IP&amp;nbsp;and namespace context) to&amp;nbsp;ztunnel.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;Z&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;tunnel&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;Node&lt;/SPAN&gt;&lt;/SPAN&gt;‑&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;l&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;evel&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;mTLS&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;e&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="Subtitle"&gt;nforcement&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Ztunnel is an open source,&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;lightweight,&amp;nbsp;node&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;Layer 4 proxy&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;that was&amp;nbsp;originally&amp;nbsp;created by&amp;nbsp;Istio&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;Ztunnel runs as a DaemonSet, on the source node it looks up the destination workload via XDS (streamed from the Cilium agent) and establishes mutually authenticated TLS 1.3 sessions between source and destination nodes. Connections are held inline until authentication is complete, ensuring that traffic is never sent in plaintext.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The destination&amp;nbsp;ztunnel&amp;nbsp;decrypts the traffic and delivers it into the target pod, bypassing the interception rules via an in-pod mark. The application sees a normal plaintext connection — it is completely unaware encryption happened.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="none"&gt;SPIRE: Workload&amp;nbsp;identity and&amp;nbsp;trust&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;SPIRE (SPIFFE Runtime Environment) provides the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;identity foundation&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for Cilium&amp;nbsp;mTLS.&amp;nbsp;SPIRE acts as the cluster Certificate Authority, issuing&amp;nbsp;short&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;lived&amp;nbsp;X.509 certificates (SVIDs)&amp;nbsp;that are automatically rotated and&amp;nbsp;validated.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This is a&amp;nbsp;key design principle of Cilium&amp;nbsp;mTLS&amp;nbsp;&amp;nbsp;-&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;trust is based on workload identity, not network topology&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Each workload receives a cryptographic identity derived from:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Kubernetes namespace&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="5" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Kubernetes&amp;nbsp;ServiceAccount&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;These identities are issued and rotated automatically by SPIRE and&amp;nbsp;validated&amp;nbsp;on both sides of every connection. As a result:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Identity&amp;nbsp;remains&amp;nbsp;stable across pod restarts and rescheduling&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Authentication is decoupled from IP addresses&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Trust decisions align naturally with Kubernetes RBAC and namespace boundaries&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This enables a&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;zero&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;trust&amp;nbsp;networking model&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;that fits cleanly into existing AKS security practices.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;End&lt;/SPAN&gt;‑&lt;SPAN data-contrast="none"&gt;to&lt;/SPAN&gt;‑&lt;SPAN data-contrast="none"&gt;End&amp;nbsp;workflow&amp;nbsp;example&lt;/SPAN&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To see how these components work together, consider a simple pod&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;to&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;pod&amp;nbsp;connection:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="23" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;A pod&amp;nbsp;initiates&amp;nbsp;a TCP connection to another pod.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="23" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Traffic&amp;nbsp;intercepted inside&amp;nbsp;the&amp;nbsp;pod network&amp;nbsp;namespace&amp;nbsp;and redirected&amp;nbsp;to the local&amp;nbsp;ztunnel&amp;nbsp;instance.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="23" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;ztunnel&amp;nbsp;retrieves the workload identity using certificates issued by SPIRE.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="23" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;ztunnel&amp;nbsp;establishes a mutually authenticated TLS session with the destination node’s&amp;nbsp;ztunnel.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="23" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Traffic is encrypted and sent between&amp;nbsp;pods.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="23" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The destination&amp;nbsp;ztunnel&amp;nbsp;decrypts the traffic and delivers it to the target pod.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Every packet from an enrolled pod is encrypted.&amp;nbsp;There is no plaintext window,&amp;nbsp;and&amp;nbsp;no dropped first packets. The connection is held inline by&amp;nbsp;ztunnel&amp;nbsp;until the&amp;nbsp;mTLS&amp;nbsp;tunnel is&amp;nbsp;established, then traffic flows bidirectionally through an HBONE (HTTP/2 CONNECT) tunnel.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;Workload enrolment and scope&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Cilium&amp;nbsp;mTLS&amp;nbsp;in AKS is&amp;nbsp;opt&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;in&amp;nbsp;and scoped at the namespace level.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Platform teams enable&amp;nbsp;mTLS&amp;nbsp;by applying a single label to a namespace. From that point on:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;All pods in that namespace&amp;nbsp;participate&amp;nbsp;in&amp;nbsp;mTLS&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Authentication and encryption are mandatory between enrolled workloads&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Non-enrolled namespaces continue to&amp;nbsp;operate&amp;nbsp;unchanged&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Encryption is applied only when both pods are enrolled. Traffic between enrolled and non&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;enrolled workloads continues in plaintext without causing connectivity issues or hard failures.&amp;nbsp;This model enables&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;gradual rollout&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, staged migrations, and low-risk adoption across environments.&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Getting&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;s&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;tarted in AKS&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Cilium&amp;nbsp;mTLS&amp;nbsp;encryption is available in&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;public preview&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for AKS clusters that use:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Azure CNI powered by Cilium&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Advanced Container Networking Services&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You can enable&amp;nbsp;mTLS:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;When creating a new cluster, or&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="12" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;On an existing cluster by updating the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Advanced Container Networking Services&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;configuration&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Once enabled, enrolling workloads is as simple as&amp;nbsp;labelling&amp;nbsp;a namespace.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;👉&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Learn more&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/container-network-security-cilium-mutual-tls-concepts" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Concepts:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;&amp;nbsp;How Cilium mTLS works, architecture, and trust boundaries&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="13" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/container-network-security-cilium-mutual-tls-how-to" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;How-to guide:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;&amp;nbsp;Step-by-step instructions to enable and verify mTLS in AKS&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Looking &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;a&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;head&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This public preview&amp;nbsp;represents&amp;nbsp;an important step&amp;nbsp;forward in simplifying network security for&amp;nbsp;AKS and&amp;nbsp;reflects a deep collaboration between Microsoft and&amp;nbsp;Isovalent&amp;nbsp;to bring open,&amp;nbsp;standards&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;based&amp;nbsp;innovation into&amp;nbsp;production&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;ready&amp;nbsp;cloud platforms.&amp;nbsp;We’re&amp;nbsp;continuing to work closely with the community to improve the feature and move it toward&amp;nbsp;general&amp;nbsp;availability.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If&amp;nbsp;you’re&amp;nbsp;looking for&amp;nbsp;workload&lt;/SPAN&gt;‑&lt;SPAN data-contrast="auto"&gt;level&amp;nbsp;encryption without the overhead of a traditional service mesh, we invite you to try Cilium&amp;nbsp;mTLS&amp;nbsp;in AKS and share your experience.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Mar 2026 01:50:18 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/announcing-public-preview-cilium-mtls-encryption-for-azure/ba-p/4504423</guid>
      <dc:creator>chandanAggarwal</dc:creator>
      <dc:date>2026-03-23T01:50:18Z</dc:date>
    </item>
    <item>
      <title>Azure Front Door: Resiliency Series – Part 2: Faster recovery (RTO)</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-front-door-resiliency-series-part-2-faster-recovery-rto/ba-p/4503091</link>
      <description>&lt;P&gt;In &lt;A href="https://aka.ms/AzureFrontDoor/Resiliency-Part1" target="_blank" rel="noopener"&gt;Part 1&lt;/A&gt; of this blog series, we outlined our four‑pillar strategy for resiliency in Azure Front Door: configuration resiliency, data plane resiliency, tenant isolation, and accelerated Recovery Time Objective (RTO). Together, these pillars help Azure Front Door remain continuously available and resilient at global scale.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/AzureFrontDoor/Resiliency-Part1" target="_blank" rel="noopener"&gt;Part 1&lt;/A&gt; focused on the first two pillars: configuration and data plane resiliency. Our goal is to make configuration propagation safer, so incompatible changes never escape pre‑production environments. We discussed how incompatible configurations are blocked early, and how data plane resiliency ensures the system continues serving traffic from a last‑known‑good (LKG) configuration even if a bad change manages to propagate. We also introduced ‘Food Taster’, a dedicated sacrificial process running in each edge server’s data plane, that pretests every configuration change in isolation, before it ever reaches the live data plane.&lt;/P&gt;
&lt;P&gt;In this post, we turn to the recovery pillar. We describe how we have made key enhancements to the Azure Front Door recovery path so the system can return to full operation in a predictable and bounded timeframe. For a global service like Azure Front Door, serving hundreds of thousands of tenants across 210+ edge sites worldwide, we set an explicit target: to be able to recover any edge site – or all edge sites – within approximately 10 minutes, even in worst‑case scenarios. In typical data plane crash scenarios, we expect recovery in under a second.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Repair status &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The first blog post in this series mentioned the two Azure Front Door incidents from October 2025 – learn more by watching our Azure Incident Retrospective session recordings for the &lt;A href="https://aka.ms/AIR/QNBQ-5W8" target="_blank" rel="noopener"&gt;October 9&lt;SUP&gt;th&lt;/SUP&gt; incident&lt;/A&gt; and/or the &lt;A href="https://aka.ms/AIR/YKYN-BWZ" target="_blank" rel="noopener"&gt;October 29&lt;SUP&gt;th&lt;/SUP&gt; incident&lt;/A&gt;. Before diving into our platform investments for improving our Recovery Time Objectives (RTO), we wanted to provide a quick update on the &lt;STRONG&gt;overall repair items&lt;/STRONG&gt; from these incidents. We are pleased to report that the work on configuration propagation and data plane resiliency is now complete and fully deployed across the platform (in the table below, “Completed” means broadly deployed in production). With this, we have reduced configuration propagation latency from &lt;STRONG&gt;~45 minutes to ~20 minutes&lt;/STRONG&gt;. We anticipate reducing this even further – to ~15 minutes by the end of April 2026, while ensuring that platform stability remains our top priority.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Learning category&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Goal&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Repairs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Status&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Safe customer configuration deployment&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Incompatible configuration never propagates beyond ‘EUAP or canary regions’&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Control plane and data plane defect fixes&lt;/P&gt;
&lt;P&gt;Forced synchronous configuration processing&lt;/P&gt;
&lt;P&gt;Additional stages with extended bake time&lt;/P&gt;
&lt;P&gt;Early detection of crash state&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;&lt;STRONG&gt;Data plane resiliency&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;Configuration processing cannot impact data plane availability&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manage data-plane lifecycle to prevent outages caused by configuration-processing defects.&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Isolated work-process in every data plane server to process and load the configuration.&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;&lt;STRONG&gt;100% Azure Front Door resiliency posture for Microsoft internal services&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;Microsoft operates an isolated, independent Active/Active fleet with automatic failover for critical Azure services&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Phase 1:&amp;nbsp;&lt;/STRONG&gt;Onboarded critical services batch impacted on Oct 29&lt;SUP&gt;th&lt;/SUP&gt;&amp;nbsp;outage running on a day old configuration&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Phase 2:&lt;/STRONG&gt;&amp;nbsp;Automation &amp;amp; hardening of operations, auto-failover and self-management of Azure Front Door onboarding for additional services&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;March &lt;/STRONG&gt;&lt;STRONG&gt;2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;&lt;STRONG&gt;Recovery improvements&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;Data plane crash recovery in under 10 minutes&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Data plane boot-up time optimized via local cache (~1 hour)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Accelerate recovery time &amp;lt; 10 minutes&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;April &lt;/STRONG&gt;&lt;STRONG&gt;2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Tenant isolation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No configuration or traffic regression can impact other tenants&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Micro cellular Azure Front Door with ingress layered shards&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;June &lt;/STRONG&gt;&lt;STRONG&gt;2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.0154%" /&gt;&lt;col style="width: 25.0154%" /&gt;&lt;col style="width: 39.4674%" /&gt;&lt;col style="width: 10.4709%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;Why recovery at edge scale is deceptively hard&lt;/H2&gt;
&lt;P&gt;To understand why recovery took as long as it did, it helps to first understand how the Azure Front Door data plane processes configuration.&lt;/P&gt;
&lt;P&gt;Azure Front Door operates in 210+ edge sites with multiple servers per site. The data plane of each edge server hosts multiple processes. A &lt;STRONG&gt;master process&lt;/STRONG&gt; orchestrates the lifecycle of multiple &lt;STRONG&gt;worker processes&lt;/STRONG&gt;, that serve customer traffic. A separate &lt;STRONG&gt;configuration translator&lt;/STRONG&gt;&lt;STRONG&gt; &lt;/STRONG&gt;process runs alongside the data plane processes, and is responsible for converting customer configuration bundles from the control plane into optimized binary &lt;STRONG&gt;FlatBuffer&lt;/STRONG&gt; files. This translation step, covering hundreds of thousands of tenants, represents hours of cumulative computation. A per edge server cache is kept locally at each server level – to enable a fast recovery of the data plane, if needed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once the configuration translator process produces these FlatBuffer files, each worker processes them independently and &lt;STRONG&gt;memory-maps&lt;/STRONG&gt; them for zero-copy access. Configuration updates flow through a &lt;STRONG&gt;two-phase commit&lt;/STRONG&gt;: new FlatBuffers are first loaded into a staging area and validated, then atomically swapped into production maps. In-flight requests continue using the old configuration, until the last request referencing them completes.&lt;/P&gt;
&lt;P&gt;The data process recovery is designed to be resilient to different failure modes. A failure or crash at the worker process level has a typical recovery time of less than one second. Since each server has multiple such worker processes which serve customer traffic, this type of crash has no impact on the data plane. In the case of a master process crash, the system automatically tries to recover using the local cache. When the local cache is reused, the system is able to recover quickly – in approximately 60 minutes – since most of the configurations in the cache were already loaded into the data plane before the crash. However, in certain cases if the cache becomes unavailable or must be invalidated because of corruption, the recovery time increases significantly.&lt;/P&gt;
&lt;P&gt;During the October 29&lt;SUP&gt;th&lt;/SUP&gt; incident, a data plane crash triggered a complete recovery sequence that took approximately 4.5 hours. This was not because restarting a process is slow, it is because a defect in the recovery process invalidated the local cache, which meant that “restart” meant &lt;EM&gt;rebuilding everything from scratch.&lt;/EM&gt; The configuration translator process then had to re-fetch and re-translate every one of the hundreds of thousands of customer configurations, before workers could memory-map them and begin serving traffic.&lt;/P&gt;
&lt;P&gt;This experience has crystallized three fundamental learnings related to our recovery path:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Expensive rework:&lt;/STRONG&gt; A subset of crashes discarded all previously translated FlatBuffer artifacts, forcing the configuration translator process to repeat hours of conversion work that had already been validated and stored.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;High restart costs:&lt;/STRONG&gt; Every worker on every node had to wait for the configuration translator process to complete the full translation, before it could memory-map any configuration and begin serving requests.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Unbounded recovery time:&lt;/STRONG&gt; Recovery time grew linearly with total tenant footprint rather than with active traffic, creating a ‘scale penalty’ as more tenants onboarded to the system.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Separately and together, the insight was clear: &lt;STRONG&gt;recovery must stop being proportional to the total configuration size.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2&gt;Persisting ‘validated configurations’ across restarts&lt;/H2&gt;
&lt;P&gt;One of the key recovery improvements was strengthening how validated customer configurations are cached and reused across failures, rather than rebuilding configuration states from scratch during recovery. Azure Front Door already cached customer configurations on host‑mounted storage prior to the October incident. The platform enhancements post outage focused on making the local configuration cache resilient to crashes, partial failures, and bad tenant inputs.&lt;/P&gt;
&lt;P&gt;Our goal was to ensure that recovery behavior is dominated by &lt;EM&gt;serving traffic safely&lt;/EM&gt;, not by reconstructing configuration state. This led us to two explicit design goals…&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Design goals&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;No category of crash should invalidate the configuration cache&lt;/STRONG&gt;: Configuration cache invalidation must never be the default response to failures. Whether the failure is a worker crash, master crash, data plane restart, or coordinated recovery action, previously validated customer configurations should remain usable—unless there is a proven reason to discard it.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Bad tenant configuration must not poison the entire cache: &lt;/STRONG&gt;A single faulty or incompatible tenant configuration should result in &lt;EM&gt;targeted eviction&lt;/EM&gt; of that tenant’s configuration only—not wholesale cache invalidation across all tenants.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Platform enhancements&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Previously, customer configurations persisted to host‑mounted storage, but &lt;STRONG&gt;certain failure paths treated the cache as unsafe and invalidated it entirely&lt;/STRONG&gt;. In those cases, recovery implicitly meant reloading and reprocessing configuration for hundreds of thousands of tenants before traffic could resume, even though the vast majority of cached data was still valid.&lt;/P&gt;
&lt;P&gt;We changed the recovery model to &lt;STRONG&gt;avoid&lt;/STRONG&gt; &lt;STRONG&gt;invalidating customer configurations&lt;/STRONG&gt;, with strict scoping around when and how cached entries are discarded:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Cached configurations are no longer invalidated based on crash &lt;EM&gt;type&lt;/EM&gt;. Failures are assumed to be orthogonal to configuration correctness unless explicitly proven otherwise.&lt;/LI&gt;
&lt;LI&gt;Cache eviction is &lt;STRONG&gt;granular and tenant‑scoped&lt;/STRONG&gt;. If a cached configuration fails validation or load checks, &lt;EM&gt;only that tenant’s configuration&lt;/EM&gt; is discarded and reloaded. All other tenant configurations remain available.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This ensures that recovery does not regress into a fleet‑wide rebuild due to localized or unrelated faults.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Safety and correctness&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Durability is paired with strong correctness controls, to prevent unsafe configurations from being served:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Per‑tenant validation on load:&lt;/STRONG&gt; Each cached tenant configuration is validated during the ‘load and verification’ phase, before being promoted for traffic serving. Therefore, failures are contained to that tenant.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Targeted re‑translation:&lt;/STRONG&gt; When validation fails, only the affected tenant’s configuration is reloaded or reprocessed. Therefore, the cache for other tenants is left untouched.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Operational escape hatch:&lt;/STRONG&gt; Operators retain the ability to explicitly instruct a clean rebuild of the configuration cache (with proper authorization), preserving control without compromising the default fast‑recovery path.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Resulting behavior&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With these changes, recovery behavior now aligns with real‑world traffic patterns - configuration defects impact tenants &lt;EM&gt;locally and predictably&lt;/EM&gt;, rather than globally. The system now prefers &lt;STRONG&gt;isolated tenant impact&lt;/STRONG&gt;, and &lt;STRONG&gt;continued service using last-known-good&lt;/STRONG&gt; over aggressive invalidation, both of which are critical for predictable recovery at the scale of Azure Front Door.&lt;/P&gt;
&lt;H2&gt;Making recovery scale with active traffic, not total tenants&lt;/H2&gt;
&lt;P&gt;Reusing configuration cache solves the problem of &lt;EM&gt;rebuilding&lt;/EM&gt; configuration in its entirety, but even with a warm cache, the original startup path had a second bottleneck: &lt;STRONG&gt;eagerly loading a large volume of tenant configurations into memory before serving any traffic.&lt;/STRONG&gt; At our scale, memory-mapping, parsing hundreds of thousands of FlatBuffers, constructing internal lookup maps, adding Transport Layer Security (TLS) certificates and configuration blocks for each tenant, collectively added almost an hour to startup time. This was the case even when a majority of those tenants had no active traffic at that moment.&lt;/P&gt;
&lt;P&gt;We addressed this by fundamentally changing &lt;EM&gt;when&lt;/EM&gt; configuration is loaded into workers. Rather than eagerly loading most of the tenants at startup across all edge locations, Azure Front Door now uses an Machine Learning (ML)-optimized &lt;STRONG&gt;lazy loading&lt;/STRONG&gt; model.&lt;/P&gt;
&lt;P&gt;In the new architecture, instead of loading a large number of tenant configurations, we only load a small subset of tenants that are known to be historically active in a given site, we call this the “warm tenants” list. The warm tenants list per edge site is created through a sophisticated traffic analysis pipeline that leverages ML. However, loading the warm tenants is not good enough, because when a request arrives and we don’t have the configuration in memory, we need to know two things. Firstly, is this a request from a real Azure Front Door tenant – and, if it is, where can I find the configuration?&lt;/P&gt;
&lt;P&gt;To answer these questions, each worker maintains a &lt;STRONG&gt;hostmap&lt;/STRONG&gt; that tracks the state of each tenant’s configuration. This hostmap is constructed during startup, as we process each tenant configuration – if the tenant is in the warm list, we will process and load their configuration fully; if not, then we will just add an entry into the hostmap where all their domain names are mapped to the configuration path location. When a request arrives for one of these tenants, the worker loads and validates that tenant’s configuration on demand, and immediately begins serving traffic. This allows a node to start serving its busiest tenants within a few minutes of startup, while additional tenants are loaded incrementally only when traffic actually arrives—allowing the system to progressively absorb cold tenants as demand increases.&lt;/P&gt;
&lt;P&gt;The effect on recovery is transformative. Instead of recovery time scaling with the total number of tenants configured on a server, it scales with the number of tenants &lt;EM&gt;actively receiving traffic&lt;/EM&gt;. In practice, even at our busiest edge sites, the active tenant set is a small fraction of the total.&lt;/P&gt;
&lt;P&gt;Just as importantly, this modified form of lazy loading provides a natural &lt;STRONG&gt;failure isolation boundary&lt;/STRONG&gt;. Most Edge sites won’t ever load a faulty configuration of an inactive tenant. When a request for an inactive tenant &lt;EM&gt;with an incompatible configuration&lt;/EM&gt; arrives, impact is contained to a single worker.&lt;/P&gt;
&lt;P&gt;The configuration load architecture now prefers serving &lt;EM&gt;as many&lt;/EM&gt; customers &lt;EM&gt;as quickly&lt;/EM&gt; as possible, rather than waiting until &lt;EM&gt;everything&lt;/EM&gt; is ready before serving &lt;EM&gt;anyone&lt;/EM&gt;. The above changes are slated to complete in April 2026 and will bring our RTO from the current ~1 hour to under 10 minutes – for complete recovery from a worst case scenario.&lt;/P&gt;
&lt;H3&gt;Continuous validation through Game Days&lt;/H3&gt;
&lt;P&gt;A critical element of our recovery confidence comes from &lt;STRONG&gt;GameDay fault-injection testing&lt;/STRONG&gt;. We don’t simply design recovery mechanisms and assume they work—we break the system deliberately and observe how it responds. Since late 2025, we have conducted recurring GameDay drills that simulate the exact failure scenarios we are defending against:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Food Taster crash scenarios:&lt;/STRONG&gt; Injecting deliberately faulty tenant configurations, to verify that they are caught and isolated with zero impact on live traffic. In our January 2026 GameDay, the Food Taster process crashed as expected, the system halted the update within approximately 5 seconds, and no customer traffic was affected.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Master process crash scenarios:&lt;/STRONG&gt; Triggering master process crashes across test environments to verify that workers continue serving traffic, that the Local Config Shield engages within 10 seconds, and that the coordinated recovery tool restores full operation within the expected timeframe.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Multi-region failure drills:&lt;/STRONG&gt; Simulating simultaneous failures across multiple regions to validate that global Config Shield mechanisms engage correctly, and that recovery procedures scale without requiring manual per-region intervention.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Fallback test drills for critical Azure services running behind Azure Front Door:&lt;/STRONG&gt; In our February 2026 GameDay, we simulated the complete unavailability of Azure Front Door, and successfully validated failover for critical Azure services with no impact to traffic.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These drills have both surfaced corner cases and built operational confidence. They have transformed recovery from a theoretical plan into tested, repeatable muscle memory. As we noted in an internal communication to our team: &lt;EM&gt;“Game day testing is a deliberate shift from assuming resilience to actively proving it—turning reliability into an observed and repeatable outcome.”&lt;/EM&gt;&lt;/P&gt;
&lt;H2&gt;Closing&lt;/H2&gt;
&lt;P&gt;Part 1 of this series emphasized preventing unsafe configurations from reaching the data plane, and data plane resiliency in case an incompatible configuration reaches production. This post has shown that prevention alone is not enough—when failures do occur, recovery must be &lt;STRONG&gt;fast, predictable, and bounded&lt;/STRONG&gt;. By ensuring that the FlatBuffer cache is never invalidated, by loading only active tenants, and by building safe coordinated recovery tooling, we have transformed failure handling from a fleet-wide crisis into a controlled operation.&lt;/P&gt;
&lt;P&gt;These recovery investments work in concert with the prevention mechanisms described in Part 1. Together, they ensure that the path from incident detection to full service restoration is measured in minutes, with customer traffic protected at every step.&lt;/P&gt;
&lt;P&gt;In the next post of this series, we will cover the third pillar of our resiliency strategy: &lt;STRONG&gt;tenant isolation&lt;/STRONG&gt;—how micro-cellular architecture and ingress-layered sharding can reduce the blast radius of any failure to a small subset, ensuring that one customer’s configuration or traffic anomaly never becomes everyone’s problem.&lt;/P&gt;
&lt;P&gt;We deeply value our customers’ trust in Azure Front Door. We are committed to transparently sharing our progress on these resiliency investments, and to exceed expectations for safety, reliability, and operational readiness.&lt;/P&gt;</description>
      <pubDate>Thu, 19 Mar 2026 17:00:54 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-front-door-resiliency-series-part-2-faster-recovery-rto/ba-p/4503091</guid>
      <dc:creator>AbhishekTiwari</dc:creator>
      <dc:date>2026-03-19T17:00:54Z</dc:date>
    </item>
    <item>
      <title>ExpressRoute Gateway Microsoft initiated migration</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/expressroute-gateway-microsoft-initiated-migration/ba-p/4497689</link>
      <description>&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-color-8" border="3" style="width: 100%; border-width: 3px;"&gt;&lt;colgroup&gt;&lt;col style="width: 99.9074%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="lia-border-color-8" style="border-width: 3px;"&gt;
&lt;P&gt;&lt;STRONG&gt;Important: &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-teams="true"&gt;Microsoft initiated Gateway migrations are temporarily paused. You will be notified when migrations resume.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H1&gt;Objective&lt;/H1&gt;
&lt;P&gt;The backend migration process is an automated upgrade performed by Microsoft to ensure your ExpressRoute gateways use the Standard IP SKU. This migration enhances gateway reliability and availability while maintaining service continuity. You receive notifications about scheduled maintenance windows and have options to control the migration timeline. For guidance on upgrading Basic SKU public IP addresses for other networking services, see &lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/public-ip-basic-upgrade-guidance#steps-to-complete-the-upgrade" target="_blank" rel="noopener"&gt;Upgrading Basic to Standard SKU&lt;/A&gt;.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-20"&gt;&lt;STRONG&gt;Important: &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;As of September 30, 2025, Basic SKU public IPs are retired. For more information, see the &lt;A href="https://azure.microsoft.com/updates/upgrade-to-standard-sku-public-ip-addresses-in-azure-by-30-september-2025-basic-sku-will-be-retired/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;official announcement&lt;/STRONG&gt;&lt;/A&gt;.&lt;BR /&gt;You can initiate the ExpressRoute gateway migration yourself at a time that best suits your business needs, before the Microsoft team performs the migration on your behalf. This gives you control over the migration timing.&amp;nbsp;Please use the&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/expressroute/gateway-migration" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;ExpressRoute Gateway&amp;nbsp;Migration Tool&lt;/STRONG&gt;&amp;nbsp;&lt;/A&gt;to migrate your gateway Public IP to Standard SKU. This tool provides a guided workflow in the Azure portal and PowerShell, enabling a smooth migration with minimal service disruption.&amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Backend migration overview&lt;/H2&gt;
&lt;P&gt;The backend migration is scheduled during your preferred maintenance window. During this time, the Microsoft team performs the migration with minimal disruption. You don’t need to take any actions. The process includes the following steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Deploy new gateway:&lt;/STRONG&gt; Azure provisions a second virtual network gateway in the same &lt;EM&gt;GatewaySubnet &lt;/EM&gt;alongside your existing gateway. Microsoft automatically assigns a new Standard SKU public IP address to this gateway.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Transfer configuration:&lt;/STRONG&gt; The process copies all existing configurations (connections, settings, routes) from the old gateway. Both gateways run in parallel during the transition to minimize downtime. You may experience brief connectivity interruptions may occur.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Clean up resources:&lt;/STRONG&gt; After migration completes successfully and passes validation, Azure removes the old gateway and its associated connections. The new gateway includes a tag &lt;STRONG&gt;CreatedBy: GatewayMigrationByService&lt;/STRONG&gt; to indicate it was created through the automated backend migration&lt;/LI&gt;
&lt;/OL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-20"&gt;Important:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;To ensure a smooth backend migration, avoid making non-critical changes to your gateway resources or connected circuits during the migration process. If modifications are absolutely required, you can choose (after the Migrate stage complete) to either commit or abort the migration and make your changes.&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;Backend process details&lt;/H2&gt;
&lt;P&gt;This section provides an overview of the Azure portal experience during backend migration for an existing ExpressRoute gateway. It explains what to expect at each stage and what you see in the Azure portal as the migration progresses. To reduce risk and ensure service continuity, the process performs validation checks before and after every phase.&lt;/P&gt;
&lt;P&gt;The backend migration follows four key stages:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Validate&lt;/STRONG&gt;: Checks that your gateway and connected resources meet all migration requirements for the Basic to Standard public IP migration.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Prepare:&lt;/STRONG&gt; Deploys the new gateway with Standard IP SKU alongside your existing gateway.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Migrate&lt;/STRONG&gt;: Cuts over traffic from the old gateway to the new gateway with a Standard public IP.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Commit or abort&lt;/STRONG&gt;: Finalizes the public IP SKU migration by removing the old gateway or reverts to the old gateway if needed.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;These stages mirror the&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/expressroute/gateway-migration" target="_blank" rel="noopener"&gt;Gateway migration &lt;/A&gt;tool process, ensuring consistency across both migration approaches.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Azure resource group &lt;STRONG&gt;&lt;EM&gt;RGA&lt;/EM&gt;&lt;/STRONG&gt; serves as a logical container that displays all associated resources as the process updates, creates, or removes them. Before the migration begins, &lt;EM&gt;RGA&lt;/EM&gt; contains the following resources:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H6&gt;&lt;EM&gt;This image uses an example ExpressRoute gateway named&amp;nbsp;&lt;STRONG&gt;ERGW-A&lt;/STRONG&gt; with two connections (&lt;STRONG&gt;Conn-A&lt;/STRONG&gt; and &lt;STRONG&gt;LAconn&lt;/STRONG&gt;) in the resource group &lt;STRONG&gt;RGA&lt;/STRONG&gt;.&lt;/EM&gt;&lt;/H6&gt;
&lt;H2&gt;Portal walkthrough&lt;/H2&gt;
&lt;P&gt;Before the backend migration starts, a banner appears in the &lt;STRONG&gt;Overview&lt;/STRONG&gt; blade of the ExpressRoute gateway. It notifies you that the gateway uses the deprecated Basic IP SKU and will undergo backend migration between March 7, 2026, and April 30, 2026:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Validate stage&lt;/H3&gt;
&lt;P&gt;Once you start the migration, the banner in your gateway’s &lt;STRONG&gt;Overview &lt;/STRONG&gt;page updates to indicate that migration is currently in progress.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this initial stage, all resources are checked to ensure they are in a Passed state. If any prerequisites aren't met, validation fails and the Azure team doesn't proceed with the migration to avoid traffic disruptions. No resources are created or modified in this stage.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After the validation phase completes successfully, a notification appears indicating that validation passed and the migration can proceed to the Prepare stage.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Prepare stage&lt;/H3&gt;
&lt;P&gt;In this stage, the backend process provisions a new virtual network gateway in the same region and SKU type as the existing gateway. Azure automatically assigns a new public IP address and re-establishes all connections. This preparation step typically takes up to 45 minutes.&lt;/P&gt;
&lt;P&gt;To indicate that the new gateway is created by migration, the backend mechanism appends &lt;STRONG&gt;_migrate&lt;/STRONG&gt; to the original gateway name. During this phase, the existing gateway is locked to prevent configuration changes, but you retain the option to abort the migration, which deletes the newly created gateway and its connections.&lt;/P&gt;
&lt;P&gt;After the Prepare stage starts, a notification appears showing that new resources are being deployed to the resource group:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;BR /&gt;Deployment status&lt;/H4&gt;
&lt;P&gt;In the resource group &lt;STRONG&gt;&lt;EM&gt;RGA&lt;/EM&gt;&lt;/STRONG&gt;, under &lt;STRONG&gt;Settings &lt;/STRONG&gt;&lt;STRONG&gt;→&lt;/STRONG&gt;&lt;STRONG&gt; Deployments&lt;/STRONG&gt;, you can view the status of all newly deployed resources as part of the backend migration process.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the resource group &lt;STRONG&gt;&lt;EM&gt;RGA&lt;/EM&gt;&lt;/STRONG&gt; under the &lt;STRONG&gt;Activity Log&lt;/STRONG&gt; blade, you can see events related to the Prepare stage. These events are initiated by &lt;STRONG&gt;GatewayRP&lt;/STRONG&gt;, which indicates they are part of the backend process:&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;Deployment verification&lt;/H4&gt;
&lt;P&gt;After the Prepare stage completes, you can verify the deployment details in the resource group &lt;STRONG&gt;RGA&lt;/STRONG&gt; under &lt;STRONG&gt;Settings &amp;gt; Deployments&lt;/STRONG&gt;. This section lists all components created as part of the backend migration workflow.&lt;/P&gt;
&lt;P&gt;The new gateway &lt;STRONG&gt;ERGW-A_migrate&lt;/STRONG&gt; is deployed successfully along with its corresponding connections: &lt;STRONG&gt;Conn-A_migrate&lt;/STRONG&gt; and &lt;STRONG&gt;LAconn_migrate&lt;/STRONG&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;Gateway tag&lt;/H4&gt;
&lt;P&gt;The newly created gateway &lt;STRONG&gt;ERGW-A_migrate&lt;/STRONG&gt; includes the tag &lt;STRONG&gt;CreatedBy: GatewayMigrationByService&lt;/STRONG&gt;, which indicates it was provisioned by the backend migration process.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Migrate stage&lt;/H3&gt;
&lt;P&gt;After the Prepare stage finishes, the backend process starts the Migrate stage. During this stage, the process switches traffic from the existing gateway &lt;STRONG&gt;ERGW-A&lt;/STRONG&gt; to the new gateway &lt;STRONG&gt;ERGW-A_migrate&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Gateway ERGW-A_migrate:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Old gateway &lt;EM&gt;(ERGW-A)&lt;/EM&gt; handles traffic:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After the backend team initiates the traffic migration, the process switches traffic from the old gateway to the new gateway. This step can take up to 15 minutes and might cause brief connectivity interruptions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;New gateway &lt;EM&gt;(ERGW-A_migrate)&lt;/EM&gt; handles traffic:&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Commit stage&lt;/H3&gt;
&lt;P&gt;After migration, the Azure team monitors connectivity for &lt;STRONG&gt;15 days&lt;/STRONG&gt; to ensure everything is functioning as expected. The banner automatically updates to indicate completion of migration:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;During this validation period, you &lt;STRONG&gt;can’t&lt;/STRONG&gt; modify resources associated with both the old and new gateways. To resume normal CRUD operations without waiting 15 days, you have two options:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Commit&lt;/STRONG&gt;: Finalize the migration and unlock resources.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Abort&lt;/STRONG&gt;: Revert to the old gateway, which deletes the new gateway and its connections.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To initiate &lt;STRONG&gt;Commit&lt;/STRONG&gt; before the 15-day window ends, type &lt;STRONG&gt;yes&lt;/STRONG&gt; and select&lt;STRONG&gt; Commit&lt;/STRONG&gt; in the portal.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When the commit is initiated from the backend, you will see “&lt;EM&gt;Committing migration.&lt;/EM&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;EM&gt;The operation may take some time to complete.”&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The old gateway and its connections are deleted. The event shows as initiated by &lt;STRONG&gt;GatewayRP &lt;/STRONG&gt;in the activity logs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 100.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After old connections are deleted, the old gateway gets deleted.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally, the resource group &lt;EM&gt;RGA&lt;/EM&gt; contains only resources only related to the migrated gateway&lt;BR /&gt;&lt;EM&gt;ERGW-A_migrate:&lt;/EM&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The ExpressRoute Gateway migration from Basic to Standard Public IP SKU is now complete.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;Frequently asked questions&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;How long will Microsoft team wait before committing to the new gateway?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The Microsoft team waits around 15 days after migration to allow you time to validate connectivity and ensure all requirements are met. You can commit at any time during this 15-day period.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What is the traffic impact during migration? Is there packet loss or routing disruption?&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Traffic is rerouted seamlessly during migration. Under normal conditions, no packet loss or routing disruption is expected. Brief connectivity interruptions (typically less than 1 minute) might occur during the traffic cutover phase.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Can we make any changes to ExpressRoute Gateway deployment during the migration?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Avoid making non-critical changes to the deployment (gateway resources, connected circuits, etc.). If modifications are absolutely required, you have the option (after the Migrate stage) to either commit or abort the migration.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Mar 2026 18:20:25 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/expressroute-gateway-microsoft-initiated-migration/ba-p/4497689</guid>
      <dc:creator>MekaylaMoore</dc:creator>
      <dc:date>2026-03-30T18:20:25Z</dc:date>
    </item>
    <item>
      <title>Unlock outbound traffic insights with Azure StandardV2 NAT Gateway flow logs</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/unlock-outbound-traffic-insights-with-azure-standardv2-nat/ba-p/4493138</link>
      <description>&lt;H2&gt;Recommended Outbound Connectivity&lt;/H2&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/nat-overview#standardv2-nat-gateway" target="_blank"&gt;StandardV2 NAT Gateway&lt;/A&gt; is the next evolution of outbound connectivity in Azure. As the recommended solution for providing secure, reliable outbound Internet access, NAT Gateway continues to be the default choice for modern Azure deployments. With the highly anticipated general availability of the new StandardV2 SKU, customers gain access to the following highly requested upgrades:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Zone-redundancy: Automatically maintains outbound connectivity during single‑zone failures in AZ-enabled regions.&lt;/LI&gt;
&lt;LI&gt;Enhanced performance: Up to 100 Gbps of throughput and 10 million packets per second - double the Standard SKU capacity.&lt;/LI&gt;
&lt;LI&gt;Dual-stack support: Attach up to 16 IPv6 and 16 IPv4 public IP addresses for future ready connectivity.&lt;/LI&gt;
&lt;LI&gt;Flow logs: Access historical logs of connections being established through your NAT gateway.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This blog will focus on how enabling StandardV2 NAT Gateway flow logs can be beneficial for your team along with some tips to get the most out of the data.&lt;/P&gt;
&lt;H2&gt;What are flow logs?&lt;/H2&gt;
&lt;P&gt;StandardV2 NAT Gateway flow logs are enabled through Diagnostic settings on your NAT gateway resource where the log data can be sent to Log Analytics, a storage account, or Event hub destination. “NatGatewayFlowlogV1” is the released log category, and it provides IP level information on traffic flowing through your StandardV2 NAT gateway.&lt;/P&gt;
&lt;img&gt;&lt;EM&gt;Enable NAT&lt;/EM&gt;&lt;EM&gt;Gateway Flow Logs through Diagnostics setting on your StandardV2 NAT gateway resource.&lt;/EM&gt;&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;&lt;EM&gt;Schema output as seen on Log Analytics for a NAT gateway traffic flow.&lt;/EM&gt;&lt;/img&gt;
&lt;H3&gt;Why should I use flow logs?&lt;/H3&gt;
&lt;P&gt;&lt;U&gt;Security and compliance visibility&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Prior to NAT gateway flow logs, customers could not see NAT gateway information when their virtual machines connect outbound. This made it difficult to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Validate that only approved destinations were being accessed&lt;/LI&gt;
&lt;LI&gt;Audit suspicious or unexpected outbound patterns&lt;/LI&gt;
&lt;LI&gt;Satisfy compliance requirements that mandate traffic recording&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Flow logs now provide visibility to the source IP -&amp;gt; NAT gateway outbound IP -&amp;gt; destination IP, along with details on sent/dropped packets and bytes.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Usage analytics&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Flow logs allow you to answer usage questions such as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Which VMs are generating the most outbound requests?&lt;/LI&gt;
&lt;LI&gt;Which destinations receive the most traffic?&lt;/LI&gt;
&lt;LI&gt;Is throughput growth caused by a specific workload pattern?&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This level of insight is especially useful when debugging unexpected throughput increases, billing spikes, and connection bottlenecks.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;To note: Flow logs only capture established connections. This means the TCP 3&lt;/EM&gt;&lt;EM&gt;‑&lt;/EM&gt;&lt;EM&gt;way handshake (SYN → SYN/ACK → ACK) or the UDP ephemeral session setup must complete. &lt;/EM&gt;&lt;EM&gt;If a connection never establishes, for example due to NSG denial, routing mismatch, or SNAT exhaustion, it will not appear in flow logs.&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;Workflow of troubleshooting with flow logs&lt;/H3&gt;
&lt;P&gt;Let's walk through how you can leverage flow logs to troubleshoot a scenario where you are seeing intermittent connection drops.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario: You have VMs that use a StandardV2 NAT gateway to reach the Internet. However, your VMs intermittently fail to reach github.com.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1: Check NAT gateway health&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Start with the datapath availability metric, which reflects the NAT gateway's overall health.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;If metric &amp;gt; 90%, this confirms NAT gateway is healthy and is working as expected to send outbound traffic to the internet. Continue to Step 2.&lt;/LI&gt;
&lt;LI&gt;If metric is lower, visit &lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/troubleshoot-nat-connectivity#datapath-availability-drop-on-nat-gateway-with-connection-failures" target="_blank"&gt;Troubleshoot Azure NAT Gateway connectivity - Azure NAT Gateway | Microsoft Learn&lt;/A&gt; for troubleshooting tips.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2: Enable StandardV2 NAT Gateway Flow Logs&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To further investigate the root cause, Enable StandardV2 NAT Gateway Flow Logs (&lt;EM&gt;NatGatewayFlowLogsV1&lt;/EM&gt; log category in Diagnostics Setting) for the NAT gateway resource providing outbound connectivity for the impacted VMs. It is recommended to enable Log Analytics as a destination as it allows you to easily query the data. For the detailed steps, visit &lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/monitor-nat-gateway-flow-logs" target="_blank"&gt;Monitor with StandardV2 NAT Gateway Flow Logs - Azure NAT Gateway | Microsoft Learn&lt;/A&gt;.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Tip: You may enable flow logs even when not troubleshooting to ensure you’ll have historical data to reference when issues occur.&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3: Confirm whether the connection was established&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Use Log Analytics to query for flows with source IP == VM private IP and destination IP == IP address(es) of github.com. The following query will generate a table and chart of the total packets sent per minute from your source IP to the destination IP through your NAT gateway in the last 24 hours.&lt;LI-CODE lang="sql"&gt;NatGatewayFlowlogsV1
| where TimeGenerated &amp;gt; ago(1d)
| where SourceIP == '10.0.0.4'  //and DestinationIP == &amp;lt;"github.com IP"&amp;gt;
| summarize TotalPacketsSent = sum(PacketsSent) by TimeGenerated = bin(TimeGenerated, 1m), SourceIP, DestinationIP
| order by TimeGenerated asc&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;LI&gt;If there are no records of this connection, it is likely an issue with establishing the connection because flow logs will only capture records of established connections. Take a look at &lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/nat-metrics#snat-connection-count" target="_blank"&gt;SNAT connection metrics&lt;/A&gt; to determine whether it may be a SNAT port exhaustion issue or NSGs/UDRs that may be blocking the traffic.&lt;/LI&gt;
&lt;LI&gt;If there are records of the connection, proceed with the next step.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 4: Check if there are any packets dropped&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Log Analytics, query for the total "PacketsSentDropped" and "PacketsReceivedDropped" per source/outbound/destination IP connection.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;If "PacketsSentDropped" &amp;gt; 0 - NAT gateway dropped traffic sent from your VM.&lt;/LI&gt;
&lt;LI&gt;If "PacketsReceivedDropped" &amp;gt; 0, NAT gateway dropped traffic received from destination IP, github.com in this case.&lt;/LI&gt;
&lt;LI&gt;In both instances, it typically means the either the client or server is pushing more traffic through a single connection than is optimal, causing &lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/nat-sku#sku-comparison" target="_blank"&gt;connection-level rate limiting&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;To mitigate:&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI&gt;Avoid relying on one connection and instead use multiple connections.&lt;/LI&gt;
&lt;LI&gt;Distribute traffic across multiple outbound IP addresses by assigning more public IP addresses to the NAT gateway resource.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;StandardV2 NAT Gateway Flow Logs unlock a powerful new dimension of outbound visibility and they can help you:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Validate cybersecurity readiness&lt;/LI&gt;
&lt;LI&gt;Audit outbound flows&lt;/LI&gt;
&lt;LI&gt;Diagnose intermittent connectivity issues&lt;/LI&gt;
&lt;LI&gt;Understand traffic patterns and optimize architecture&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;We are excited to see how you leverage this new capability with your StandardV2 NAT gateways!&lt;/P&gt;
&lt;H3&gt;Have more questions?&lt;/H3&gt;
&lt;P&gt;As always, for any feedback, please feel free to reach us by&amp;nbsp;&lt;A href="https://feedback.azure.com/d365community/forum/8ae9bf04-8326-ec11-b6e6-000d3a4f0789" target="_blank"&gt;submitting your feedback&lt;/A&gt;. We look forward to hearing your thoughts and hope this announcement helps you build more resilient applications in Azure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For more information on StandardV2 NAT Gateway Flow Logs and how to enable it, visit:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/nat-gateway-flow-logs" target="_blank"&gt;Manage StandardV2 NAT Gateway Flow Logs - Azure NAT Gateway | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/monitor-nat-gateway-flow-logs" target="_blank"&gt;Monitor with StandardV2 NAT Gateway Flow Logs - Azure NAT Gateway | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;To see the most up-to-date pricing for flow logs, visit&amp;nbsp;&lt;A href="https://azure.microsoft.com/en-us/pricing/details/azure-nat-gateway/?msockid=028aa4446a5a601f37ecb0076b7761c7" target="_blank"&gt;Azure NAT Gateway - Pricing | Microsoft Azure&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;To learn more about StandardV2 NAT Gateway, visit&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/nat-gateway/nat-overview#standardv2-nat-gateway" target="_blank"&gt;What is Azure NAT Gateway? | Microsoft Learn&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Feb 2026 16:07:33 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/unlock-outbound-traffic-insights-with-azure-standardv2-nat/ba-p/4493138</guid>
      <dc:creator>cozhang</dc:creator>
      <dc:date>2026-02-06T16:07:33Z</dc:date>
    </item>
    <item>
      <title>Data Center Quantized Congestion Notification: Scaling congestion control for RoCE RDMA in Azure</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/data-center-quantized-congestion-notification-scaling-congestion/ba-p/4468417</link>
      <description>&lt;P&gt;As cloud storage demands continue to grow, the need for ultra-fast, reliable networking becomes ever more critical. Microsoft Azure’s journey to empower its storage infrastructure with RDMA (Remote Direct Memory Access) has been transformative, but it’s not without challenges—especially when it comes to congestion control at scale. Azure’s deployment of RDMA at regional scale relies on DCQCN (Data Center Quantized Congestion Notification), a protocol that’s become central to Azure’s ability to deliver high-throughput, low-latency storage services across vast, heterogeneous data center regions.&lt;/P&gt;
&lt;H2&gt;Why congestion control matters in RDMA networks&lt;/H2&gt;
&lt;P&gt;RDMA offloads the network stack to NIC hardware, reducing CPU overhead and enabling near line-rate performance. However, as Azure scaled RDMA across clusters and regions, it faced new challenges:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Heterogeneous hardware:&lt;/STRONG&gt; Different generations of RDMA NICs (Network Interface Cards) and switches, each with their own quirks.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Variable latency:&lt;/STRONG&gt; Long-haul links between datacenters introduce large round-trip time (RTT) variations.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Congestion risks:&lt;/STRONG&gt; High-speed, incast-like traffic patterns can easily overwhelm buffers, leading to packet loss and degraded performance.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To address these, Azure needed a congestion control protocol that could operate reliably across diverse hardware and network conditions. Traditional TCP congestion control mechanisms don’t apply here, so Azure leverages &lt;STRONG&gt;DCQCN combined with Priority Flow Control (PFC)&lt;/STRONG&gt; to maintain high throughput, low latency, and near-zero packet loss.&lt;/P&gt;
&lt;H3&gt;How DCQCN works&lt;/H3&gt;
&lt;P&gt;DCQCN coordinates congestion control using three main entities:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Reaction point (RP)&lt;/STRONG&gt;: The sender adjusts its rate based on feedback.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Congestion point (CP)&lt;/STRONG&gt;: Switches mark packets using ECN when queues exceed thresholds.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Notification point (NP)&lt;/STRONG&gt;: The receiver sends Congestion Notification Packets (CNPs) upon receiving ECN-marked packets.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This feedback loop allows RDMA flows to dynamically adapt their sending rates, preventing congestion collapse while maintaining fairness.&lt;/P&gt;
&lt;img /&gt;
&lt;UL&gt;
&lt;LI&gt;When the switch detects congestion, it marks packets with ECN.&lt;/LI&gt;
&lt;LI&gt;The receiver NIC (NP) observes ECN marks and sends CNPs to the sender.&lt;/LI&gt;
&lt;LI&gt;The sender NIC (RP) reduces its sending rate upon receiving CNPs; otherwise, it increases the rate gradually.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Interoperability challenges across different hardware generations&lt;/H3&gt;
&lt;P&gt;Cloud infrastructure evolves incrementally, typically at the level of individual clusters or racks, as newer server hardware generations are introduced. Within a single region, clusters often differ in their NIC configurations. Our deployment includes three generations of commodity RDMA NICs—Gen1, Gen2, and Gen3—each implementing DCQCN with distinct design variations. These discrepancies create complex and often problematic interactions when NICs from different generations interoperate.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Gen1 NICs:&lt;/STRONG&gt; Firmware-based DCQCN, NP-side CNP coalescing, burst-based rate limiting.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Gen2/Gen3 NICs:&lt;/STRONG&gt; Hardware-based DCQCN, RP-side CNP coalescing, per-packet rate limiting.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Problem:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Gen2/Gen3 NICs sending to Gen1 can trigger excessive cache misses, slowing down Gen1’s receiver pipeline.&lt;/LI&gt;
&lt;LI&gt;Gen1 sending to Gen2/Gen3 can cause excessive rate reductions due to frequent CNPs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Azure’s solution:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Move CNP coalescing to NP side for Gen2/Gen3.&lt;/LI&gt;
&lt;LI&gt;Implement per-QP CNP rate limiting, matching Gen1’s timer.&lt;/LI&gt;
&lt;LI&gt;Enable per-burst rate limiting on Gen2/Gen3 to reduce cache pressure.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;DCQCN tuning: Achieving fairness and performance&lt;/H3&gt;
&lt;P&gt;DCQCN is inherently &lt;STRONG&gt;RTT-fair&lt;/STRONG&gt;—its rate adjustment is independent of round-trip time, making it suitable for Azure’s regional networks with RTTs ranging from microseconds to milliseconds.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Tuning Strategies:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Sparse ECN marking: &lt;/STRONG&gt;Use large ECN marking thresholds (K_max - K_min) and low marking probabilities (P_max) for flows with large RTTs.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Joint buffer and DCQCN tuning: &lt;/STRONG&gt;Tune switch buffer thresholds and DCQCN parameters together to avoid premature congestion signals and optimize throughput.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Global parameter settings: &lt;/STRONG&gt;Azure’s NICs support only global DCQCN settings, so parameters must work well across all traffic types and RTTs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Real-world results&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;High throughput &amp;amp; low latency:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;RDMA traffic runs at line rate with near-zero packet loss.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;CPU savings:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Freed CPU cores can be repurposed for customer VMs or application logic.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Performance metrics:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;RDMA reduces CPU utilization by up to 34.5% compared to TCP for storage frontend traffic.&lt;/LI&gt;
&lt;LI&gt;Large I/O requests (1 MB) see up to 23.8% latency reduction for reads and 15.6% for writes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Scalability:&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;As of November 2025, ~85% of Azure’s traffic is RDMA, supported in all public regions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;DCQCN is a cornerstone of Azure’s RDMA-enabled storage infrastructure, enabling reliable, high-performance cloud storage at scale. By combining ECN-based signaling with dynamic rate adjustments, DCQCN ensures high throughput, low latency, and near-zero packet loss—even across heterogeneous hardware and long-haul links. Its interoperability fixes and careful tuning make it a critical enabler for RDMA adoption in modern data centers, paving the way for efficient, scalable, and resilient cloud storage.&lt;/P&gt;</description>
      <pubDate>Tue, 13 Jan 2026 22:35:21 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/data-center-quantized-congestion-notification-scaling-congestion/ba-p/4468417</guid>
      <dc:creator>VamsiVadlamuri</dc:creator>
      <dc:date>2026-01-13T22:35:21Z</dc:date>
    </item>
    <item>
      <title>Azure Front Door: Implementing lessons learned following October outages</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-front-door-implementing-lessons-learned-following-october/ba-p/4479416</link>
      <description>&lt;H5&gt;Abhishek Tiwari, Vice President of Engineering, Azure Networking&lt;BR /&gt;Amit Srivastava, Principal PM Manager, Azure Networking&lt;BR /&gt;Varun Chawla, Partner Director of Engineering&lt;/H5&gt;
&lt;H2&gt;&lt;BR /&gt;Introduction&lt;/H2&gt;
&lt;P&gt;Azure Front Door is Microsoft's advanced edge delivery platform encompassing Content Delivery Network (CDN), global security and traffic distribution into a single unified offering. By using Microsoft's extensive global edge network, Azure Front Door ensures efficient content delivery and advanced security through 210+ &lt;A href="https://learn.microsoft.com/en-us/azure/frontdoor/edge-locations-by-region" target="_blank" rel="noopener"&gt;global and local points of presence (PoPs)&lt;/A&gt;&amp;nbsp;strategically positioned closely to both end users and applications.&lt;/P&gt;
&lt;P&gt;As the central global entry point from the internet onto customer applications, we power mission critical customer applications as well as many of Microsoft’s internal services. We have a highly distributed resilient architecture, which protects against failures at the server, rack, site and even at the regional level. This resiliency is achieved by the use of our intelligent traffic management layer which monitors failures and load balances traffic at server, rack or edge sites level within the primary ring, supplemented by a secondary-fallback ring which accepts traffic in case of primary traffic overflow or broad regional failures. We also deploy a traffic shield as a terminal safety net to ensure that in the event of a managed or unmanaged edge site going offline, end user traffic continues to flow to the next available edge site.&lt;/P&gt;
&lt;P&gt;Like any large-scale CDN, we deploy each customer configuration across a globally distributed edge fleet, densely shared with thousands of other tenants. While this architecture enables global scale, it carries the risk that certain incompatible configurations, if not contained, can propagate broadly and quickly which can result in a large blast radius of impact. Here we describe how the two recent service incidents impacting Azure Front Door have reinforced the need to accelerate ongoing investments in hardening our resiliency, and tenant isolation strategy to mitigate likelihood and the scale of impact from this class of risk.&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;October incidents: recap and key learnings&lt;/H2&gt;
&lt;P&gt;Azure Front Door experienced two service incidents; on October&amp;nbsp;9&lt;SUP&gt;th&lt;/SUP&gt; and October&amp;nbsp;29&lt;SUP&gt;th&lt;/SUP&gt;, both with customer-impacting service degradation.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;On October&lt;/STRONG&gt;&lt;STRONG&gt; 9&lt;SUP&gt;th&lt;/SUP&gt;:&lt;/STRONG&gt; A manual cleanup of stuck tenant metadata bypassed our configuration protection layer, allowing incompatible metadata to propagate beyond our canary edge sites. This metadata was created on October 7&lt;SUP&gt;th&lt;/SUP&gt;, from a control-plane defect triggered by a customer configuration change. While the protection system initially blocked the propagation, the manual override operation bypassed our safeguards. This incompatible configuration reached the next stage and activated a latent data-plane defect in a subset of edge sites, causing availability impact primarily across Europe (~6%) and Africa (~16%). You can learn more about this issue in detail at &lt;A href="https://aka.ms/AIR/QNBQ-5W8" target="_blank" rel="noopener"&gt;https://aka.ms/AIR/QNBQ-5W8&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;On October&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;29&lt;SUP&gt;th&lt;/SUP&gt;:&lt;/STRONG&gt; A different sequence of configuration changes across two control-plane versions produced incompatible metadata. Because the failure mode in the data-plane was asynchronous, the health checks validations embedded in our protection systems were all passed during the rollout. The incompatible customer configuration metadata successfully propagated globally through a staged rollout and also updated the “last known good” (LKG) snapshot. Following this global rollout, the asynchronous process in data-plane exposed another defect which caused crashes. This impacted connectivity and DNS resolutions for all applications onboarded to our platform. Extended recovery time amplified impact on customer applications and Microsoft services. You can learn more about this issue in detail at &lt;A href="https://aka.ms/AIR/YKYN-BWZ" target="_blank" rel="noopener"&gt;https://aka.ms/AIR/YKYN-BWZ&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;We took away a number of clear and actionable lessons from these incidents, which are applicable not just to our service, but to any multi-tenant, high-density, globally distributed system.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Configuration resiliency&lt;/STRONG&gt; – Valid configuration updates should propagate safely, consistently, and predictably across our global edge, while ensuring that incompatible or erroneous configuration never propagate beyond canary environments.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Data plane resiliency - &lt;/STRONG&gt;Additionally, configuration processing in the data plane must not cause availability impact to any customer.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tenant isolation&lt;/STRONG&gt; – Traditional isolation techniques such as hardware partitioning and virtualization are impractical at edge sites. This requires innovative sharding techniques to ensure single tenant-level isolation – a must-have to reduce potential blast radius.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Accelerated and automated recovery time objective (RTO)&lt;/STRONG&gt; – System should be able to automatically revert to last known good configuration in an acceptable RTO. In case of a service like Azure Front Door, we deem ~10 mins to be a practical RTO for our hundreds of thousands of customers at every edge site.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Post outage, given the severity of impact which allowed an incompatible configuration to propagate globally, we made the difficult decision to temporarily block configuration changes in order to expedite rollout of additional safeguards. Between October 29&lt;SUP&gt;th&lt;/SUP&gt; to November 5&lt;SUP&gt;th&lt;/SUP&gt;, we prioritized and deployed immediate hardening steps before opening up the configuration change. We are confident that the system is stable, and we are continuing to invest in additional safeguards to further strengthen the platform's resiliency.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Learning category&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Goal&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Repairs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Status&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Safe customer configuration deployment&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Incompatible configuration never propagates beyond Canary&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Control plane and data plane defect fixes&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Forced synchronous configuration processing&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Additional stages with extended bake time&lt;/P&gt;
&lt;P&gt;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Early detection of crash state&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;&lt;STRONG&gt;Data plane resiliency&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;Configuration processing cannot impact data plane availability&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Manage data-plane lifecycle to prevent outages caused by configuration-processing defects.&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG class="lia-align-center"&gt;&amp;nbsp; &lt;SPAN class="lia-text-color-6"&gt;Completed &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Isolated work-process in every data plane server to process and load the configuration.&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;January 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;&lt;STRONG&gt;100% Azure Front Door resiliency posture for Microsoft internal services&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;Microsoft operates an isolated, independent Active/Active fleet with automatic failover for critical Azure services&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Phase 1: &lt;/STRONG&gt;Onboarded critical services batch impacted on Oct 29&lt;SUP&gt;th&lt;/SUP&gt; outage running on a day old configuration&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Phase 2:&lt;/STRONG&gt; Automation &amp;amp; hardening of operations, auto-failover and self-management of Azure Front Door onboarding for additional services&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;March 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;&lt;STRONG&gt;Recovery improvements&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td rowspan="2"&gt;
&lt;P&gt;Data plane crash recovery in under 10 minutes&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Data plane boot-up time optimized via local cache (~1 hour)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-6"&gt;&lt;STRONG&gt;Completed&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Accelerate recovery time &amp;lt; 10 minutes&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;March 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Tenant isolation&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;No configuration or traffic regression can impact other tenants&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Micro cellular Azure Front Door with ingress layered shards&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;June&amp;nbsp; &amp;nbsp; 2026&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;This blog is the first in a multi-part series on Azure Front Door resiliency. In this blog, we will focus on configuration resiliency—how we are making the configuration pipeline safer and more robust. Subsequent blogs will cover tenant isolation and recovery improvements.&lt;/P&gt;
&lt;H2&gt;How our configuration propagation works&lt;/H2&gt;
&lt;P&gt;Azure Front Door configuration changes can be broadly classified into three distinct categories.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Service&amp;nbsp;code &amp;amp; data&lt;/STRONG&gt; – these include all aspects of Azure Front Door service like&amp;nbsp;management plane,&amp;nbsp;control plane, data plane,&amp;nbsp;configuration propagation system. Azure Front Door follows a safe deployment practice (SDP) process to&amp;nbsp;roll out&amp;nbsp;newer versions of management,&amp;nbsp;control&amp;nbsp;or data plane&amp;nbsp;over a period of&amp;nbsp;approximately 2-3 weeks.&amp;nbsp;This ensures that any regression in software does not have a global impact.&amp;nbsp;However, latent bugs that escape pre-validation and SDP rollout can remain undetected until a specific combination of customer traffic patterns or configuration changes trigger the issue.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Web Application Firewall (WAF) &amp;amp; L7 DDoS platform&amp;nbsp;data&lt;/STRONG&gt;&amp;nbsp;–&amp;nbsp;These datasets are used by Azure Front Door to deliver security and load-balancing capabilities. Examples include GeoIP data, malicious attack signatures, and IP reputation signatures. Updates to these datasets occur daily through multiple SDP stages with an extended bake time of over 12 hours to minimize the risk of global impact during rollout. This dataset is shared across all customers and the platform, and it is validated immediately since it does not depend on variations in customer traffic or configuration steps.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Customer configuration data&lt;/STRONG&gt;&amp;nbsp;–&amp;nbsp;Examples of&amp;nbsp;these&amp;nbsp;are any customer&amp;nbsp;configuration change—whether a routing rule update, backend pool modification, WAF rule change, or security policy&amp;nbsp;change. Due to&amp;nbsp;the nature&amp;nbsp;of these changes, it is expected&amp;nbsp;across the edge delivery / CDN industry&amp;nbsp;to propagate these changes globally in 5-10 mins.&amp;nbsp;Both outages stemmed from issues within this category.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;All configuration changes, including customer configuration data, are&amp;nbsp;processed through a multi-stage pipeline designed to ensure correctness before global rollout&amp;nbsp;across Azure Front Door’s 200+ edge locations.&amp;nbsp;At a high level, Azure Front Door’s configuration&amp;nbsp;propagation system has&amp;nbsp;two&amp;nbsp;distinct&amp;nbsp;components&amp;nbsp;-&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Control plane&lt;/STRONG&gt;&amp;nbsp;– Accepts customer API/portal changes (create/update/delete for profiles, routes, WAF policies, origins, etc.) and translates them into internal configuration metadata&amp;nbsp;which the data plane can understand.&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Data plane&lt;/STRONG&gt;&amp;nbsp;– Globally distributed edge servers that&amp;nbsp;terminate client traffic, apply routing/WAF logic, and proxy to origins using the configuration produced by the control plane.&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Between these two halves sits a&amp;nbsp;&lt;STRONG&gt;multi-stage configuration rollout pipeline&lt;/STRONG&gt;&amp;nbsp;with a dedicated protection system&amp;nbsp;(known as ConfigShield):&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Changes flow through multiple stages (pre-canary, canary, expanding waves&amp;nbsp;to production) rather than going global at once.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Each stage is&amp;nbsp;&lt;STRONG&gt;health-gated&lt;/STRONG&gt;: the data plane must remain within strict error and latency thresholds before&amp;nbsp;proceeding.&amp;nbsp;Each stage’s health check also rechecks&amp;nbsp;previous&amp;nbsp;stage’s health for any&amp;nbsp;regressions.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;A successfully completed rollout updates a&amp;nbsp;&lt;STRONG&gt;last known good (LKG) &lt;/STRONG&gt;snapshot used for automated rollback.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Historically, rollout targeted global completion in&amp;nbsp;roughly 5–10 minutes, in line with industry standards.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Customer configuration processing in Azure Front Door data plane stack&lt;/H3&gt;
&lt;P&gt;Customer configuration changes in Azure Front Door traverse multiple layers—from the control plane through the deployment system—before being converted into &lt;STRONG&gt;FlatBuffers&lt;/STRONG&gt; at each Azure Front Door node. These FlatBuffers are then loaded by the Azure Front Door data plane stack, which runs as Kubernetes pods on every node.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;FlatBuffer Composition: Each FlatBuffer references several sub-resources such as WAF and Rules Engine schematic files, SSL certificate objects, and URL signing secrets.&lt;/LI&gt;
&lt;LI&gt;Data plane architecture:&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;o&amp;nbsp;&amp;nbsp; Master process: Accepts configuration changes (memory-mapped files with references) and manages the lifecycle of worker processes.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;o&amp;nbsp;&amp;nbsp; Workers: L7 proxy processes that serve customer traffic using the applied configuration.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;H4&gt;Processing flow for each configuration update:&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Load and apply in master: The transformed configuration is loaded and applied in the master process. Cleanup of unused references occurs synchronously except for certain categories à &lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;October&lt;/U&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt; 9 outage occurred during this step due to a crash triggered by incompatible metadata&lt;/U&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt;&lt;U&gt;.&lt;/U&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Apply to workers: Configuration is applied to all worker processes without memory overhead (FlatBuffers are memory-mapped).&lt;/LI&gt;
&lt;LI&gt;Serve traffic: Workers start consuming new FlatBuffers for new requests; in-flight requests continue using old buffers. Old buffers are queued for cleanup post-completion.&lt;/LI&gt;
&lt;LI&gt;Feedback to deployment service: Positive feedback signals readiness for rollout.Cleanup: FlatBuffers are freed asynchronously by the master process after all workers load updates à &lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;October&lt;/U&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt; 29 outage occurred during this step due to a latent bug in reference counting logic.&lt;/U&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The October&amp;nbsp;incidents&amp;nbsp;showed we needed to strengthen&amp;nbsp;key&amp;nbsp;aspects of configuration validation, propagation safeguards, and runtime behavior.&amp;nbsp;During the Azure Front Door incident on October 9&lt;SUP&gt;th&lt;/SUP&gt;, that protection system worked as&amp;nbsp;intended but&amp;nbsp;was later bypassed by our engineering team during a manual cleanup operation. During this Azure Front Door incident on October 29&lt;SUP&gt;th&lt;/SUP&gt;, the incompatible customer configuration metadata progressed through the protection system, before the delayed asynchronous processing task resulted in the crash.&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Configuration propagation safeguards&lt;/H2&gt;
&lt;P&gt;Based on learnings from the incidents, we are implementing a comprehensive set of configuration resiliency improvements. These changes aim to guarantee that any sequence of configuration changes cannot trigger instability in the data plane, and to ensure quicker recovery in the event of anomalies.&lt;/P&gt;
&lt;H3 class="lia-align-left"&gt;Strengthening configuration generation safety&lt;/H3&gt;
&lt;P&gt;This improvement pivots on a ‘shift-left’ strategy where we want to ensure that we catch regression early before they propagate to production. It also includes fixing the latent defects which were the proximate cause of the outage.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Fixing outage specific defects&lt;/STRONG&gt; - We have fixed the control-plane defects that could generate incompatible tenant metadata under specific operation sequences. We have also remediated the associated data-plane defects.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Stronger cross-version validation - &lt;/STRONG&gt;We are expanding our test and validation suite to account for changes across multiple control plane build versions. This is expected to be fully completed by February 2026.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Fuzz testing&lt;/STRONG&gt; - Automated fuzzing and testing of metadata generation contract between the control plane and the data plane. This allows us to generate an expanded set of invalid/unexpected configuration combinations which might not be achievable by traditional test cases alone. This is expected to be fully completed by February 2026.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Preventing incompatible configurations from being propagated&lt;/H3&gt;
&lt;P&gt;This segment of the resiliency strategy strives to ensure that a potentially dangerous configuration change never propagates beyond canary stage.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Protection system is “always-on” &lt;/STRONG&gt;- Enhancements to operational procedures and tooling prevent bypass in all scenarios (including internal cleanup/maintenance), and any cleanup must flow through the same guarded stages and health checks as standard configuration changes. This is completed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Making rollout behavior more predictable and conservative - &lt;/STRONG&gt;Configuration processing in the data plane is now fully synchronous. Every data plane issue due to incompatible meta data can be detected withing 10 seconds at every stage. This is completed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Enhancement to deployment pipeline&lt;/STRONG&gt; - Additional stages during roll-out and extended bake time between stages serve as an additional safeguard during configuration propagation. This is completed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Recovery tool&lt;/STRONG&gt; improvements now make it easier to revert to any previous version of LKG with a single click. This is completed.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These changes significantly improve system safety. Post-outage we have increased the configuration propagation time to approximately 45 minutes. We are working towards reducing configuration propagation time closer to pre-incident levels once additional safeguards covered in the Data plane resiliency section below are completed by mid-January, 2026.&lt;/P&gt;
&lt;H2&gt;Data plane resiliency&lt;/H2&gt;
&lt;P&gt;The data plane recovery was the toughest part of recovery efforts during the October incidents. We must ensure fast recovery as well as resilience to configuration processing related issues for the data plane. To address this, we implemented changes that decouple the data plane from incompatible configuration changes. With these enhancements, the data plane continues operating on the last known good configuration—even if the configuration pipeline safeguards fail to protect as intended.&lt;/P&gt;
&lt;H3&gt;Decoupling data plane from configuration changes&lt;/H3&gt;
&lt;P&gt;Each server’s data plane consists of a master process which accepts configuration changes and manages lifecycle of multiple worker processes which serve customer traffic. One of the critical reasons for the prolonged outage in October was that due to latent defects in the data plane, when presented with a bad configuration the master process crashed. The master is a critical command-and-control process and when it crashes it takes down the entire data plane, in that node. Recovery of the master process involves reloading hundreds of thousands of configurations from scratch and took approximately 4.5 hours.&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;We have since made changes to the system to ensure that even in the event of the master process crash due to any reason - including incompatible configuration data being presented - the workers remain healthy and able to serve traffic. During such an event, the workers would not be able to accept new configuration changes but will continue to serve customer traffic using the last known good configuration. This work is completed.&lt;/P&gt;
&lt;H2&gt;Introducing Food Taster: strengthening config propagation resiliency&lt;/H2&gt;
&lt;P&gt;In our efforts to further strengthen Azure Front Door’s configuration propagation system, we are introducing an additional configuration safeguard known internally as &lt;STRONG&gt;Food Taster&lt;/STRONG&gt; which protects the master and worker processes from any configuration change related incidents, thereby ensuring data plane resiliency.&lt;/P&gt;
&lt;P&gt;The principle is simple: every data-plane server will have a redundant and isolated process – the Food Taster – whose only job is to ingest and process new configuration metadata first and then pass validated configuration changes to active data plane. This redundant worker does not accept any customer traffic.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;All configuration processing in this Food Taster is fully synchronous. That means we do all parsing, validation, and any expensive or risky work up front, and we do not move on until the Food Taster has either proven the configuration is safe or rejected it. Only when the Food Taster successfully loads the configuration and returns “Config OK” does the master process proceed to load the same config and then instruct the worker processes to do the same. If anything goes wrong in the Food Taster, the failure is contained to that isolated worker; the master and traffic-serving workers never see that invalid configuration.&lt;/P&gt;
&lt;P&gt;We expect this safeguard to reach production globally in January 2026 timeframe. Introduction of this component will also allow us to return closer to pre-incident level of configuration propagation while ensuring data plane safety.&lt;/P&gt;
&lt;H2&gt;Closing&lt;/H2&gt;
&lt;P&gt;This is the first in a series of planned blogs on Azure Front Door resiliency enhancements. We are continuously improving platform safety and reliability and will transparently share updates through this series. Upcoming posts will cover advancements in tenant isolation and improvements to recovery time objectives (RTO).&lt;/P&gt;
&lt;P&gt;We deeply value our customers’ trust in Azure Front Door. The October incidents reinforced how critical configuration resiliency is, and we are committed to exceeding industry expectations for safety, reliability, and transparency. By hardening our configuration pipeline, strengthening safety gates, and reinforcing isolation boundaries, we’re making Azure Front Door even more resilient so your applications can be too.&lt;/P&gt;</description>
      <pubDate>Fri, 19 Dec 2025 16:43:31 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-front-door-implementing-lessons-learned-following-october/ba-p/4479416</guid>
      <dc:creator>AbhishekTiwari</dc:creator>
      <dc:date>2025-12-19T16:43:31Z</dc:date>
    </item>
    <item>
      <title>Azure Networking 2025: Powering cloud innovation and AI at global scale</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-networking-2025-powering-cloud-innovation-and-ai-at-global/ba-p/4479390</link>
      <description>&lt;P&gt;&lt;BR /&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;In 2025, Azure’s networking platform proved itself as the invisible engine driving the cloud’s most transformative innovations. Consider the construction of Microsoft’s new&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Fairwater&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;AI datacenter in Wisconsin – a&amp;nbsp;&lt;/SPAN&gt;315-acre campus&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;housing hundreds of thousands of GPUs. To&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;operate&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;as one giant AI supercomputer, Fairwater&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;required&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;single flat, ultra-fast network&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;interconnecting every GPU&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. Azure’s networking team delivered: the facility’s network fabric links GPUs at 800 Gbps speeds in a non-blocking architecture, enabling&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;10× the performance of the world’s fastest supercomputer&lt;SPAN data-ccp-charstyle="Normal"&gt;.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;This feat&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;showcases&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;how fundamental networking is to cloud innovation. Whether&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;it’s&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;uniting massive AI clusters or connecting millions of everyday users, Azure’s globally distributed network is the foundation upon which new breakthroughs are built.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;In 2025, the surge of AI workloads, data-driven applications, and hybrid cloud adoption put unprecedented demands on this foundation. We responded with &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;bold network investments and innovations&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;Each new networking feature delivered in 2025, from smarter routing to faster gateways, was not just a technical upgrade but an&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;innovation&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;enabling customers to achieve more. Recapping the year’s major releases across Azure Networking services&amp;nbsp;and key highlights how AI both&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;drive and&amp;nbsp;benefit&amp;nbsp;from&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;these advancements.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:1,&amp;quot;335551620&amp;quot;:1,&amp;quot;335559685&amp;quot;:0,&amp;quot;335559737&amp;quot;:0,&amp;quot;335559738&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;Unprecedented connectivity for a hybrid and AI era&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Hybrid connectivity at scale&lt;/STRONG&gt;:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt; Azure’s network enhancements in 2025 focused on making global and hybrid connectivity faster, simpler, and ready for the next wave of AI-driven traffic. For enterprises extending on-premises infrastructure to Azure, Azure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ExpressRoute&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;private connectivity saw a major leap in capacity: Microsoft announced support for&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;400 Gbps&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ExpressRoute Direct ports&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;(available in 2026) to meet the needs of AI supercomputing and massive data volumes&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. These high-speed ports – which can be aggregated into multi-terabit links – ensure that even the largest enterprises or HPC clusters can transfer data to Azure with dedicated, low-latency links. In parallel, Azure&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;VPN Gateway&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;performance reached new highs, with&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;a generally available&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;upgrade that delivers up to&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;20 Gbps aggregate throughput&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;per gateway and&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;5 Gbps per individual&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;tunnel&lt;/STRONG&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&lt;STRONG&gt;.&lt;/STRONG&gt; This is a&amp;nbsp;&lt;/SPAN&gt;3× increase&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;over&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;previous&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;limits, enabling branch offices and remote sites to connect to Azure even more seamlessly without bandwidth bottlenecks. Together, the ExpressRoute and VPN improvements give customers a spectrum of high-performance options for hybrid networking – from offices and datacenters to the cloud – supporting scenarios like large-scale data migrations, resilient multi-site architectures, and hybrid AI processing.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Simplified global networking&lt;/STRONG&gt;:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;Azure&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Virtual WAN (vWAN)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;continued to mature as the one-stop solution for managing global connectivity.&amp;nbsp;Virtual WAN introduced&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;forced tunneling&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;for Secure Virtual Hubs (now in preview), which allows organizations to route all Internet-bound traffic from branch offices or virtual networks back to a central hub for inspection&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. This capability simplifies the implementation of a “backhaul to hub” security model – for example, forcing branches to use a central&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;firewall&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;or security appliance – without complex user-defined routing.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Empowering multicloud and NVA integration&lt;/STRONG&gt;:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;Azure recognizes that enterprise networks are diverse.&amp;nbsp;Azure&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Route Server&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt; improvements enhanced interoperability with customer equipment and third-party network virtual appliances (NVAs). Notably, Azure&amp;nbsp;Route Server now supports up to &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;500 virtual network connections&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;(spokes) per route server,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;a significant scale boost that enables larger hub-and-spoke topologies and simplified Border Gateway Protocol (BGP) route exchange even in &lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;very large&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;environments. This helps customers using SD-WAN appliances or custom firewalls in Azure to seamlessly learn routes from hundreds of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;VNet&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;spokes –&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;maintaining&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt; central routing control without manual configuration. Additionally, Azure&amp;nbsp;Route Server introduced a preview of &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;hub routing preference&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;, giving admins the ability to influence BGP route&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;selection&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;(for example, preferring ExpressRoute over a VPN path, or vice versa)&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. This fine-grained control means hybrid networks can be tuned for&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;optimal&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;performance and cost.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;Resilience and reliability by design&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;Azure’s growth has been underpinned by making the network&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;“resilient by default.”&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;We shipped tools to help&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;validate&amp;nbsp;and improve network resiliency&lt;SPAN data-ccp-charstyle="Normal"&gt;.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ExpressRoute Resiliency Insights&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;was released for&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;general availability – delivering an intelligent assessment of an enterprise’s ExpressRoute setup&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. This feature evaluates how well your ExpressRoute circuits and gateways are architected for high availability (for example, using dual circuits in diverse locations, zone-redundant gateways, etc.) and assigns a&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;resiliency index score&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;as a percentage&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. It will highlight suboptimal configurations – such as routes advertised on only one circuit, or a gateway that&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;isn’t&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;zone-redundant – and provide recommendations for improvement. Moreover, Resiliency Insights includes a&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;failover simulation tool&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;that can test circuit redundancy by mimicking failures, so you can verify that your connections will survive real-world incidents&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. By proactively&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;m&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;onitoring&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;and testing resilience, Azure is helping customers achieve “always-on” connectivity even in the face of fiber cuts, hardware faults, or other disruptions.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;Security, governance, and trust in the network&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;As enterprises entrust more core business to Azure, the platform’s networking services advanced on&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;security and governance&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;– helping customers achieve Zero Trust networks and high compliance with minimal complexity. Azure DNS now offers&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;DNS Security Policies with Threat Intelligence&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;feeds&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;(GA)&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. This capability allows organizations to protect their DNS queries from known malicious domains by&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;leveraging&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;continuously updated threat intel. For example, if a known phishing domain or C2 (command-and-control) hostname appears in DNS queries from your environment, Azure DNS can automatically block or redirect those requests. Because DNS is often the first line of detection for malware and phishing activities, this built-in filtering provides a powerful layer of defense&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;that’s&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;fully managed by Azure.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;It’s&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;essentially a&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;cloud-delivered DNS&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;firewall&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;using Microsoft’s vast threat intelligence – enabling all Azure customers to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;benefit&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;from enterprise-grade security without deploying&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;additional&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;appliances.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Network traffic governance&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;was another focus. The introduction of&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;forced tunneling in Azure Virtual WAN hubs&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;(preview)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;shared above&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;is a prime example&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;where&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;networking meets security compliance&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;Optimizing cloud-native and edge networks&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;We&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;previewed&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;DNS intelligent traffic control&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;features – such as filtering DNS queries to prevent data exfiltration and applying flexible recursion policies – which complement the DNS Security offering in safeguarding name resolution&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. Meanwhile, for load balancing across regions, Azure Traffic Manager’s behind-the-scenes upgrades (as noted earlier) improved reliability, and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;it’s&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;evolving to integrate with modern container-based apps and edge scenarios.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;AI-powered networking: Both enabling and enabled by AI&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;We are&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;infusing&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;AI into networking&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt; to make management and troubleshooting more intelligent. Networking functionality in&amp;nbsp;Azure&amp;nbsp;Copilot &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;accelerates tasks like never before:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;it outlines the&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;best practices&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;instantly and&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;troubleshooting that once required combing through docs and logs can be conversational.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;It effectively democratizes networking&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;expertise&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;, helping even smaller IT teams manage sophisticated networks by&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;leveraging&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;AI recommendations.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:false,&amp;quot;134233118&amp;quot;:false,&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:1,&amp;quot;335551620&amp;quot;:1,&amp;quot;335559685&amp;quot;:0,&amp;quot;335559737&amp;quot;:0,&amp;quot;335559738&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;The future of cloud networking in an AI world&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;As we close out 2025, one message is clear:&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;networking is strategic&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;. The network is no longer a static utility – it is the adaptive circulatory system of the cloud,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;determining&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;how far and fast customers can go.&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;By delivering higher speeds, greater reliability, tighter security, and easier management, Azure Networking has empowered businesses to connect&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;everything to anything, anywhere – securely and at scale&lt;SPAN data-ccp-charstyle="Normal"&gt;.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;These advances unlock new scenarios: global supply chains running in real-time over a trusted network, multi-player AR/VR and gaming experiences delivered without lag, and AI models trained across continents.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;Looking ahead,&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;AI-powered networking&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-charstyle="Normal"&gt;&amp;nbsp;will become the norm. The convergence of AI and network tech means we will see more self-optimizing networks that can heal, defend, and tune themselves with minimal human intervention.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Dec 2025 23:20:29 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/azure-networking-2025-powering-cloud-innovation-and-ai-at-global/ba-p/4479390</guid>
      <dc:creator>Sudha_Mahajan</dc:creator>
      <dc:date>2025-12-18T23:20:29Z</dc:date>
    </item>
    <item>
      <title>Network Detection and Response (NDR) in Financial Services</title>
      <link>https://techcommunity.microsoft.com/t5/azure-networking-blog/network-detection-and-response-ndr-in-financial-services/ba-p/4472515</link>
      <description>&lt;P&gt;Organizations in the Financial Services industry handling sensitive account holder information must comply with the &lt;STRONG&gt;&lt;A class="lia-external-url" href="https://www.pcisecuritystandards.org/" target="_blank" rel="noopener"&gt;Payment Card Industry&lt;/A&gt; Data Security Standard (PCI DSS)&lt;/STRONG&gt;. The latest version, &lt;A class="lia-external-url" href="https://docs-prv.pcisecuritystandards.org/PCI%20DSS/Standard/PCI-DSS-v4_0_1.pdf" target="_blank" rel="noopener"&gt;PCI DSS v4.0.1 &lt;/A&gt;&amp;nbsp;of June 2024, reinforces the requirements for network security monitoring.&lt;/P&gt;
&lt;P&gt;Traditional network security tools, such as firewalls and Intrusion Detection and Prevention Systems (IDPS), struggle to meet these requirements because they either lack deep visibility or generate too many false positives. This is where&amp;nbsp;&lt;STRONG&gt;Network Detection and Response (NDR)&lt;/STRONG&gt; comes in. NDR solutions look at the network traffic within the Cardholder Data Environment (CDE) and use advanced methods (behavioral analytics, machine learning, threat intel) to detect anomalies or attacks in real-time, and facilitate quick responses.&lt;/P&gt;
&lt;P&gt;This post explains how NDR supports PCI DSS v4.0.1 compliance, with a focus on deployments in Azure. We will map NDR capabilities to key PCI requirements, describe how Azure’s native tools (Azure Virtual Network TAP, VNET Flow Logs, Traffic Analytics) enable an NDR solution by capturing network data, and discuss third-party NDR tools that analyze this data for threats.&lt;BR /&gt;&lt;BR /&gt;We will also evaluate Microsoft Sentinel’s role as a partial NDR solution, and highlight how Microsoft Defender for Cloud contributes to PCI compliance.&lt;/P&gt;
&lt;H1&gt;The role of NDR in PCI DSS Compliance&lt;/H1&gt;
&lt;P&gt;PCI DSS v4.0.1 is organized into 12 main requirement areas. NDR technology primarily supports the control objectives in Requirement 10 (“Log and Monitor All Access to System Components and Cardholder Data”) and Requirement 11 (“Test Security of Systems and Networks Regularly”) , while also aiding in demonstrating compliance with Requirement 4 ("Protect Cardholder Data with Strong Cryptography ...") and Requirement 12 ("Support Information Security with Organizational Policies and Programs").&lt;/P&gt;
&lt;P&gt;Below is how NDR aids in building compliance with these controls:&lt;/P&gt;
&lt;H4&gt;Logging &amp;amp; Monitoring&lt;/H4&gt;
&lt;P&gt;Organizations are required to&amp;nbsp;&lt;EM&gt;“log and monitor all access to system components and cardholder data”&lt;/EM&gt;. Requirement 10.4.1 calls for automated mechanisms to perform log reviews and detect anomalies at least daily. An NDR solution addresses this by automatically analyzing network traffic logs and generating alerts for suspicious behavior. Every connection or data transfer involving cardholder systems is continuously scrutinized.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For example, if a database containing card data suddenly starts sending large amounts of data to an unfamiliar server, NDR will log that event and flag it for investigation immediately. This satisfies the intent of Requirement 10 by ensuring that not only are network events being recorded, but they are also under active surveillance at all times. NDR essentially serves as an automated network log reviewer, catching things a manual review might miss. This helps meet Requirement 10’s mandate for &lt;EM&gt;timely&lt;/EM&gt; review so that "... incidents can be quickly identified and proactively addresses."&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-21"&gt;Intrusion Detection&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Requirement 11.5 requires the use of intrusion-detection and/or prevention systems (IDS/IPS) at the perimeter of, and at critical points within the CDE. Additionally, 11.5.1.1 requires service providers to employ IDS to detect covert communication attempts, such as malware trying to reach a command-and-control server.&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;NDR solutions fulfill the role of an IDS by continuously inspecting network traffic for attack signatures and unusual patterns. But NDR goes beyond a legacy IDS: instead of only matching known signatures, it also uses behavior analysis to catch “zero-day” or insider threats (for example, an NDR might detect lateral movement within the network based on abnormal access patterns, even if no signature exists for that behavior). All traffic inbound to, outbound from, and within the CDE is watched and any suspect activity is alerted on.&lt;BR /&gt;&lt;BR /&gt;Showing an NDR solution is in place will satisfy auditors that “Intrusion-detection and/or intrusion prevention techniques are used to detect and/or prevent intrusions into the network”. The high fidelity of NDR alerts (versus older IDS with many false positives) also means the organization is more likely to respond to real incidents – aligning with PCI’s push for effective, risk-based security.&lt;/P&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-21"&gt;Network Segmentation and Scope Reduction&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;While not a direct requirement but rather guidance to Requirement 12.5, network segmentation of the Cardholder Data Environment is encouraged to reduce scope - i.e. the sections of the entire environment that are subject to compliance with PCI DSS.&lt;BR /&gt;&lt;BR /&gt;If segmentation is used, it must be monitored. NDR assists here by monitoring the network boundaries of the CDE. It can verify that only allowed communications occur across segments. For instance, if the CDE is isolated such that only a particular jump server should access it, and somehow a developer’s workstation tries to directly communicate with a CDE database, NDR would spot that anomaly. That alert would indicate a segmentation failure or misconfiguration that needs fixing. This continuous oversight helps prove that segmentation is effective (PCI assessors may ask for evidence that the segmentation was tested; NDR alerts or logs showing no unauthorized access attempts over months is strong evidence).&lt;/P&gt;
&lt;H4&gt;Secure Network Traffic and Encryption&lt;/H4&gt;
&lt;P&gt;Requirement 4.2 requires that cardholder data sent over networks is encrypted with strong cryptography. NDR tools can help enforce this by detecting unencrypted sensitive traffic or usage of weak protocols. Many NDR solutions will recognize when Primary Account Numbers (PANs) or Sensitive Authentication Data (SAD) appear in plaintext in network traffic and raise an alert. They also often track the SSL/TLS versions and cipher suites used in connections. For example, an NDR can alert if a server in the CDE is accepting TLS 1.0 or if any data is transmitted without encryption where encryption is expected.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/network-watcher/vnet-flow-logs-overview?tabs=Americas" target="_blank" rel="noopener"&gt;Azure VNET Flow Logs&lt;/A&gt; provide an “encryption flag” for flows when &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-encryption-overview" target="_blank" rel="noopener"&gt;VNET Encryption&lt;/A&gt; is used, which NDR or analytics can use to quickly identify non-encrypted channels. While the primary responsibility for encryption lies in configuration (enabling encryption at the application- (TLS) and infrastructure (VNET Encryption) layers), NDR provides verification. It detects PAN or SAD sent in the clear, and thus supports compliance with Requirement 4. If the NDR never or rarely alerts on cleartext, that’s evidence encryption is consistently applied; if it does alert, it allows quick remediation.&lt;/P&gt;
&lt;H4&gt;Incident Detection and Response&lt;/H4&gt;
&lt;P&gt;An incident response plan and processes for reacting to security events must be in place per Requirement 12.5. NDR significantly enhances an organization’s ability to detect and respond to incidents in a timely manner. By providing real-time alerts with rich context (like packet captures or detailed flow info), NDR ensures that when an intrusion or suspicious event happens, the security team is immediately notified with the information needed to act. With NDR integrated to alerting systems, companies can demonstrate that network alerts are automatically generated and investigated as part of their incident response program.&lt;BR /&gt;&lt;BR /&gt;For example, if NDR generates an alert about malware beaconing from a server, the analyst can respond via playbooks (possibly automated, as we’ll discuss with Sentinel) to isolate that server, and later documentation will show the alert and response timeline. This satisfies PCI’s expectation that you not only have monitoring (Req.10/11) but also act on it swiftly (Req. 12.10.5, which expects alerts to trigger the incident response process). Furthermore, the forensic data from NDR (like packet logs) will help in the investigation phase of incident response – determine what data might have been accessed, which systems were affected, etc., which is crucial for PCI breach reporting.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;NDR is a key sensor feeding the incident response process, and having it in place with documented procedures closes the loop on several PCI requirements (monitor, detect, respond).&lt;/P&gt;
&lt;H1&gt;Azure Native Tools for Enabling NDR&lt;/H1&gt;
&lt;P&gt;In Azure, implementing NDR starts with capturing the right data. Azure provides native tools to mirror network traffic and collect flow information, which NDR systems (or Azure’s own analytics) can then analyze. Key Azure-native components are Azure Virtual Network TAP, Virtual Network (VNET) Flow Logs, and Traffic Analytics.&lt;/P&gt;
&lt;H4&gt;Azure Virtual Network TAP&lt;/H4&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-tap-overview" target="_blank" rel="noopener"&gt;Virtual Network TAP (Terminal Access Point) &lt;/A&gt;&amp;nbsp;(VTAP) copies network traffic from source Virtual Machines to a collector or traffic analytics tool, running as a Network Virtual Appliance (NVA). &lt;STRONG&gt;VTAP creates a full copy of the traffic, including packet payload content.&lt;/STRONG&gt; Traffic collectors and analytics tools are &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-tap-overview#virtual-network-tap-partner-solutions" target="_blank" rel="noopener"&gt;3rd party partner products&lt;/A&gt;, amongst which are the major NDR solutions. VTAP is an agentless, cloud-native traffic tap at the Azure network infrastructure level. It is entirely out-of-band; it has no impact on the source VM's network performance and the source VM is unaware of the tap. Tapped traffic is VXLAN-encapsulated and delivered to the collector NVA, either in the same or a peered VNET as the source VMs.&lt;/P&gt;
&lt;P&gt;VTAP is crucial to building a PCI DSS compliant CDE in Azure: full visibility of all network traffic enables implementation of the IDS functionality specified in Requirement 11.5. All traffic involving cardholder data systems can be monitored: not only traffic to/from the internet, but also East-West traffic between VMs. By deploying VTAP on the subnets that make up the CDE, anything suspicious on those networks is seen. This helps meet the requirements of monitoring " ... at the perimeter of the CDE" and “ ... at critical points inside the CDE”, without needing agents on each VM.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure VTAP provides the raw network data pipeline needed for NDR. In a PCI audit, citing the use of VTAP plus an NDR appliance as evidence that “all network traffic is being captured and analyzed” is a strong compliance position.&lt;/P&gt;
&lt;H4&gt;Virtual Network Flow Logs&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/network-watcher/vnet-flow-logs-overview?tabs=Americas" target="_blank" rel="noopener"&gt;Virtual Network Flow Logs&lt;/A&gt; (VNET Flow Logs) capture &lt;STRONG&gt;IP traffic flow metadata&lt;/STRONG&gt; of traffic in a virtual network, which includes source- and destination IP addresses, Layer 4 (transport) protocol and port numbers, flow direction and state, and encryption status. Flow Logs also show whether the flow was allowed or denied by a Network Security Group (NSG) or a Security Admin Rule. VNET Flow Logs do not capture traffic content - they record who talks to whom, with all the details, but not what is said. Log records are written to a storage account in JSON format, and from there can be read for analysis by Azure Traffic Analytics and 3rd party analytics tools such as Security Information and Event Management (SIEM) and NDR solutions.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From a PCI perspective, VNET Flow Logs serve as a comprehensive audit trail of network activity. They show every connection to and from systems in the CDE including source, destination, and whether it was permitted or blocked. This supports Requirement 10 (Log and Monitor All Access) – retain these logs for the required 12 months as evidence all network access attempts are logged.&lt;/P&gt;
&lt;P&gt;During daily monitoring, these logs can be queried to find anomalies through Traffic Analytics or a SIEM. For example, a regular query would be: “show any flows from CDE subnet to external IPs not on the whitelist” – any results would indicate a potential policy violation or compromise. If NDR is the heart of real-time detection, flow logs are the record-keeper that ensures nothing slips by unrecorded. Even if an attacker stays under the radar of detection, flow logs later allow forensic analysis to trace their actions. Azure’s VNET flow logs being ubiquitous and simple to enable means organizations have little reason not to log all network traffic. It is a baseline best practice that also satisfies the PCI DSS logging mandate. Enabling flow logs and keeping them in Azure Storage with access controls fulfills PCI requirements around log integrity and access control. They essentially answer, “If an auditor asks to see who communicated with the DB server on June 1 at 3PM, can you show that?” – with flow logs, yes, you can.&lt;/P&gt;
&lt;H4&gt;Traffic Analytics&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/network-watcher/traffic-analytics?tabs=Americas" target="_blank" rel="noopener"&gt;Traffic Analytics&amp;nbsp;&lt;/A&gt; is an Azure service that &lt;STRONG&gt;processes Flow Logs to provide insights and visualizations&lt;/STRONG&gt;. Once VNET Flow Logs are enabled, Traffic Analytics can read the raw logs at 10 minute- or hourly intervals and process them into insightful information. This information is stored in a Azure Log Analytics workspace for further evaluation. Traffic Analytics includes ready-made dashboards in the Azure Portal and its consolidated flow information is available for evaluation through Kusto queries, and tools such as Azure Sentinel and third party SIEMs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Traffic Analytics will aggregate flows and show things like top talkers (top source/destination IPs), traffic distribution (ports, protocols), and importantly, flagged security issues. For example, it can identify if a VM has an open port to the internet that is unusual, or if there is traffic to an IP address that Microsoft Threat Intelligence marks as malicious (these show up as “MaliciousFlow” in the output). It can also highlight sudden changes in traffic volume or a high number of denied flows (potential port scan or attack attempts).&lt;/P&gt;
&lt;P&gt;Think of Traffic Analytics as a built-in basic NDR-lite or network SIEM for Azure: it won’t catch advanced threats, but it will definitely surface misconfigurations and obvious red flags. From a compliance standpoint, Traffic Analytics is useful for demonstrating proactive monitoring. Instead of showing an auditor raw JSON logs, demonstrate Traffic Analytics: e.g., “In the last week, these were the only external connections and all were expected, and no malicious IPs contacted.” It helps satisfy the requirement that logs and network events are reviewed daily, by providing an easy to interpret summary that can be checked at a glance. If something is noted (like an unexpected open port), this can be remediated as part of security operations, showing the auditor that not only do traffic is logged, it is analyzed and acted upon.&lt;/P&gt;
&lt;P&gt;It is important to note Traffic Analytics is &lt;STRONG&gt;not a full threat detection system&lt;/STRONG&gt; – it is rule-based and limited to what can be inferred from flow records (Layer 3/4 info). It does not inspect payloads (no Layer 7 analysis) and it may not catch subtler anomalies (e.g., data exfiltration hiding in allowed HTTPS traffic might not trigger any obvious threshold in flow stats). Therefore, while it is a great native feature and certainly helps with compliance reporting, for robust NDR one would use Traffic Analytics as a supplement to, not a replacement for, an advanced NDR platform. In Azure, many customers use Traffic Analytics for general network hygiene monitoring and feed its findings into Sentinel or a SIEM for follow-up.&lt;/P&gt;
&lt;P&gt;In summary, Azure’s native network monitoring tools lay the groundwork for NDR by &lt;STRONG&gt;capturing the necessary data:&lt;/STRONG&gt;&lt;BR /&gt;• &amp;nbsp; &amp;nbsp;Azure VTAP provides full-fidelity packet capture (the raw material for deep detection).&lt;BR /&gt;• &amp;nbsp; &amp;nbsp;VNET Flow Logs provide broad coverage of who talked to whom and when (excellent for audit and pattern analysis).&lt;BR /&gt;• &amp;nbsp; &amp;nbsp;Traffic Analytics provides immediate insights from those logs (great for compliance checks and basic anomaly spotting).&lt;/P&gt;
&lt;P&gt;The next step is feeding this data to powerful analytics engines to actually perform the “detection and response” – that’s where third-party NDR or advanced Azure services come into play.&lt;/P&gt;
&lt;H1&gt;Advanced Analysis with Third-Party NDR Solutions&lt;/H1&gt;
&lt;P&gt;Azure’s native capabilities collect the raw data, but &lt;STRONG&gt;effective threat detection&lt;/STRONG&gt; requires specialized analytics beyond what Azure provides. This is where third-party NDR solutions are indispensable. These solutions ingest the packet or flow data and use their own engines to detect threats like intrusions, malware traffic, or policy violations in real time.&lt;/P&gt;
&lt;P&gt;Third-party NDR platforms bring mature, cutting-edge detection algorithms that have been refined on large datasets and numerous environments. They often use a combination of machine learning (for anomaly detection) and signature/threat intelligence (for known threat detection). Azure’s Traffic Analytics or basic Defender for Cloud alerts might report, for instance, that a VM made an outbound connection on an unusual port, but a third-party NDR could dig deeper and say “that connection contained data patterns consistent with credit card numbers in clear text” or “this series of packets matches the behavior of the Cobalt Strike beacon malware.”&lt;/P&gt;
&lt;P&gt;NDR solutions do deep packet inspection (DPI) and behavioral analysis to catch subtle threats and minimize false positives. For organizations in Financial Services, targeted by &lt;A class="lia-external-url" href="https://en.wikipedia.org/wiki/Advanced_persistent_threat" target="_blank" rel="noopener"&gt;Advanced Persistent Threats&lt;/A&gt; and sophisticated attackers, this level of insight is crucial. It is also necessary for meeting the spirit of PCI’s IDS requirement – a smarter IDS means fewer missed intrusions. Many third-party NDRs also come with features like user/device identification, threat chain visualization, and built-in compliance reporting specific to PCI or other standards.&lt;/P&gt;
&lt;P&gt;Microsoft has worked with numerous security vendors to ensure their NDR solutions work seamlessly in Azure. The &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-tap-overview#virtual-network-tap-partner-solutions" target="_blank" rel="noopener"&gt;Virtual Network TAP partner list&lt;/A&gt; includes vendors in two broad categories: &lt;STRONG&gt;network packet brokers&lt;/STRONG&gt; and &lt;STRONG&gt;security analytics/NDR solutions&lt;/STRONG&gt;.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Network Packet Brokers&lt;/STRONG&gt; (e.g., Gigamon, Keysight)&lt;/EM&gt;: These tools focus on aggregating, filtering, and distributing the tapped traffic. Their strength is handling large volumes of data and directing it efficiently to multiple analysis tools. For instance, Gigamon’s GigaVUE for Azure can take the VTAP stream, filter out irrelevant traffic, and feed it to both an NDR and a performance monitoring tool simultaneously. The advantage is scalability and flexibility; the limitation is that packet brokers themselves typically don’t do deep threat analysis – they are complementary infrastructure.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Security Analytics / NDR Platforms&lt;/STRONG&gt; (e.g., Darktrace, Vectra, ExtraHop, Corelight, Fortinet, Netscout, Trend Micro, Arista, etc.)&lt;/EM&gt;: These are the actual brains performing threat detection. Each has its strengths:&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;AI-Driven NDR&lt;/STRONG&gt;: Solutions like &lt;A class="lia-external-url" href="https://www.darktrace.com/products/network" target="_blank" rel="noopener"&gt;&lt;EM&gt;Darktrace&lt;/EM&gt;&lt;/A&gt; and &lt;A class="lia-external-url" href="https://www.vectra.ai/" target="_blank" rel="noopener"&gt;&lt;EM&gt;Vectra AI&lt;/EM&gt;&lt;/A&gt; emphasize machine learning to establish a baseline of normal network behavior and then detect anomalies. Darktrace, for example, uses unsupervised AI to identify subtle deviations that could indicate a threat (like a device that suddenly starts connecting to a new domain at odd hours). These are good at catching novel or insider threats. They often come with insightful visualization of network patterns. A possible limitation is they can sometimes produce alerts that require expert interpretation (why did the AI flag this?), but vendors have improved in providing explainability.&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Protocol/Behavioral NDR&lt;/STRONG&gt;: &lt;A class="lia-external-url" href="https://www.extrahop.com/resources/datasheets/extrahop-revealx" target="_blank" rel="noopener"&gt;&lt;EM&gt;ExtraHop Reveal(x)&lt;/EM&gt;&lt;/A&gt;, &lt;A class="lia-external-url" href="https://corelight.com/products/zeek" target="_blank" rel="noopener"&gt;&lt;EM&gt;Corelight (Zeek)&lt;/EM&gt;&lt;/A&gt; and &lt;A class="lia-external-url" href="https://www.netscout.com/solutions/omnis-security" target="_blank" rel="noopener"&gt;&lt;EM&gt;Netscout Omnis&lt;/EM&gt;&lt;/A&gt; focus on deep packet and protocol analysis. ExtraHop decodes dozens of protocols (DNS, database protocols, cloud service APIs) in real-time and can detect specific issues like database exfiltration or use of deprecated TLS versions. It was even audited to exceed PCI IDS requirements by using behavior-based detections. Corelight uses the open-source Zeek (Bro) engine to log detailed metadata about traffic, which can be incredibly rich for investigation and custom detection scripts. Strength: very detailed, low false positives when tuned; limitation: may require more tuning or skilled users to get the most out of raw data (Corelight, for example, gives you great data but you might still need a SIEM or Splunk queries to raise the alerts).&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Integrated Ecosystem Solutions&lt;/STRONG&gt;: &lt;EM&gt;Fortinet&lt;/EM&gt; and &lt;EM&gt;Arista&lt;/EM&gt; are examples where NDR is part of a broader security ecosystem. Fortinet’s &lt;A class="lia-external-url" href="https://www.fortinet.com/products/network-detection-and-response" target="_blank" rel="noopener"&gt;FortiNDR&lt;/A&gt; is attractive if you already use Fortinet, as the logs and management tie into FortiAnalyzer and you can leverage FortiGuard threat intel. A FortiGate VM can receive mirrored traffic and apply its IPS/IDS signatures and even ML-based detections. Arista Networks (which acquired Awake Security) offers &lt;A class="lia-external-url" href="https://www.arista.com/en/products/network-detection-and-response/" target="_blank" rel="noopener"&gt;Arista NDR&lt;/A&gt; that’s known for entity-centric threat hunting – it builds profiles of devices on the network and can identify rogue or compromised systems by their traffic patterns. These integrated solutions often pair well with their own hardware or cloud frameworks (Fortinet with its firewalls, Arista with its switches), and can sometimes take automated actions (e.g., instruct a FortiGate to block an IP upon detection).&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Managed NDR Services&lt;/STRONG&gt;: &lt;A class="lia-external-url" href="https://www.esentire.com/how-we-do-it/signals/mdr-for-network" target="_blank" rel="noopener"&gt;&lt;EM&gt;eSentire MDR&lt;/EM&gt;&lt;/A&gt; for example provides technology plus a 24/7 human SOC. They deploy sensors that leverage VTAP (they are a VTAP partner) and their analysts review and respond to every alert. The strength is that you get expert eyes on everything (great for meeting PCI’s requirement that alerts are promptly addressed), and the weakness is relying on a third-party – though for many, outsourcing this is prudent.&lt;/P&gt;
&lt;P&gt;In practice, an organization in the Financial Services Industry will choose a combination of these based on the specifics of their environment, their compliance needs and existing tools and capabilities. Some might use a packet broker and an NDR together (e.g., Gigamon to optimize traffic flow and ExtraHop to analyze it). Others might use an all-in-one virtual appliance from a vendor like Vectra that directly handles ingestion and analysis.&lt;/P&gt;
&lt;H1&gt;Sentinel: Complimentary to NDR&amp;nbsp;&lt;/H1&gt;
&lt;P&gt;Microsoft Sentinel is Azure’s native &lt;STRONG&gt;Security Information and Event Management (SIEM)&lt;/STRONG&gt; and orchestration platform. It aggregates logs from many sources runs analytics on them. It is a powerful tool for security monitoring, but it is not specialized for network traffic analysis in the way NDR solutions are.&lt;/P&gt;
&lt;P&gt;Let's look at how Sentinel factors into the NDR/compliance equation:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Log Centralization and Correlation:&lt;/STRONG&gt; Sentinel ingests Azure VNET Flow Logs and Azure Firewall- and third party firewall logs, as well as alerts from NDR platforms, and any other relevant data (event logs from servers, Azure AD logs, etc.), and aggregates and correlates these events. This is very valuable in daily operations and in investigations - it suppresses the noise, surfacing meaningful, actionable events to security staff. For PCI DSS compliance, having a central SIEM like Sentinel helps satisfy the requirement that &lt;STRONG style="color: rgb(30, 30, 30);"&gt;logged events are aggregated and reviewed&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Built-in Analytics for Network Events:&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt; Sentinel provides default analytics rules and allows custom rule creation using Kusto Query Language (KQL). For network monitoring, one could create rules such as:&lt;/SPAN&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; “Alert if more than 50 denied flows hit a CDE server in 5 minutes” (indicating a possible attack).&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; “Alert if any flow originates from an IP known in Threat Intelligence to be malicious” (Sentinel integrates threat intel feeds).&lt;/P&gt;
&lt;P class="lia-indent-padding-left-60px"&gt;o&amp;nbsp;&amp;nbsp; “Alert if a normally internal-only VM initiates outbound traffic” (indicating a potentially compromised server).&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;These can catch some intrusion attempts. However, setting up robust network anomaly detection in Sentinel requires effort and expertise. Out-of-the-box, Sentinel does not come with a comprehensive library of network threat detection rules – it might have a few (like detecting port scan patterns or spikes in traffic) but not the depth of an NDR product.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;No Deep Packet Inspection:&lt;/STRONG&gt; Sentinel &lt;STRONG&gt;cannot analyze raw packet payloads&lt;/STRONG&gt; or protocol details beyond what is in logs. It relies on sources like flow logs which only have IP/port info, or on other products (like an NDR or IDS) to generate an alert that Sentinel then ingests. This is a fundamental limitation – for example, Sentinel by itself would not be able to detect that an SQL query contained a suspicious UNION SELECT (something an NDR inspecting the SQL protocol might catch). Therefore, Sentinel alone, without something feeding it detailed alerts, would likely miss many attack techniques that do not manifest in log data.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Alert Fatigue and Tuning:&lt;/STRONG&gt; If one tried to use Sentinel as the primary IDS by writing custom rules on flow logs, one might end up with a lot of false positives or noise that needs tuning. NDR vendors invest heavily in fine-tuning detections to be as accurate as possible in network context (for example, distinguishing a legitimate network scan by a vulnerability management tool from a malicious scan by an attacker). With Sentinel, that tuning burden falls on the security team. While Sentinel’s analytics can be quite sophisticated, practically, in-house development of NDR logic in Sentinel is reinventing the wheel.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Compliance Sufficiency:&lt;/STRONG&gt; Could Sentinel alone satisfy PCI DSS requirements for IDS? In theory, if configured to ingest all relevant logs and set up with analytics to alert on suspicious network events, Sentinel might convince an assessor. For example, using Azure Firewall or a third-party firewall that outputs logs to Sentinel, and Sentinel alerting on those logs (like on intrusion signatures those firewalls catch), might tick the box. However,&amp;nbsp;&lt;STRONG&gt;most auditors expect a dedicated IDS/IPS or NDR technology&lt;/STRONG&gt; rather than a custom SIEM query solution. The PCI DSS 4.0.1 guidance explicitly talks about IDS/IPS having up-to-date signatures or detection capabilities for common threats – Sentinel by itself doesn’t maintain a library of network attack signatures; that’s not its function. Moreover, Requirement 11.5.1 basically assumes a distinct IDS/IPS tool. Sentinel would likely be viewed as &lt;STRONG&gt;supplemental&lt;/STRONG&gt; – great for aggregating alerts, but not the generator of those alerts.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Incident Response Automation:&lt;/STRONG&gt; Sentinel &lt;STRONG&gt;is extremely valuable&lt;/STRONG&gt; in orchestrating responses. It can trigger playbooks (with Logic Apps) based on alerts. If an NDR alert comes in (or a custom Sentinel alert triggers), Sentinel can automate actions: isolate a VM by applying a new NSG, disable a user account in Azure AD,&amp;nbsp; send notifications to the team. Sentinel can log the whole process for audit. Having such automation shows you not only detect, but &lt;EM&gt;respond swiftly and consistently&lt;/EM&gt; – aligning with PCI’s incident response testing requirements. Sentinel also retains incident history, which helps in the PCI requirement for reviewing security incidents and responses as part of annual processes.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In conclusion, Sentinel is best seen as &lt;STRONG&gt;complimentary to NDR&lt;/STRONG&gt; rather than as a complete NDR solution in itself.&lt;/P&gt;
&lt;P&gt;It is excellent in terms of log management and initiating responses (covering aspects of Requirements 10 and 12), but on its own it doesn’t fulfill the technical depth of Requirement 11’s intrusion detection. It’s best thought of as the “nerve center” that an NDR (the “sensory organ”) feeds into. In an ideal Azure PCI deployment, you would use Sentinel alongside an NDR: the NDR detects the nuanced network threats and sends alerts to Sentinel; Sentinel then correlates those with other info and kicks off response actions.&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Microsoft Defender for Cloud and PCI DSS Compliance&lt;/H1&gt;
&lt;P&gt;Defender for Cloud is Azure’s &lt;STRONG&gt;Cloud Security Posture Management (CSPM)&lt;/STRONG&gt; and &lt;STRONG&gt;Cloud Workload Protection Platform (CWPP)&lt;/STRONG&gt;. It continuously assesses your Azure (and multi-cloud) resources against security best practices and provides threat protection via various “Defender” plans (for VMs, databases, storage, etc.). When it comes to PCI DSS compliance, Defender for Cloud is a useful service because it can&amp;nbsp;&lt;STRONG&gt;map your Azure environment to PCI requirements and help automate compliance checking&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Here’s how Defender for Cloud contributes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Regulatory Compliance Dashboard&lt;/STRONG&gt; – Defender for Cloud has a built-in compliance dashboard where you can enable the PCI DSS v4.0.1 standard for your Azure environment, which can span multiple subscriptions. It shows a control-by-control assessment of compliance, based on Azure Policy and Defender scans. For example, it will check that VMs have disk encryption enabled, that Key Vaults have soft delete enabled, that network watchers are enabled, etc., mapping to various PCI controls. It won’t automatically check every single PCI requirement (some require manual processes), but it covers those that can be programmatically assessed. This is extremely helpful for preparing for an audit – you get a &lt;STRONG&gt;compliance score&lt;/STRONG&gt;, see where gaps are, then remediate them. The dashboard essentially translates Azure’s security state into PCI language, saving a lot of manual effort. A practical example: for network-specific controls, it might check that NSGs are present on subnets, or that flow logging is enabled (to meet monitoring requirements).&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Continuous Configuration Monitoring&lt;/STRONG&gt; – Many PCI requirements are about having proper configurations (e.g., secure configurations for systems, firewalls in place, no default passwords). Defender for Cloud continuously monitors Azure resources and generates &lt;STRONG&gt;security recommendations&lt;/STRONG&gt; when something deviates from best practice (many of which align with PCI controls). For instance, if a critical VM in the CDE is missing an NSG or has a rule allowing “Any” source, Defender for Cloud will flag that as a recommendation to fix – effectively catching a potential PCI violation early. It also checks for things like missing vulnerability assessments on SQL, or unencrypted traffic on storage, etc. By following Defender’s recommendations, you inherently move toward PCI compliance. This addresses the preventive side of PCI – e.g., Requirement 1 (firewall configuration) and Requirement 2 (secure system configurations) are supported by these continuous assessments.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Threat Detection and Alerts:&lt;/STRONG&gt; Defender for Cloud includes &lt;STRONG&gt;Defender plans&lt;/STRONG&gt; for various resources that provide threat detection. For example, &lt;EM&gt;Defender for Servers&lt;/EM&gt; monitors VMs for suspicious processes, malware, and also does &lt;STRONG&gt;file integrity monitoring (FIM)&lt;/STRONG&gt;. FIM is actually a PCI Requirement (11.5) – you must monitor critical system files for changes. By enabling Defender for Servers on your Azure VMs, you fulfill this, as it uses the Defender for Endpoint agent to track file changes and generate alerts if, say, system binaries are modified unexpectedly. Additionally, Defender for Servers and other plans generate network-related security alerts: e.g., “Potential malicious outbound connection from VM” or “Port scanning activity detected from VM.” These come from analyzing the VM’s telemetry and network flows. While not as comprehensive as a dedicated NDR, these built-in alerts offer a baseline IDS capability. For example, if a VM in the CDE starts port scanning others, Defender for Cloud will flag it, which covers the requirement that you should detect internal reconnaissance. There are also alerts like “Suspicious SQL query activity” for Azure SQL or “Anomalous access pattern” for storage accounts. All Defender for Cloud alerts appear in its &lt;STRONG&gt;Security Alerts&lt;/STRONG&gt; blade, and can be forwarded to Sentinel. From a PCI perspective, having these alerts means you have multiple layers of monitoring (host-level and network-level), which is ideal. It demonstrates that even if an attack doesn’t trigger an NDR network alert, it might trigger a host alert that you’re also watching.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Adaptive Network Hardening:&lt;/STRONG&gt; This feature of Defender for Cloud looks at your NSG rules and actual traffic and recommends hardening (like “these IPs are the only ones seen accessing your VM, consider tightening NSG to only those”). By following these, you reduce your attack surface, which indirectly helps comply with PCI network access restrictions. It is not a mandated control, but it’s a good practice.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Vulnerability Management:&lt;/STRONG&gt; Though not directly NDR, Defender for Cloud’s integrated vulnerability scanning (through Qualys or Defender’s scanner) helps satisfy PCI Requirement 11.3 (regular vulnerability scans) and Requirement 6 (address vulnerabilities). This is complementary to NDR – one stops attacks, the other prevents them by patching. It’s worth noting in compliance documentation that you use these Azure-native capabilities to meet various requirements.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In summary, &lt;STRONG&gt;Defender for Cloud acts as a compliance and security safety net&lt;/STRONG&gt;. It ensures you have the right security controls configured (so that your NDR has a solid foundation to monitor), and it provides additional threat detection on Azure resources. For PCI DSS 4.0.1, which has many controls beyond just network monitoring, Defender for Cloud helps with:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement 5&lt;/STRONG&gt; (anti-malware) by monitoring for malware on VMs.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement 6/11&lt;/STRONG&gt; (vulnerability management and scanning) via its vulnerability assessments.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement 10&lt;/STRONG&gt; (log retention) by advising enabling of diagnostic logs and storing them; and it keeps its alerts logs.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement 11.5&lt;/STRONG&gt; (change detection) via File Integrity Monitoring on servers.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement 8&lt;/STRONG&gt; (MFA, principle of least privilege) through Azure AD and Identity recommendations.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement 12&lt;/STRONG&gt; (security policy and monitoring) by giving a centralized compliance view and integrating with incident workflows.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;However, like Sentinel, Defender for Cloud is not a specialized NDR. Its network alerts are generally simpler (e.g., known malicious IP or basic port scan detection) and &lt;STRONG&gt;should not be solely relied on to meet the IDS requirement&lt;/STRONG&gt;. They complement a true NDR or firewall IDS. A strong strategy is: &lt;EM&gt;use Defender for Cloud to get your Azure environment in a secure, compliant state (so all baseline controls are green), and use NDR to actively monitor and defend that environment from sophisticated attacks.&lt;/EM&gt; The synergy of the two covers a vast swath of PCI requirements in a largely automated fashion.&lt;/P&gt;
&lt;H1&gt;Bringing it all together&lt;/H1&gt;
&lt;P&gt;The Financial Services Industry operates under intense security scrutiny, and PCI DSS v4.0.1 raises the bar further by requiring proactive and continuous network monitoring. &lt;STRONG&gt;Network Detection and Response (NDR)&lt;/STRONG&gt; is a key technology that helps meet these challenges by providing advanced intrusion detection and full visibility into network traffic.&lt;/P&gt;
&lt;P&gt;In the context of PCI DSS:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;NDR ensures that all access to networks carrying cardholder data is monitored in real-time (fulfilling Requirement 10’s logging/monitoring mandate with automation).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;It serves as the IDS/IPS required to detect malicious network activity (addressing Requirement 11’s call for intrusion detection).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;It supports network segmentation by verifying that segmentation is not breached and alerting on any anomalous connection (thereby underpinning the isolation that PCI strongly recommends for scope reduction).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;It feeds into a robust incident response workflow, enabling the organization to react swiftly to suspected breaches (covering the intent of Requirement 12.10 on incident response).&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In Azure, achieving a PCI-compliant NDR setup is very feasible using a combination of &lt;STRONG&gt;Azure’s native capabilities and partner solutions&lt;/STRONG&gt;. Azure provides the plumbing (VTAP for full packet mirror, VNET Flow Logs for thorough logging, Traffic Analytics for basic analysis) and the integration points (connecting to Sentinel, Defender for Cloud, etc.). Third-party NDR platforms bring in the sophisticated analysis that can identify threats with high accuracy, something that Azure’s basic tools alone might not catch. By leveraging both, organizations in Financial Services can create a layered defense:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Defender for Cloud&lt;/STRONG&gt; to maintain strong security posture and baseline compliance (it makes sure configurations are correct and provides some threat detection and compliance mapping).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Azure vTAP + Flow Logs&lt;/STRONG&gt; to ensure no network activity goes unnoticed.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Advanced NDR&lt;/STRONG&gt; to actually inspect traffic deeply and spot intrusions or policy violations in real-time.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Sentinel&lt;/STRONG&gt; to unify the monitoring, correlate across sources, and automate response, serving as the command center that ensures every alert is handled (thus meeting PCI’s expectation of prompt action and thorough monitoring records).&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This layered approach not only checks the compliance boxes but also materially improves security. It demonstrates the principle that &lt;STRONG&gt;“compliance is the floor, not the ceiling”&lt;/STRONG&gt; – the organization implements NDR not just to satisfy PCI requirements but to actively protect critical data.&lt;/P&gt;
&lt;P&gt;For auditors and stakeholders, the combination of evidence from NDR, Azure logs, and Defender for Cloud provides confidence that the network is secure.&lt;/P&gt;
&lt;P&gt;In conclusion, NDR is important in the financial sector for both &lt;STRONG&gt;security and compliance&lt;/STRONG&gt;. PCI DSS 4.0.1 explicitly or implicitly requires capabilities that an NDR delivers (continuous monitoring, intelligent alerting, quick incident containment). Implementing NDR in Azure using the described architecture enables organizations in Financial Services to meet those requirements effectively. They gain peace of mind that their cloud cardholder data environment is under vigilant watch, and they stand on solid ground when undergoing PCI assessments. As threats are evolving and compliance standards are tightening, this blend of Azure technology and NDR solutions exemplifies best practice: using the full power of cloud and AI-driven security to protect sensitive financial data and maintain customer trust.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="#community--1-_ftnref1" target="_blank" rel="noopener" name="_ftn1"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="#community--1-_ftnref1" target="_blank" rel="noopener" name="_ftn1"&gt;&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Dec 2025 08:31:59 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-networking-blog/network-detection-and-response-ndr-in-financial-services/ba-p/4472515</guid>
      <dc:creator>Marc de Droog</dc:creator>
      <dc:date>2025-12-18T08:31:59Z</dc:date>
    </item>
  </channel>
</rss>

