<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.simonpainter.com/updates</id>
    <title>Simon Painter Blog</title>
    <updated>2026-06-03T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://www.simonpainter.com/updates"/>
    <subtitle>Simon Painter Blog</subtitle>
    <icon>https://www.simonpainter.com/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Generally Available: Managed virtual network for evaluations in Microsoft Foundry]]></title>
        <id>https://www.simonpainter.com/updates/launched-generally-available-managed-virtual-network-for-evaluations-in-microsoft-foundry</id>
        <link href="https://www.simonpainter.com/updates/launched-generally-available-managed-virtual-network-for-evaluations-in-microsoft-foundry"/>
        <updated>2026-06-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Microsoft has made managed virtual network support for evaluations in Microsoft Foundry generally available. You can now keep evaluation workloads inside a Microsoft-managed private network boundary without having to build and run your own virtual network just to get started.]]></summary>
        <content type="html"><![CDATA[<p>Microsoft has made managed virtual network support for evaluations in Microsoft Foundry generally available. You can now keep evaluation workloads inside a Microsoft-managed private network boundary without having to build and run your own virtual network just to get started.</p>
<p>If you work in a regulated environment, or you simply want tighter control of outbound traffic, this is a useful step. It gives you a cleaner path to private connectivity for evaluation runs, while still letting you use Foundry's hosted evaluation features.</p>
<p>The nice part is that Microsoft handles most of the plumbing. You still choose the isolation mode and approve access to the services you need, but you don't have to manage the underlying network estate yourself.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-is">What it is<a href="https://www.simonpainter.com/updates/launched-generally-available-managed-virtual-network-for-evaluations-in-microsoft-foundry#what-it-is" class="hash-link" aria-label="Direct link to What it is" title="Direct link to What it is" translate="no">​</a></h2>
<p>Managed virtual network creates a Microsoft-managed network boundary around the Foundry account. For evaluations, that means outbound traffic can stay inside a controlled path instead of falling back to broad internet access.</p>
<p>The service can use managed private endpoints to reach dependencies such as Azure Storage, Azure Cosmos DB, and Azure AI Search. Those private endpoints are managed by Microsoft, so you won't see customer-visible NICs appear in your own subscription.</p>
<p>Microsoft announced the launch here: <a href="https://azure.microsoft.com/updates?id=564402" target="_blank" rel="noopener noreferrer" class="">Generally Available: Managed virtual network for evaluations in Microsoft Foundry</a>. The main setup guide is here: <a href="https://learn.microsoft.com/azure/foundry/how-to/managed-virtual-network" target="_blank" rel="noopener noreferrer" class="">Configure managed virtual network for Microsoft Foundry projects</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="who-should-care">Who should care<a href="https://www.simonpainter.com/updates/launched-generally-available-managed-virtual-network-for-evaluations-in-microsoft-foundry#who-should-care" class="hash-link" aria-label="Direct link to Who should care" title="Direct link to Who should care" translate="no">​</a></h2>
<p>This matters most if you're running evaluation jobs against models or agents that touch private data, internal services, or tightly controlled storage accounts. It is also useful if your security team already expects private endpoints and approved egress paths for cloud services.</p>
<p>I think this will land well with platform teams who want Foundry evaluations but don't want the overhead of designing a full bring-your-own virtual network for every project. It is a bit like renting a secure room instead of building a new office block just to hold one meeting.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-use-it">How to use it<a href="https://www.simonpainter.com/updates/launched-generally-available-managed-virtual-network-for-evaluations-in-microsoft-foundry#how-to-use-it" class="hash-link" aria-label="Direct link to How to use it" title="Direct link to How to use it" translate="no">​</a></h2>
<p>At a high level, you create the Foundry account with managed network injection enabled, assign the Foundry managed identity the right approval role, then choose the outbound mode for the managed network.</p>
<p>For teams that want the tightest egress control, <code>allow_only_approved_outbound</code> is the interesting option. In that mode, Foundry creates required outbound rules for core dependencies, including private endpoints for Storage, Cosmos DB, and AI Search, plus service tags for Azure Active Directory and Azure Machine Learning for the evaluations catalogue.</p>
<p>Here's a simple Azure CLI example based on the Microsoft docs:</p>
<div class="language-azurecli codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-azurecli codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">az rest --method PUT \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.CognitiveServices/accounts/{account-name}?api-version=2026-03-01" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --body '{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "location": "{region}",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "kind": "AIServices",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "sku": { "name": "S0" },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "identity": { "type": "SystemAssigned" },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "properties": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      "allowProjectManagement": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      "customSubDomainName": "{account-name}",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      "networkInjections": [</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          "scenario": "agent",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          "subnetArmId": "",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          "useMicrosoftManagedNetwork": true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">az cognitiveservices account managed-network create \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --resource-group {resource-group} \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --name {account-name} \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --managed-network allow_only_approved_outbound \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --firewall-sku Standard</span><br></span></code></pre></div></div>
<p>After that, run your evaluations in the usual way with the Foundry SDK. The cloud evaluation guide is here if you want the Python workflow: <a href="https://learn.microsoft.com/azure/foundry/how-to/develop/cloud-evaluation" target="_blank" rel="noopener noreferrer" class="">Run evaluations in the cloud by using the Microsoft Foundry SDK</a>.</p>
<p>If you prefer infrastructure as code, Microsoft has sample templates for both <a href="https://github.com/microsoft-foundry/foundry-samples/tree/main/infrastructure/infrastructure-setup-bicep/18-managed-virtual-network" target="_blank" rel="noopener noreferrer" class="">Bicep</a> and <a href="https://github.com/microsoft-foundry/foundry-samples/tree/main/infrastructure/infrastructure-setup-terraform/18-managed-virtual-network" target="_blank" rel="noopener noreferrer" class="">Terraform</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gotchas-and-limits">Gotchas and limits<a href="https://www.simonpainter.com/updates/launched-generally-available-managed-virtual-network-for-evaluations-in-microsoft-foundry#gotchas-and-limits" class="hash-link" aria-label="Direct link to Gotchas and limits" title="Direct link to Gotchas and limits" translate="no">​</a></h2>
<p>There are a few catches worth knowing up front. The network injection settings must be present when you create the Foundry account. You can't bolt them on later.</p>
<p>The isolation modes are also not fully interchangeable. Once you configure <code>allow_internet_outbound</code>, you can't switch that resource back to disabled. If you configure <code>allow_only_approved_outbound</code>, you can't later change it to <code>allow_internet_outbound</code>.</p>
<p>If you add FQDN outbound rules, Foundry creates a managed Azure Firewall and you pay for it. Those FQDN rules only support ports 80 and 443. You also can't bring your own firewall to the managed network model.</p>
<p>One more practical point: if you send evaluation or trace data to Application Insights, you may need outbound FQDN rules for <code>settings.sdk.monitor.azure.com</code>, <code>*.livediagnostics.monitor.azure.com</code>, and <code>*.in.applicationinsights.azure.com</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quick-takeaway">Quick takeaway<a href="https://www.simonpainter.com/updates/launched-generally-available-managed-virtual-network-for-evaluations-in-microsoft-foundry#quick-takeaway" class="hash-link" aria-label="Direct link to Quick takeaway" title="Direct link to Quick takeaway" translate="no">​</a></h2>
<p>This is a solid update for anyone who wants to evaluate AI workloads in Foundry without leaving networking as an afterthought. You get a safer default, less network setup to own, and a clearer path to using evaluations in environments that care about private connectivity and controlled egress.</p>
<p>If I were already using Foundry evaluations and had been holding back because of network concerns, I would take another look now.</p>]]></content>
        <author>
            <name>Simon Painter</name>
        </author>
        <category label="azure" term="azure"/>
        <category label="ai" term="ai"/>
        <category label="networks" term="networks"/>
        <category label="security" term="security"/>
        <category label="cloud" term="cloud"/>
        <category label="automation" term="automation"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Generally Available: Azure Virtual Network default limits increased for NSGs and route tables]]></title>
        <id>https://www.simonpainter.com/updates/generally-available-azure-virtual-network-updates-default-limits-increased-for-nsgs-and-route-tables</id>
        <link href="https://www.simonpainter.com/updates/generally-available-azure-virtual-network-updates-default-limits-increased-for-nsgs-and-route-tables"/>
        <updated>2026-05-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Microsoft has raised the default Azure Virtual Network limits for both Network Security Groups (NSGs) and route tables. This is now generally available, so you get the new limits without opening a support request.]]></summary>
        <content type="html"><![CDATA[<p>Microsoft has raised the default Azure Virtual Network limits for both Network Security Groups (NSGs) and route tables. This is now generally available, so you get the new limits without opening a support request.</p>
<p>For teams running large hub-and-spoke estates, or anyone segmenting traffic with lots of explicit routes and rules, this removes a common scaling pain. You can keep cleaner designs with fewer workarounds.</p>
<p>The new defaults are 2,000 rules per NSG, up to 6,000 addresses or ports in an NSG rule, 1,000 routes per route table, and 600 route tables per subscription by default.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-is">What it is<a href="https://www.simonpainter.com/updates/generally-available-azure-virtual-network-updates-default-limits-increased-for-nsgs-and-route-tables#what-it-is" class="hash-link" aria-label="Direct link to What it is" title="Direct link to What it is" translate="no">​</a></h2>
<p>This update increases baseline Virtual Network scale limits that many of us hit during growth phases. In plain terms, Azure now gives more room for security policy and routing logic before you need redesigns.</p>
<p>Microsoft announced this as generally available here: <a href="https://azure.microsoft.com/updates?id=562695" target="_blank" rel="noopener noreferrer" class="">Azure Virtual Network updates, default limits increased for NSGs and route tables</a>.</p>
<p>You can also validate the live platform limits in the official limits page: <a href="https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-networking-limits" target="_blank" rel="noopener noreferrer" class="">Azure networking limits</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="who-should-care">Who should care<a href="https://www.simonpainter.com/updates/generally-available-azure-virtual-network-updates-default-limits-increased-for-nsgs-and-route-tables#who-should-care" class="hash-link" aria-label="Direct link to Who should care" title="Direct link to Who should care" translate="no">​</a></h2>
<p>If you manage enterprise landing zones, shared services VNets, or centralised inspection patterns, this one matters. These are the environments where NSG and UDR counts can grow quickly.</p>
<p>I also think this helps platform teams that support many app teams. It reduces the need to split resources purely to avoid old ceiling values.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gotchas-and-limits">Gotchas and limits<a href="https://www.simonpainter.com/updates/generally-available-azure-virtual-network-updates-default-limits-increased-for-nsgs-and-route-tables#gotchas-and-limits" class="hash-link" aria-label="Direct link to Gotchas and limits" title="Direct link to Gotchas and limits" translate="no">​</a></h2>
<p>Higher limits do not remove design trade-offs. Very large NSGs can still be harder to review, and giant route tables can still increase operational complexity.</p>
<p>I would still keep policy grouped by purpose, keep naming clear, and avoid overloading single objects just because the limit is higher.</p>
<p>Also remember that related services have their own constraints. Always check adjacent limits before you consolidate too aggressively.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quick-takeaway">Quick takeaway<a href="https://www.simonpainter.com/updates/generally-available-azure-virtual-network-updates-default-limits-increased-for-nsgs-and-route-tables#quick-takeaway" class="hash-link" aria-label="Direct link to Quick takeaway" title="Direct link to Quick takeaway" translate="no">​</a></h2>
<p>This is a useful quality-of-life update for Azure networking. You get more default scale for NSGs and route tables, which gives you cleaner growth paths and fewer forced workarounds.</p>
<p>If you hit old limits in the past, this is a good time to revisit those designs and simplify where it makes sense.</p>]]></content>
        <author>
            <name>Simon Painter</name>
        </author>
        <category label="azure" term="azure"/>
        <category label="networks" term="networks"/>
        <category label="security" term="security"/>
        <category label="cloud" term="cloud"/>
        <category label="architecture" term="architecture"/>
        <category label="troubleshooting" term="troubleshooting"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Public Preview: Summarized advertised gateway prefixes for route advertisement]]></title>
        <id>https://www.simonpainter.com/updates/public-preview-summarized-advertised-gateway-prefixes-for-route-advertisement</id>
        <link href="https://www.simonpainter.com/updates/public-preview-summarized-advertised-gateway-prefixes-for-route-advertisement"/>
        <updated>2026-05-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Microsoft has put summarized advertised gateway prefixes into public preview for Azure hybrid gateways. In plain terms, you can now tell Azure to advertise a smaller, cleaner set of CIDRs to on-prem instead of every hub and spoke prefix.]]></summary>
        <content type="html"><![CDATA[<p>Microsoft has put <strong>summarized advertised gateway prefixes</strong> into public preview for Azure hybrid gateways. In plain terms, you can now tell Azure to advertise a smaller, cleaner set of CIDRs to on-prem instead of every hub and spoke prefix.</p>
<p>This matters when your hub-and-spoke estate gets large and your route table starts to look like a junk drawer. Fewer advertised prefixes can reduce operational noise and help you stay under ExpressRoute advertised prefix limits.</p>
<p>The update applies to Azure VPN Gateway and ExpressRoute Gateway scenarios where route advertisement scale and control are both pain points.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-is">What it is<a href="https://www.simonpainter.com/updates/public-preview-summarized-advertised-gateway-prefixes-for-route-advertisement#what-it-is" class="hash-link" aria-label="Direct link to What it is" title="Direct link to What it is" translate="no">​</a></h2>
<p>Azure added support for a virtual network property called <code>summarizedGatewayPrefixes</code>. You define one or more aggregated CIDR blocks on the gateway VNet, and Azure advertises those summaries to on-prem BGP peers.</p>
<p>By default, Azure advertises the hub address space plus peered spoke address spaces. With summarized prefixes configured, Azure advertises your summary list instead and suppresses covered spoke prefixes.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="who-should-care">Who should care<a href="https://www.simonpainter.com/updates/public-preview-summarized-advertised-gateway-prefixes-for-route-advertisement#who-should-care" class="hash-link" aria-label="Direct link to Who should care" title="Direct link to Who should care" translate="no">​</a></h2>
<p>If you run hybrid networking with hub-and-spoke in Azure, this is for you. It is most useful when:</p>
<ul>
<li class="">you are close to ExpressRoute advertised prefix limits</li>
<li class="">you have lots of spokes and want a cleaner on-prem routing view</li>
<li class="">you want tighter control over what Azure advertises upstream</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gotchas-and-limits">Gotchas and limits<a href="https://www.simonpainter.com/updates/public-preview-summarized-advertised-gateway-prefixes-for-route-advertisement#gotchas-and-limits" class="hash-link" aria-label="Direct link to Gotchas and limits" title="Direct link to Gotchas and limits" translate="no">​</a></h2>
<p>A few points are easy to miss:</p>
<ul>
<li class="">The setting only takes effect on the VNet that has the gateway subnet and gateway.</li>
<li class="">The summary CIDR should include the gateway VNet address space.</li>
<li class="">Avoid overlaps inside your summary list.</li>
<li class="">Spoke VNets covered by the summary are suppressed from advertisement.</li>
<li class="">You can set the property before the gateway exists, but it does nothing until the gateway is present.</li>
</ul>
<p>Also remember the route-scale context: ExpressRoute private peering has limits on how many prefixes Azure can advertise to on-prem. This feature helps reduce that count, but you still need to design your address plan and summaries carefully.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quick-takeaway">Quick takeaway<a href="https://www.simonpainter.com/updates/public-preview-summarized-advertised-gateway-prefixes-for-route-advertisement#quick-takeaway" class="hash-link" aria-label="Direct link to Quick takeaway" title="Direct link to Quick takeaway" translate="no">​</a></h2>
<p>This preview gives you a practical route-summarisation control point for Azure hybrid gateways. If you are battling advertised prefix scale in hub-and-spoke, this is a feature worth testing now.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="links">Links<a href="https://www.simonpainter.com/updates/public-preview-summarized-advertised-gateway-prefixes-for-route-advertisement#links" class="hash-link" aria-label="Direct link to Links" title="Direct link to Links" translate="no">​</a></h2>
<ul>
<li class="">Official announcement: <a href="https://azure.microsoft.com/updates?id=562813" target="_blank" rel="noopener noreferrer" class="">Public Preview: Summarized advertised gateway prefixes for route advertisement</a></li>
<li class="">Learn: <a href="https://learn.microsoft.com/azure/virtual-network/advertised-gateway-prefixes-overview" target="_blank" rel="noopener noreferrer" class="">Advertised gateway prefixes in Azure virtual networks</a></li>
<li class="">Learn: <a href="https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways#gateway-limitations-and-performance" target="_blank" rel="noopener noreferrer" class="">About ExpressRoute virtual network gateways</a></li>
<li class="">Learn: <a href="https://learn.microsoft.com/azure/expressroute/expressroute-faqs#what-is-expressroute" target="_blank" rel="noopener noreferrer" class="">ExpressRoute FAQ: route advertisement limits and behaviour</a></li>
<li class="">Learn: <a href="https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-vpn-faq#bgp-and-routing" target="_blank" rel="noopener noreferrer" class="">VPN Gateway FAQ: BGP and routing</a></li>
</ul>]]></content>
        <author>
            <name>Simon Painter</name>
        </author>
        <category label="azure" term="azure"/>
        <category label="networks" term="networks"/>
        <category label="expressroute" term="expressroute"/>
        <category label="security" term="security"/>
        <category label="bgp" term="bgp"/>
        <category label="cloud" term="cloud"/>
    </entry>
</feed>