To enable Microsoft Defender for Cloud plans on an Azure subscription, you use the azurerm_security_center_subscription_pricing resource from the official AzureRM Terraform provider.
Complete Terraform Configuration (main.tf)
Terraform
terraform { required_version = ">= 1.5.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 3.90" } }}provider "azurerm" { features {}}# Fetch the current subscription contextdata "azurerm_subscription" "current" {}# Optional: Set a global contact email for security alertsresource "azurerm_security_center_contact" "security_contact" { email = "security-alerts@yourcompany.com" phone = "+1234567890" alert_notifications = true alerts_to_admins = true}# Define Defender plans to enable across the subscriptionlocals { defender_plans = [ "VirtualMachines", "AppServices", "SqlServers", "SqlServerVirtualMachines", "StorageAccounts", "KubernetesService", "ContainerRegistry", "KeyVaults", "Arm", "Dns", "OpenSourceRelationalDatabases", "Containers", "CosmosDbs" ]}# Enable Defender for Cloud "Standard" tier for each resource typeresource "azurerm_security_center_subscription_pricing" "plans" { for_each = toset(local.defender_plans) tier = "Standard" resource_type = each.value}# Example: Enabling Defender CSPM with Agentless scanning extensionsresource "azurerm_security_center_subscription_pricing" "cloud_posture" { tier = "Standard" resource_type = "CloudPosture" extension { name = "AgentlessVmScanning" additional_extension_properties = { ExclusionTags = "[]" } } extension { name = "ContainerRegistriesVulnerabilityAssessments" }}
Key Operational Notes
- Resource Names: In the AzureRM provider, Defender configurations still reference
azurerm_security_center_*due to legacy provider API naming conventions. - Existing Deployments: If Defender plans were previously toggled on manually via the Azure Portal, run
terraform importto bring the pricing resources into your Terraform state file: Bashterraform import 'azurerm_security_center_subscription_pricing.plans["VirtualMachines"]' /subscriptions/<SUBSCRIPTION_ID>/providers/Microsoft.Security/pricings/VirtualMachines