Enabling Defender plans: the basics
What is actually switched off when a Defender plan is disabled?
Microsoft Defender for Cloud has two layers, and they are easy to confuse. The free layer is the posture tier, the secure score and the configuration recommendations that everyone sees the moment they open the portal. The paid layer is the set of Defender plans, one per resource type, and these are what actually detect threats and raise alerts at runtime. With the plans off, Defender will happily tell you a storage account allows anonymous access, but it will never tell you that someone is currently exfiltrating data from it. The recommendation 'Microsoft Defender for Servers should be enabled', and its siblings for Storage and Azure SQL, are Defender pointing at itself to say a whole class of workload has no active threat detection.
Each plan covers a different blast radius. Defender for Servers brings endpoint detection and response to your VMs through Microsoft Defender for Endpoint, plus agentless vulnerability scanning and, on the higher tier, just-in-time access and file integrity monitoring. Defender for Storage watches the data plane and control plane of every storage account for the signatures of a compromised account: a suspicious access pattern, an abused or leaked shared access signature token, or anomalous data access. Defender for Azure SQL adds vulnerability assessment and Advanced Threat Protection, surfacing SQL injection attempts and anomalous database access. Three plans, three of the highest-value targets in any subscription: the machines, the data stores and the databases.
Most of the time a plan is off because nobody turned it on. Defender plans are configured per subscription, and a subscription created outside the landing-zone blueprint, or one that pre-dates the team's current guardrails, simply never had them enabled. The work is to find every subscription where Servers, Storage or SQL is still on the free tier, decide the right plan and sub-plan for each, turn them on, and then enforce that any new subscription inherits the same coverage rather than relying on whoever creates it to remember.
In this lesson you will learn the difference between Defender for Cloud's free posture tier and its paid Defender plans, why three of those plans, Servers, Storage and Azure SQL, matter most, how to find every subscription where they are still off, and how to enable them at the right tier without an unexpected bill. The Controls this lesson covers section lists every Defender plan recommendation in this capability, each linking to a deep page with the exact check and a copy-and-paste fix.
The free tier that watches nothing
A common and expensive misunderstanding is that opening Microsoft Defender for Cloud and seeing a secure score means the estate is being defended. It is not. The free tier scores configuration and nothing more: it has no agents on your VMs, watches no storage data plane, and inspects no SQL queries. Every active threat detection, every alert that says an attack is happening right now rather than that one could, lives behind a paid Defender plan. Plenty of organisations have discovered after an incident that the dashboard they trusted was only ever grading their homework, never standing guard.
Finding subscriptions with no active threat detection
Priya is the security lead at a scale-up preparing for its first ISO 27001 audit. Defender for Cloud shows 'Defender for X should be enabled' findings across several subscriptions that were created before the team adopted a landing-zone blueprint.
Rather than click into each subscription in the portal, Priya starts by listing the Defender plans per subscription, so she can see at a glance which workload types are still on the free tier and have no threat detection at all.
List the Defender plans for the current subscription. 'Free' means the posture tier only: no active threat detection on that resource type.
'Free' is not a safe default: it means that resource type is unwatched. A subscription holding production VMs and data on the free tier is the highest-value target in this group.
How Defender for Cloud decides a plan is missingdeep dive
Defender plans are not a property of any individual VM, storage account or database. They are configured per subscription through the 'Microsoft.Security/pricings' resource, one entry per plan name: 'VirtualMachines' for Servers, 'StorageAccounts' for Storage, 'SqlServers' for Azure SQL. Each entry has a 'pricingTier' of either 'Free', the posture tier with no threat detection, or 'Standard', the paid plan that turns detection on for every supported resource of that type in the subscription, including ones created later. The recommendation fires whenever that tier is 'Free'. Because the setting is subscription-wide, one toggle protects every matching resource at once, which is why enablement scales so cleanly.
Some plans have a sub-plan that materially changes both coverage and cost. Defender for Servers offers Plan 1 and Plan 2: Plan 1 delivers the core Defender for Endpoint integration, while Plan 2 adds just-in-time VM access, file integrity monitoring, agentless vulnerability scanning and a free daily data ingestion allowance into Log Analytics. In Bicep or ARM this is the 'subPlan' property ('P1' or 'P2') on the 'VirtualMachines' pricing. Defender for Storage's current plan is per storage account and carries optional add-ons for malware scanning and sensitive-data threat detection. Choosing the tier and add-ons is the real decision; the recommendation only checks that you are above 'Free'.
Defender for Cloud evaluates these against the Microsoft Cloud Security Benchmark on a periodic cycle, so enabling a plan does not flip the recommendation to Healthy instantly. The control-plane change is immediate and protection begins right away, but the posture catches up on the next assessment. The strongest position pairs the per-subscription enablement with an Azure Policy 'DeployIfNotExists' or a landing-zone blueprint, so a newly created subscription has the plans turned on automatically rather than waiting for the next person to notice the finding. That is the difference between covering the subscriptions you have today and guaranteeing coverage on every subscription you will ever have.
What is the impact of leaving Defender plans off?
The direct impact is blindness on your highest-value workloads. With Defender for Servers off, a VM compromised through a stolen credential or an unpatched service has no endpoint detection watching it, so lateral movement, persistence and data staging happen unseen. With Defender for Storage off, an abused or leaked shared access signature token can drain a container and nothing flags the anomalous access pattern. With Defender for Azure SQL off, a SQL injection attempt or an anomalous query against a customer database raises no alert. The free tier will have told you these resources existed and scored their configuration; it will not tell you any of them is under attack.
The second-order impact is dwell time. Undetected intrusions are expensive precisely because they run for weeks. Active threat detection is what collapses the window between compromise and response from months to hours, and that window is the single biggest driver of breach cost. Every subscription left on the free tier is a place where an attacker can operate without tripping anything, and the cost of that scales with how long they go unnoticed.
On the compliance side, every modern framework, ISO 27001, SOC 2, HIPAA and PCI DSS, expects evidence not just of good configuration but of active monitoring and threat detection on systems handling sensitive data. 'We score our configuration' does not satisfy a control that asks for detection and response capability. A passing set of Defender plan recommendations across every subscription is the artefact that shows an auditor the estate is actually watched, not merely graded.
How do you enable the plans safely and predictably?
Treat this as one capability across every subscription, not a plan-by-plan scramble. The order matters: forecast the cost and choose the right tier before you enable, so the bill holds no surprises and the coverage is the one you intended.
1. Inventory which plans are off, per subscription
List the Defender plan tier for Servers, Storage and SQL across every subscription. Treat 'Free' as 'unwatched'. This inventory, not the raw finding count, is the source of truth, because one disabled plan on a busy subscription protects many resources once enabled.
2. Forecast the cost from a resource count
Count the protectable resources behind each off plan: VMs for Servers, storage accounts for Storage, SQL servers for Azure SQL. Multiply by the published per-resource rate to get a defensible monthly forecast before you enable anything. This is the step that turns a metered charge from a surprise into a budgeted line.
3. Choose the right tier and add-ons, then enable
Decide Servers Plan 1 versus Plan 2 (Plan 2 adds just-in-time access, file integrity monitoring and vulnerability scanning), and whether Storage needs the malware-scanning and sensitive-data add-ons. Then enable the plan per subscription. Enablement is immediate and protects every existing and future resource of that type in the subscription.
4. Make coverage the default for new subscriptions
Bake plan enablement into the landing-zone blueprint and assign an Azure Policy 'DeployIfNotExists' so any new subscription gets the plans turned on automatically. This is what stops the estate drifting back to gaps every time someone spins up a subscription outside the standard path.
# Enable the three high-value Defender plans on the current subscription.
# Servers on Plan 2 (adds JIT access, FIM and vulnerability scanning).
az security pricing create --name VirtualMachines \
--tier Standard --subplan P2
# Storage on the current per-account plan.
az security pricing create --name StorageAccounts --tier Standard
# Azure SQL Database servers (VA + Advanced Threat Protection).
az security pricing create --name SqlServers --tier Standard
# Verify what is now active on this subscription.
az security pricing list \
--query "value[?pricingTier=='Standard'].name" -o tsv
# Ratchet it shut for the estate: assign the built-in DeployIfNotExists
# policies that turn each plan on for any subscription where it is missing.
# Servers (built-in 'Configure Azure Defender for servers to be enabled').
az policy assignment create \
--name enable-defender-servers \
--policy 8e86a5b6-b9bd-49d1-8e21-4bb8a0862222 \
--scope "/providers/Microsoft.Management/managementGroups/contoso-root"
# Look up the matching Storage and SQL policies by display name rather than
# hard-coding a GUID, then assign each the same way at the same scope.
az policy definition list \
--query "[?contains(displayName, 'Configure Microsoft Defender for Storage') || contains(displayName, 'Configure Azure Defender to be enabled on SQL servers')].{name:name, displayName:displayName}" \
-o table Quick quiz
Question 1 of 5Defender for Cloud shows a healthy secure score but 'Microsoft Defender for Servers should be enabled' is failing. What does that combination actually mean?
You scored
0 / 5
Keep learning
Go deeper on what each Defender plan in this capability protects and how to enable it at the right tier.
- Select a Defender for Servers plan How Plan 1 and Plan 2 differ in features and per-server cost, and how to choose.
- Overview of Microsoft Defender for Storage What the current Storage plan detects, including the malware-scanning and sensitive-data add-ons.
- Benefits and features of Microsoft Defender for SQL Vulnerability assessment and Advanced Threat Protection for Azure SQL Database servers.
You can now treat Defender plan enablement as one capability rather than a scatter of findings: inventory which plans are on the free tier per subscription, forecast the metered cost from a resource count, enable Servers, Storage and SQL at the right tier, and make coverage the default for every new subscription with a blueprint and an Azure Policy. The Controls this lesson covers section below links every Defender plan recommendation in this group to its deep page and fix.
Back to the library