<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Network Security Perimeter on Brewed in the Cloud by Chris Hailes</title><link>https://blog.brewedinthecloud.com/tags/network-security-perimeter/</link><description>Recent content in Network Security Perimeter on Brewed in the Cloud by Chris Hailes</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 05 Nov 2026 00:00:00 +1100</lastBuildDate><atom:link href="https://blog.brewedinthecloud.com/tags/network-security-perimeter/rss.xml" rel="self" type="application/rss+xml"/><item><title>WAF, Firewall, DDoS or Network Security Perimeter? Choose by Threat Boundary</title><link>https://blog.brewedinthecloud.com/p/exposure-controls-by-threat-boundary/</link><pubDate>Thu, 05 Nov 2026 00:00:00 +1100</pubDate><guid>https://blog.brewedinthecloud.com/p/exposure-controls-by-threat-boundary/</guid><description>&lt;p&gt;&amp;ldquo;Should we use WAF, Firewall, DDoS Protection or Network Security Perimeter?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Before choosing, I would ask what we need to stop. An unwanted web request, an outbound connection, public access to a PaaS resource and an availability attack are not the same failure. Treating them as one purchasing decision is how a team ends up with the right product for the wrong problem.&lt;/p&gt;
&lt;p&gt;A WAF rule can reject a web request while an unintended data operation remains available. DDoS protection can improve resilience against network-layer attacks without narrowing a workload&amp;rsquo;s data permissions. A perimeter association can be present while its enforcement mode is not the mode the design assumes.&lt;/p&gt;
&lt;p&gt;Choose the boundary first. The threat-to-control matrix below makes the choice concrete: what the control should change, what it cannot replace, and how to check the difference without generating an attack.&lt;/p&gt;
&lt;h2 id="the-mental-model"&gt;The Mental Model
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Controls are comparable only when they address the same failure condition.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Different layers can be complementary without being alternatives.&lt;/p&gt;
&lt;p&gt;The continuing illustrative scenario has a public application ingress, an application workload, approved private Storage access, and a controlled unintended destination. Identity, networking and service behavior determine what can be done after a request reaches the application.&lt;/p&gt;
&lt;p&gt;Split the review into four questions. Which HTTP requests should reach application logic? Which connections should the workload establish? Which public relationships should a supported PaaS resource accept? What protects the public endpoint&amp;rsquo;s availability under a network-layer attack?&lt;/p&gt;
&lt;p&gt;Now the controls have a job to do. They are no longer competing on a feature list.&lt;/p&gt;
&lt;div class="mermaid"&gt;flowchart LR
E[Public client] --&gt; W[Application request boundary]
W --&gt; A[Application workload]
A --&gt; F[Selected network enforcement path]
F --&gt; D[Destination operation]
I[Identity and service authorization] --&gt; D
P[Supported PaaS public-access boundary] --&gt; D
V[Availability resilience] -. supports .-&gt; W
&lt;/div&gt;
&lt;p&gt;This is a boundary map, not a promise that every packet crosses every product. Private traffic may follow a different route from public traffic, and service-side operations may have another boundary entirely.&lt;/p&gt;
&lt;h2 id="how-it-really-works"&gt;How It Really Works
&lt;/h2&gt;&lt;h3 id="use-a-threat-to-control-matrix"&gt;Use a threat-to-control matrix
&lt;/h3&gt;&lt;p&gt;The &lt;a class="link" href="https://blog.brewedinthecloud.com/azure-exposure-reduction-toolkit/#2-threat-to-control-matrix" &gt;draft toolkit&amp;rsquo;s threat-to-control module&lt;/a&gt; records threat, source, operation, candidate control, enforcement placement, unsupported cases, evidence and operational burden. A useful starting point is:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Failure condition&lt;/th&gt;
&lt;th&gt;Candidate boundary&lt;/th&gt;
&lt;th&gt;What it does not establish&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Unwanted HTTP request reaches application logic&lt;/td&gt;
&lt;td&gt;WAF policy on the chosen supported application front end&lt;/td&gt;
&lt;td&gt;Correct application authorization or workload egress restriction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unwanted connection leaves a source along an inspected route&lt;/td&gt;
&lt;td&gt;Azure Firewall rules for traversing traffic&lt;/td&gt;
&lt;td&gt;Enforcement on alternate routes or correct destination permissions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unwanted public access to an onboarded PaaS resource&lt;/td&gt;
&lt;td&gt;Network Security Perimeter association and applicable access rules&lt;/td&gt;
&lt;td&gt;Blocking every Private Endpoint operation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network-layer flood threatens an eligible public endpoint&lt;/td&gt;
&lt;td&gt;Appropriate Azure DDoS offering&lt;/td&gt;
&lt;td&gt;Prevention of authorized data misuse or all application-layer overload&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Microsoft&amp;rsquo;s current documentation distinguishes WAF application protection from DDoS layer 3/4 protection. Firewall rule processing separately distinguishes DNAT, network and application rules. NSP documentation describes supported PaaS associations, transition/enforced modes and public-access rules.&lt;/p&gt;
&lt;p&gt;Use those distinctions to decide what belongs in the design. Combining the products does not remove the need to check each one&amp;rsquo;s actual scope.&lt;/p&gt;
&lt;h3 id="verify-placement-mode-and-bypass"&gt;Verify placement, mode and bypass
&lt;/h3&gt;&lt;p&gt;For WAF, identify the hosting product and SKU, attached policy, effective mode and protected route to the origin. Detection-mode evidence is not prevention evidence. Confirm the exact host-specific capability before choosing a managed rule set or custom rule.&lt;/p&gt;
&lt;p&gt;For Firewall, establish that the relevant route traverses the appliance and inspect effective policy, including parents and broader rules. A narrow application rule cannot rescue a matching permissive network rule that already terminates evaluation.&lt;/p&gt;
&lt;p&gt;For NSP, inspect the resource association and supported service. Microsoft&amp;rsquo;s documentation allows Private Endpoint traffic without explicit NSP access rules; do not treat an enforced perimeter as a universal private-data boundary. Resource authentication and authorization still need their own assessment.&lt;/p&gt;
&lt;p&gt;For DDoS, identify the eligible public IP/resource, selected offering and evidence of enabled coverage. Public-cloud feature availability does not imply every PaaS integration has identical support. Check service-specific support and cloud/region constraints.&lt;/p&gt;
&lt;h3 id="exercise-a-composition-safely"&gt;Exercise a composition safely
&lt;/h3&gt;&lt;p&gt;Use a harmless marker header or path to match a deliberately configured WAF test rule on an author-owned application. Compare the front-end request with an authorized direct-origin check. The expected result is a documented policy response, not proof that all malicious requests are blocked.&lt;/p&gt;
&lt;p&gt;Separately test a non-HTTP connection along the declared Firewall path and a synthetic authenticated operation against the controlled destination. Record which boundary rejects each case. A blocked HTTP marker alongside a successful unintended Blob operation is a useful counterexample: WAF works at its boundary while the consequence remains elsewhere.&lt;/p&gt;
&lt;p&gt;DDoS validation here is configuration and coverage review only. Do not generate attack traffic or label a benign load test a mitigation result. Provider-authorized simulation would be a separately scoped exercise.&lt;/p&gt;
&lt;h2 id="real-world-impact"&gt;Real-World Impact
&lt;/h2&gt;&lt;p&gt;The matrix changes procurement and engineering reviews because each control must justify its role in a particular path. More layers are not automatically more assurance.&lt;/p&gt;
&lt;h3 id="prefer-the-composition-that-preserves-necessary-work"&gt;Prefer the composition that preserves necessary work
&lt;/h3&gt;&lt;p&gt;An application might need WAF protection for public HTTP input and tightly scoped data roles for Storage operations. An egress restriction may then constrain additional destinations. DDoS coverage addresses a distinct availability pressure where the endpoint is eligible.&lt;/p&gt;
&lt;p&gt;Before adding another layer, ask which remaining operation it will constrain. TLS inspection can bring certificate management, troubleshooting and cost without correcting the broad data role that authorizes the unwanted write. It may still be justified, but that role is not a reason to deploy it.&lt;/p&gt;
&lt;h3 id="make-ownership-part-of-selection"&gt;Make ownership part of selection
&lt;/h3&gt;&lt;p&gt;WAF exclusions, Firewall policy inheritance, NSP profiles and service roles may have different owners. A control without an owner for changes and failure response becomes another exception backlog.&lt;/p&gt;
&lt;p&gt;I would choose a smaller composition the team can test and operate over a wider one nobody can explain during an outage. An exclusion waiting for approval, a certificate renewal and an ambiguous support handoff all consume attention. That cost belongs beside the Azure bill.&lt;/p&gt;
&lt;h2 id="gotchas-and-edge-cases"&gt;Gotchas and Edge Cases
&lt;/h2&gt;&lt;p&gt;The awkward cases are worth keeping in the review. They show how a control can work correctly while the finding remains unresolved.&lt;/p&gt;
&lt;h3 id="origin-access-can-bypass-the-web-boundary"&gt;Origin access can bypass the web boundary
&lt;/h3&gt;&lt;p&gt;A front-end WAF result says nothing about an independently reachable origin. Inspect origin restrictions and allowed legitimate management paths before asserting that application input is constrained.&lt;/p&gt;
&lt;h3 id="a-network-allowance-is-not-a-business-allowance"&gt;A network allowance is not a business allowance
&lt;/h3&gt;&lt;p&gt;Permitting HTTPS to a destination does not establish that the destination account, tenant or operation is approved. A successfully authenticated write can remain an unintended relationship even when every packet follows the designed route.&lt;/p&gt;
&lt;h3 id="transition-evidence-is-not-enforced-rejection"&gt;Transition evidence is not enforced rejection
&lt;/h3&gt;&lt;p&gt;NSP transition mode helps understand existing access patterns. Its presence is not proof of enforced denial. Record effective association mode and test resource-specific behavior rather than rely on the word &amp;ldquo;perimeter.&amp;rdquo;&lt;/p&gt;
&lt;h3 id="availability-controls-have-their-own-exclusions"&gt;Availability controls have their own exclusions
&lt;/h3&gt;&lt;p&gt;DDoS offering eligibility and value-added features differ. Do not transfer a coverage claim from one public IP resource to every public endpoint in the architecture. A dependency outage or valid application overload can also remain outside the tested protection.&lt;/p&gt;
&lt;h2 id="best-practices"&gt;Best Practices
&lt;/h2&gt;&lt;p&gt;Give each failure condition its own matrix row, with a non-goal and a counterexample. If two products answer different questions, do not force them into a winner-and-loser comparison.&lt;/p&gt;
&lt;p&gt;An application owner should be able to read the result as a decision: &amp;ldquo;We need this boundary because of this operation, and we accept this remaining limitation.&amp;rdquo; That is more useful than a diagram carrying four security logos.&lt;/p&gt;
&lt;h3 id="assumptions-and-evidence-boundary"&gt;Assumptions and evidence boundary
&lt;/h3&gt;&lt;p&gt;These are documented control distinctions and proposed exercises, not observations from a combined tenant deployment. Before testing, record hosting/SKU and mode for WAF; Firewall tier, rule types and route; NSP onboarded resource, association API/schema and mode; DDoS offering and eligible endpoint; actual region/cloud support and diagnostic categories. Deployment APIs remain unpinned until a supported template and authorized lab are selected.&lt;/p&gt;
&lt;p&gt;Separate permissions for reading policy/configuration, changing it and performing service data operations. Testing with an administrator can conceal the authority boundary the workload actually has.&lt;/p&gt;
&lt;p&gt;For this finding, I would require every added control to constrain a named unwanted operation or support a named availability/recovery requirement. If it does neither, leave it out of this remediation decision. Any retained exception needs an owner, expiry and a compensating boundary we can actually test.&lt;/p&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; Choose controls by the question they answer. A control that works exactly as documented can still be the wrong response when the consequence sits at a different boundary.
&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/azure/web-application-firewall/overview" target="_blank" rel="noopener"
&gt;Azure Web Application Firewall overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/azure/firewall/rule-processing" target="_blank" rel="noopener"
&gt;Azure Firewall rule processing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview" target="_blank" rel="noopener"
&gt;Azure DDoS Protection overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/azure/private-link/network-security-perimeter-concepts" target="_blank" rel="noopener"
&gt;Network Security Perimeter concepts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>