<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloud Security Architecture on Brewed in the Cloud by Chris Hailes</title><link>https://blog.brewedinthecloud.com/categories/cloud-security-architecture/</link><description>Recent content in Cloud Security Architecture on Brewed in the Cloud by Chris Hailes</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 09 Apr 2026 00:00:00 +1100</lastBuildDate><atom:link href="https://blog.brewedinthecloud.com/categories/cloud-security-architecture/rss.xml" rel="self" type="application/rss+xml"/><item><title>Network Isolation During Active Compromise: Designing for the Worst Day</title><link>https://blog.brewedinthecloud.com/p/assume-breach-network-isolation-during-compromise/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +1100</pubDate><guid>https://blog.brewedinthecloud.com/p/assume-breach-network-isolation-during-compromise/</guid><description>&lt;p&gt;Finding an attacker in your environment isn’t like spotting someone rattling the front door.&lt;br&gt;
It’s like hearing footsteps upstairs.&lt;/p&gt;
&lt;p&gt;At that point, the question isn’t &lt;em&gt;how did they get in?&lt;/em&gt;&lt;br&gt;
It’s &lt;em&gt;how far can they go next and how fast can you stop that from getting worse?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In an assume‑breach model, &lt;strong&gt;network isolation is not an emergency manoeuvre&lt;/strong&gt;.&lt;br&gt;
It’s a downgrade path the network already understands.&lt;/p&gt;
&lt;h2 id="the-mental-model"&gt;The Mental Model
&lt;/h2&gt;&lt;h3 id="the-common-assumption"&gt;The common assumption
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;“If something gets compromised, we’ll isolate it.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Isolation is treated as an &lt;strong&gt;action&lt;/strong&gt; something responders &lt;em&gt;do&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id="why-it-breaks"&gt;Why it breaks
&lt;/h3&gt;&lt;p&gt;During an active compromise:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You don’t know what’s already hostile&lt;/li&gt;
&lt;li&gt;You don’t have time to redesign trust&lt;/li&gt;
&lt;li&gt;You can’t safely assume the control plane is clean&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If isolation requires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New VNets&lt;/li&gt;
&lt;li&gt;New peerings&lt;/li&gt;
&lt;li&gt;Rule surgery across shared infrastructure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;…then you don’t have isolation.&lt;/p&gt;
&lt;p&gt;You have hope.&lt;/p&gt;
&lt;h2 id="how-it-really-works"&gt;How It Really Works
&lt;/h2&gt;&lt;p&gt;Isolation that works under pressure is a &lt;strong&gt;structural property&lt;/strong&gt;, not a procedural one.&lt;/p&gt;
&lt;p&gt;The network must already encode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Where trust is allowed&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where trust is explicitly &lt;em&gt;not&lt;/em&gt; allowed&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How a workload can be downgraded into a less‑trusted state&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not about perfect segmentation.&lt;br&gt;
It’s about &lt;strong&gt;pre‑authorised damage containment&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The key shift:&lt;br&gt;
Isolation is not “blocking traffic”.&lt;br&gt;
Isolation is &lt;strong&gt;forcing a workload into a smaller, poorer, deliberately constrained network world&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="realworld-impact"&gt;Real‑World Impact
&lt;/h2&gt;&lt;h3 id="design"&gt;Design
&lt;/h3&gt;&lt;p&gt;You stop grouping networks by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Application name&lt;/li&gt;
&lt;li&gt;Team ownership&lt;/li&gt;
&lt;li&gt;Environment labels&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And start grouping them by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blast radius tolerance&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Containment requirements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you are willing to lose without collapsing everything else&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This almost always means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fewer fully‑meshed networks&lt;/li&gt;
&lt;li&gt;More intentional asymmetry&lt;/li&gt;
&lt;li&gt;Shared services treated as amplification risks, not conveniences&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="reliability"&gt;Reliability
&lt;/h3&gt;&lt;p&gt;Isolation‑capable designs fail &lt;strong&gt;unevenly&lt;/strong&gt;, not catastrophically.&lt;/p&gt;
&lt;p&gt;You trade some steady‑state elegance for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Predictable degradation&lt;/li&gt;
&lt;li&gt;Fewer “everything is on fire” incidents&lt;/li&gt;
&lt;li&gt;Clear containment boundaries under stress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Availability becomes &lt;strong&gt;graduated&lt;/strong&gt;, not binary.&lt;/p&gt;
&lt;h3 id="security"&gt;Security
&lt;/h3&gt;&lt;p&gt;Once credentials or a workload are compromised:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;East‑west movement is constrained by structure, not rules&lt;/li&gt;
&lt;li&gt;Shared services don’t become free pivot points&lt;/li&gt;
&lt;li&gt;Containment actions are coarse, fast, and reversible&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="cost"&gt;Cost
&lt;/h3&gt;&lt;p&gt;Yes, this often costs more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More VNets&lt;/li&gt;
&lt;li&gt;More thought&lt;/li&gt;
&lt;li&gt;More architectural discipline&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It costs far less than rebuilding trust after full lateral spread.&lt;/p&gt;
&lt;h2 id="implementation-examples"&gt;Implementation Examples
&lt;/h2&gt;&lt;p&gt;This is not about NSGs, firewalls, or playbooks.&lt;br&gt;
This is about &lt;strong&gt;what the network makes possible and impossible by design&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="designed-isolation-as-a-downgrade-path"&gt;Designed isolation as a downgrade path
&lt;/h3&gt;&lt;div class="mermaid"&gt;flowchart LR
subgraph Prod VNet
A[App Tier]
B[Data Tier]
end
subgraph Shared Services VNet
C[Identity &amp; Control]
D[Observability]
end
subgraph Isolation VNet
E[Quarantine]
end
%% Normal operations
A --&gt; B
A --&gt; C
B --&gt; C
A --&gt; D
B --&gt; D
%% Containment downgrade
A -. isolate .-&gt; E
B -. isolate .-&gt; E
%% Explicitly impossible paths
E -.-x C
E -.-x B
&lt;/div&gt;
&lt;p&gt;What this diagram deliberately shows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Isolation is a downgrade&lt;/strong&gt;, not an alternative steady state&lt;/li&gt;
&lt;li&gt;Workloads can move &lt;em&gt;into&lt;/em&gt; quarantine, not back into shared trust&lt;/li&gt;
&lt;li&gt;Quarantine has no path to identity or control services&lt;/li&gt;
&lt;li&gt;Some connections are &lt;strong&gt;structurally absent&lt;/strong&gt;, not “normally blocked”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your design cannot express these absences, isolation will be fragile.&lt;/p&gt;
&lt;h3 id="structural-artefact-isolation-that-exists-before-you-need-it"&gt;Structural artefact: isolation that exists before you need it
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bicep" data-lang="bicep"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;resource&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;isolationVnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Microsoft.Network/virtualNetworks@2023-09-01&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;vnet-isolation&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;location&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;resourceGroup&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nv"&gt;location&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;addressSpace&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;addressPrefixes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;10.240.0.0/16&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kd"&gt;resource&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;prodVnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Microsoft.Network/virtualNetworks@2023-09-01&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;vnet-prod&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;location&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;resourceGroup&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nv"&gt;location&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;addressSpace&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;addressPrefixes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;10.10.0.0/16&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="kd"&gt;resource&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;prodToIsolationPeering&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Microsoft.Network/virtualNetworks/virtualNetworkPeerings@2023-09-01&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;prodVnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/prod-to-isolation&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;remoteVirtualNetwork&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;isolationVnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;allowVirtualNetworkAccess&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;allowForwardedTraffic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;allowGatewayTransit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;What matters here is not configuration detail, but &lt;strong&gt;intent&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The isolation VNet exists independently of any incident&lt;/li&gt;
&lt;li&gt;A downgrade path is pre‑authorised&lt;/li&gt;
&lt;li&gt;There is &lt;strong&gt;no equivalent peering to shared services&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Containment does not require new infrastructure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If isolation requires new peerings, you are already too late.&lt;/p&gt;
&lt;h2 id="designed-isolation-vs-wishful-containment"&gt;Designed Isolation vs Wishful Containment
&lt;/h2&gt;&lt;p&gt;This distinction is non‑negotiable.&lt;/p&gt;
&lt;h3 id="designed-isolation"&gt;Designed isolation
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Downgrade paths exist ahead of time&lt;/li&gt;
&lt;li&gt;Shared services are not universally reachable&lt;/li&gt;
&lt;li&gt;Containment changes &lt;em&gt;routing&lt;/em&gt;, not architecture&lt;/li&gt;
&lt;li&gt;Isolation is fast, coarse, and survivable&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="wishful-containment"&gt;Wishful containment
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Flat or fully‑meshed VNets&lt;/li&gt;
&lt;li&gt;Shared services reachable from everywhere&lt;/li&gt;
&lt;li&gt;Isolation requires redesign or mass rule changes&lt;/li&gt;
&lt;li&gt;“We’ll block it when it happens”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Only one of these survives an active compromise.&lt;/p&gt;
&lt;h2 id="gotchas--edge-cases"&gt;Gotchas &amp;amp; Edge Cases
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Shared services are blast‑radius multipliers&lt;/strong&gt;&lt;br&gt;
If everything depends on them, nothing can be isolated safely.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fully‑meshed peering kills partial containment&lt;/strong&gt;&lt;br&gt;
You either isolate everything or nothing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Late isolation is usually ineffective&lt;/strong&gt;&lt;br&gt;
Lateral movement is measured in minutes, not hours.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Over‑isolation can blind responders&lt;/strong&gt;&lt;br&gt;
If quarantine breaks logging or telemetry, you lose visibility when it matters most.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="best-practices"&gt;Best Practices
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Treat isolation as a &lt;strong&gt;network state&lt;/strong&gt;, not an action&lt;/li&gt;
&lt;li&gt;Design explicit downgrade paths and only a few&lt;/li&gt;
&lt;li&gt;Group networks by &lt;strong&gt;failure tolerance&lt;/strong&gt;, not org charts&lt;/li&gt;
&lt;li&gt;Assume shared services are hostile &lt;em&gt;by default&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;If isolation requires design changes, it doesn’t exist&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="insight"&gt;
&lt;div class="insight-icon"&gt;🍺&lt;/div&gt;
&lt;div class="insight-content"&gt;
&lt;strong&gt;Brewed Insight:&lt;/strong&gt; If your network can’t force a compromised workload into a smaller, poorer world &lt;strong&gt;without redesign&lt;/strong&gt;, you didn’t design for isolation, you designed for optimism.
&lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
.insight {
display: flex;
align-items: center;
background-color: #0089e41c;
border-left: 10px solid #D69A2D;
padding: 10px;
margin: 20px 0;
border-radius: 4px;
}
.insight-icon {
font-size: 24px;
margin-right: 10px;
}
.insight-content {
flex: 1;
}
&lt;/style&gt;&lt;h2 id="learn-more"&gt;Learn More
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/en-us/azure/virtual-network/concepts-and-best-practices" target="_blank" rel="noopener"
&gt;Azure Virtual Network design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/azure/security/fundamentals/network-overview" target="_blank" rel="noopener"
&gt;Network security in Azure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/azure/architecture/framework/" target="_blank" rel="noopener"
&gt;Azure architecture design principles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>