The pattern shows up in almost every multi-subscription Azure tenant I review:

  1. The platform team enables Azure DDoS Protection (Network Protection tier) in the connectivity subscription. Good.
  2. A workload team in a different subscription spins up an internet-facing app, follows their security checklist, and creates their own DDoS Protection Plan in their subscription.
  3. Another workload team does the same in a third subscription.
  4. Twelve months later the tenant is paying for three, four, sometimes a dozen DDoS plans. At roughly US$2,944 per plan per month the bill compounds quickly.

Almost none of that spend is necessary. Microsoft is explicit on this point: a single DDoS Protection Plan can be shared across multiple subscriptions in the same Azure AD tenant. One plan, one bill, every spoke VNet protected. This article is the architect's case for that pattern — the cost math, the reference architecture (modelled on Microsoft's own hub-and-spoke guidance), the RBAC required, a Terraform baseline, and the healthcare addendum that makes it auditable.

1
DDoS plan per tenant
~$35K
Saved per extra plan / yr
100
Public IPs included
Multi-sub
Single tenant scope

1. The Multi-Subscription Mistake

These are the anti-patterns I find on every cost review of a mid-to-large Azure estate:

2. What Microsoft Actually Says

From the official Microsoft Learn documentation on managing DDoS Protection:

💡 Microsoft's stated guidance

A DDoS Protection Plan defines a set of virtual networks that have DDoS Network Protection enabled, across subscriptions. You can configure one DDoS Protection Plan for your organization and link virtual networks from multiple subscriptions to the same plan. The plan and the virtual networks can be in different subscriptions, but they must be associated with the same Azure Active Directory tenant.

That single statement collapses the multi-plan pattern. The architectural rule becomes: one DDoS Protection Plan per tenant, deployed in the connectivity / hub subscription, referenced by every spoke VNet that needs Network Protection.

3. Reference Architecture — One Plan, Many Spokes

This is the hub-and-spoke pattern Microsoft recommends in the DDoS reference architectures and in the Cloud Adoption Framework landing zone. One plan in the connectivity subscription; every workload VNet across every other subscription associates with it.

Single Azure AD tenant · One DDoS Protection Plan · Multi-subscription spokes Connectivity Subscription (Hub) DDoS Protection Plan Network Protection tier (one per tenant) Hub VNet Azure Firewall · ExpressRoute Azure Monitor · Sentinel DDoS telemetry & alerts Subscription A — Workload 1 Spoke VNet · Public IP associated to shared plan Subscription B — Workload 2 Spoke VNet · App Gateway associated to shared plan Subscription C — Workload 3 Spoke VNet · Front Door origin associated to shared plan Management Group (Tenant) Azure Policy: deny duplicate DDoS plans in any sub RBAC: Network Contributor on plan for spoke owners Microsoft DDoS Response Team Rapid Response (DRR) active-attack engagement (included with Network tier)
Microsoft-aligned pattern: one DDoS Protection Plan in the connectivity subscription, every spoke VNet across subscriptions associated to it, governed by Azure Policy at the tenant management group. Adapted from the official DDoS reference architectures and landing zone guidance.

4. The Cost Math — Why This Matters

Public list pricing for Azure DDoS Protection (Network Protection tier) is approximately US$2,944 per month, per plan, flat, covering up to 100 protected public IP resources, with a small per-resource overage above that. The flat fee is the cost trap — it does not scale down with use.

PatternPlansApprox. annual costOutcome
One plan per subscription (5 subs)5≈ US$176,640 / yr4 plans are redundant; protection identical
One plan per workload (12 apps)12≈ US$423,936 / yr11 plans redundant; same protection
Shared plan, multi-subscription (recommended)1≈ US$35,328 / yrSame protection, one bill, central governance

List prices for illustration only; check the Azure DDoS Protection pricing page for current per-region figures and EA/CSP discounts.

⚠️ The hidden cost trap

The flat fee charges from the moment the plan is created, even if zero VNets are associated. I have seen tenants paying for plans that were stood up by a workload team for a POC, never associated to a VNet, and never deleted. Azure Policy + a monthly FinOps review catches these — a quarterly review does not.

5. SKU Choice — IP Protection vs Network Protection

Since 2023 Microsoft has offered two SKUs. Choose deliberately, per the official SKU comparison:

AspectIP ProtectionNetwork Protection
ScopePer public IPPer VNet (plan-scoped)
Pricing modelPer protected IP / monthFlat plan fee + included IPs
Rapid Response (DRR)Not includedIncluded
WAF cost protectionNoYes (cost reimbursement on attack)
Multi-subscription sharingN/A (per IP)Yes — single plan across tenant
Best forSmall estate, < ~15 public IPsEnterprise / regulated / multi-sub

For a multi-subscription enterprise tenant — and always for healthcare or any regulated workload — Network Protection is the right choice because DRR and WAF cost protection materially change incident economics. The architectural mistake is not which SKU to pick; it is buying Network Protection more than once.

6. RBAC for Cross-Subscription Association

Sharing a plan across subscriptions is a permissions exercise, not a connectivity one. The user or service principal that creates / updates a spoke VNet must hold a role that includes the Microsoft.Network/ddosProtectionPlans/join/action on the plan in the hub subscription. Per Microsoft's permissions documentation:

Operate this through the same group-based RBAC model your landing zone already uses — do not hand-grant per spoke.

7. Terraform Baseline

This is the minimum viable pattern: the plan in the hub subscription, the spoke VNet in any other subscription referencing it by full resource ID across an aliased provider.

# providers.tf — one provider per subscription
provider "azurerm" {
  alias           = "hub"
  subscription_id = var.hub_subscription_id
  features {}
}
provider "azurerm" {
  alias           = "spoke"
  subscription_id = var.spoke_subscription_id
  features {}
}

# hub.tf — one DDoS Protection Plan for the whole tenant
resource "azurerm_network_ddos_protection_plan" "tenant" {
  provider            = azurerm.hub
  name                = "ddos-plan-tenant"
  resource_group_name = var.hub_rg
  location            = var.location
  tags = {
    owner       = "platform-network"
    cost-center = "shared-services"
    purpose     = "tenant-wide-ddos-network-protection"
  }
}

# spoke.tf — spoke VNet in a different subscription, same tenant
resource "azurerm_virtual_network" "spoke" {
  provider            = azurerm.spoke
  name                = "vnet-spoke-app1"
  resource_group_name = var.spoke_rg
  location            = var.location
  address_space       = ["10.20.0.0/16"]

  ddos_protection_plan {
    id     = azurerm_network_ddos_protection_plan.tenant.id   # cross-sub reference
    enable = true
  }
}

Pair this with an Azure Policy at the tenant root management group:

8. Monitoring, Simulation & Rapid Response

A DDoS plan you have never tested is the same as one you never bought. Build the lifecycle into the platform:

Always-on
Diagnostic logs
Send DDoSProtectionNotifications, DDoSMitigationFlowLogs, DDoSMitigationReports to Log Analytics & Sentinel from day one.
Quarterly
Attack simulations
Run authorised simulations via Microsoft's partner programme to validate detection and the response runbook.
On-attack
DDoS Rapid Response
During an active attack engage the Microsoft DRR team — included with Network Protection. Document the contact path in the runbook now, not during the incident.
Quarterly
FinOps review
Run a tenant-wide query for orphan DDoS plans and unassociated VNets. Delete anything not justified.

Microsoft documents the full simulation programme and the rapid-response process — these are not bolt-ons, they are part of the product.

9. Healthcare Addendum — HIPAA & HITRUST

For healthcare SaaS the DDoS conversation is not a cost conversation, it is an availability and integrity conversation. HIPAA's Security Rule does not name DDoS, but it does require both. Volumetric attacks that knock a payer portal or a FHIR API offline are a §164.308(a)(7) contingency-plan event the moment they happen, and a HITRUST audit finding the moment they recur.

ControlHow a shared DDoS plan satisfies it
HIPAA §164.308(a)(7) Contingency PlanAlways-on mitigation + DRR engagement is part of the documented response runbook; tested via simulation.
HIPAA §164.312(b) Audit ControlsDDoS notification & mitigation logs streamed to Log Analytics with 6-year retention.
HIPAA §164.312(e)(1) Transmission SecurityMitigation preserves availability of the encrypted transport — paired with the WAF in front of the same public IPs.
HITRUST 09.m Network ControlsNetwork-layer DDoS protection enabled on all internet-facing VNets carrying ePHI; evidence is the VNet → plan association.
HITRUST 12.c Information System ContinuityContinuity plan references DDoS mitigation + DRR contact path; tested via simulation cadence.
🏥 Healthcare design rule

For any tenant carrying ePHI on internet-facing endpoints: every public-IP-bearing VNet must be associated to the shared DDoS Protection Plan, the association must be enforced by Azure Policy (not goodwill), DDoS logs land in the same regulated workspace as the WAF logs, and at least one DDoS simulation per year is part of the HIPAA contingency-plan testing evidence.

10. Architect's Checklist

11. Further Reading — Official Documentation

Every claim in this article maps to current Microsoft Learn guidance. These are the authoritative references:

Azure DDoS Protection — core

Architecture & landing zone

Operations & testing

Pricing & compliance

Infrastructure-as-Code

Key Takeaway

Azure DDoS Protection Plan is a tenant resource pretending to be a subscription resource. Treat it as tenant-wide, deploy exactly one, share it across every spoke VNet through cross-subscription RBAC, enforce that uniqueness with Azure Policy at the root management group, and validate with annual simulations. For healthcare, that single plan becomes a HIPAA contingency-plan and HITRUST continuity control — and removes tens of thousands of dollars of unnecessary spend in the same move. Right architecture, right cost, right compliance posture.