Martin Rylko
  • Services
  • Blog
  • About
  • Contact
  • Get in Touch
Martin Rylko

Senior Cloud Architect & DevOps Engineer. Specializing in Microsoft Azure, IaC, Cloud Security and AI.

Navigation

  • Services
  • Blog
  • About
  • Contact

Collaboration

Looking for an experienced architect for your Azure project? Get in touch.

rylko@cloudmasters.cz

© 2026 Martin Rylko. All rights reserved.

Built in the cloud. Deployed via Azure Static Web Apps.

Home/Blog/Foundational CSPM Stops Being Default: What to Add to Your Subscription Vending Before 27 October 2026
All articlesČíst česky

Foundational CSPM Stops Being Default: What to Add to Your Subscription Vending Before 27 October 2026

8/11/2026 4 min
#Azure#Defender for Cloud#Landing Zone#Governance#Security#Bicep

Foundational CSPM Stops Being Default: What to Add to Your Subscription Vending Before 27 October 2026

This is a change nobody will announce to you, because it shows up on no invoice and triggers no alert. One day a subscription is created and there is simply no Secure Score in it.

Microsoft announced it on 30 July 2026: from 27 October 2026, Foundational CSPM no longer switches on automatically for new Azure subscriptions. It stays free, it can be enabled at any time, and existing subscriptions keep their configuration. AWS and GCP connectors are unaffected.

That sounds harmless. And for the security team it is — because this is not their problem. It is a problem for your landing zone factory.

Why this is a vending problem, not a security problem

Every subscription vending pipeline I have seen rests on one unspoken assumption: baseline posture appears on its own. The vending module creates the subscription, places it in a management group, deploys networking, assigns policy — and Defender for Cloud just turns on, because it always has.

From 27 October 2026 that assumption is false. And because Foundational CSPM is free, its absence is invisible everywhere it would normally show up:

  • nothing on the invoice (it is free)
  • nothing in Cost Management
  • no alert — Defender does not alert you about not being enabled
  • Secure Score for the subscription simply does not exist, so it cannot drop either

The only thing you will eventually notice is that the subscription count in your posture report no longer matches the subscription count in your tenant. And you usually notice that during an audit, not before.

Fix it in two places

You want both. They are not alternatives.

1. The vending module — so subscriptions are born correct

This is the primary path. Add an explicit enablement to whichever module configures a new subscription:

targetScope = 'subscription'
 
// From 27 Oct 2026 Foundational CSPM no longer enables itself on
// new subscriptions. Free tier, but it has to be declared.
resource foundationalCspm 'Microsoft.Security/pricings@2024-01-01' = {
  name: 'CloudPosture'
  properties: {
    pricingTier: 'Free'
  }
}
 
// The security contact belongs in the same step — otherwise you
// have posture with no recipient.
resource securityContact 'Microsoft.Security/securityContacts@2023-12-01-preview' = {
  name: 'default'
  properties: {
    emails: securityContactEmail
    notificationsByRole: {
      state: 'On'
      roles: ['Owner']
    }
    isEnabled: true
  }
}
 
@description('Security team distribution list, not a personal address.')
param securityContactEmail string

The Terraform equivalent is azurerm_security_center_subscription_pricing with tier = "Free" and resource_type = "CloudPosture".

If you want paid Defender CSPM as well (attack path analysis, agentless scanning, posture context), set pricingTier to Standard — but that is a decision with a price tag and belongs in a separate approval. I went through the difference between the tiers in the piece on Defender CSPM.

2. A DeployIfNotExists policy — the safety net

The vending module covers subscriptions that go through your factory. It does not cover the ones somebody created in the portal because "it was quicker". In any organisation past a certain size, that happens.

Assign a built-in definition that adds Microsoft.Security/pricings at the root or platform management group. The critical part is configuring it so remediation runs retroactively — otherwise it only covers what is created after the assignment:

# Assign at management group scope with an identity for remediation
az policy assignment create \
  --name 'enforce-foundational-cspm' \
  --scope '/providers/Microsoft.Management/managementGroups/mg-platform' \
  --policy '<definition-id>' \
  --mi-system-assigned \
  --location westeurope \
  --enforcement-mode Default
 
# Remediate the existing estate — without this step the policy
# only guards the future
az policy remediation create \
  --name 'remediate-cspm-backfill' \
  --policy-assignment 'enforce-foundational-cspm' \
  --management-group 'mg-platform' \
  --resource-discovery-mode ReEvaluateCompliance

People skip that second command and are then surprised that the compliance report is green while the subscriptions are still empty.

Audit: find out where it is missing

This Resource Graph query returns subscriptions that have no CSPM plan record. Run it today so you have a baseline, then run it again in November:

// Subscriptions without Foundational CSPM
resourcecontainers
| where type == 'microsoft.resources/subscriptions'
| where properties.state == 'Enabled'
| project subscriptionId, subName = name
| join kind=leftouter (
    securityresources
    | where type == 'microsoft.security/pricings'
    | where name == 'CloudPosture'
    | project subscriptionId, tier = tostring(properties.pricingTier)
) on subscriptionId
| where isempty(tier)
| project subName, subscriptionId
| order by subName asc

You can run it straight from the CLI:

az graph query -q "$(cat cspm-audit.kql)" --first 1000 -o table

The output you want is empty. Anything else is a list of subscriptions with no posture baseline — and after 27 October that list starts growing on its own.

Context worth knowing

Microsoft frames this change as part of moving posture management into the Microsoft Defender portal — the Defender for Cloud integration into the Defender portal went GA on 5 May 2026. The practical impact on you is mostly that links and runbooks pointing at the Defender for Cloud blade in the Azure portal are gradually going stale. If your operational documentation contains click-through procedures, expect to rewrite them.

It has no effect on enabling CSPM itself — the API and the Bicep resource stay exactly where they were.

What to do this week

  1. Run the ARG query above and save the result as a baseline. You want to know the state before the change.
  2. Add Microsoft.Security/pricings to the vending module and deploy it to a test subscription.
  3. Assign the DeployIfNotExists policy with remediation across the existing estate.
  4. Put a task in your calendar for the first week of November 2026 to run that query again.

The whole thing is half a day of work. The cost of forgetting it is several months of subscriptions with no posture baseline, discovered during an audit.

If you are building a landing zone from scratch and want the vending pipeline right the first time, I laid out the structure in the Azure Landing Zone in Bicep article. Happy to help design or review a specific environment — see cloud architecture services.

Sources

  • Defender for Cloud release notes — 30 July 2026 entry
Tags:#Azure#Defender for Cloud#Landing Zone#Governance#Security#Bicep
LinkedInX / Twitter

About the author

Martin Rylko

Martin Rylko

Senior Cloud Architect & DevOps Engineer

14+ years in IT – from on-premises datacenters and Hyper-V clustering to cloud infrastructure on Microsoft Azure. I specialize in Landing Zones, IaC automation, Kubernetes and security compliance.

Email LinkedInFull profile

Frequently Asked Questions

Will I lose Foundational CSPM on existing subscriptions?▾
No. The change applies only to subscriptions created on or after 27 October 2026. Existing subscriptions keep their configuration unchanged and need no action at all. The change also does not affect AWS or GCP connectors.
Does Foundational CSPM now cost money?▾
It does not. It stays free and can be enabled at any time. Exactly one thing changes: it no longer enables itself. This is a default-state change, not a pricing change, which is precisely why it is easy to miss — it will not show up in your budget and no invoice will ever prompt you about it.
How do I find out where it is missing?▾
With an Azure Resource Graph query against the securityresources table, for type microsoft.security/pricings named CloudPosture. Compare the subscriptions that have that record against every subscription in the tenant; the difference is your gap. The query is in this article and runs directly in the portal or via az graph query.
Bicep in the vending module, or a DeployIfNotExists policy?▾
Both, and not instead of each other. Bicep in the vending module is the primary path — subscriptions are born configured correctly. A DeployIfNotExists policy at management group scope is the safety net for subscriptions created outside your factory, which happens in every organisation past a certain size. Without the policy you slowly accumulate a tail of subscriptions you do not know about.

You might also like

Azure Blueprints Ends 31 January 2027: A Migration Plan to Deployment Stacks and Template Specs

The Blueprints wind-down is already running and locks in phases. On 31 January 2027 the API disappears, unexported data is permanently deleted, and blueprint locks stop working. Artifact mapping to Deployment Stacks and an export via REST.

Read

Azure Landing Zone Governance: Policy at Scale

Implement Azure Policy governance for Landing Zones at scale. Custom policy definitions, initiative assignments, compliance dashboards, and cost management guardrails.

Read

Microsoft Defender for Cloud: CSPM Setup Guide

Configure Microsoft Defender for Cloud CSPM for Azure Landing Zones. Secure Score optimization, attack path analysis, regulatory compliance dashboards, and real cost breakdown.

Read