Back to Checks
Prowlerprowler-provider-azure
Defender for Azure Resource Manager is set to On (Standard pricing tier)
defender_ensure_defender_for_arm_is_on
Service: defenderSeverity: high
OfficialBuilt-inVerified
Categories:identity-access
Resource Type:microsoft.security/pricings
Microsoft Defender for Cloud plan for Azure Resource Manager is configured at the Standard tier for the subscription
Risk
Without this protection, malicious or misconfigured ARM deployments can go unnoticed. Adversaries could create high-privilege roles, disable logging, or deploy exfiltration paths and crypto workloads, degrading integrity, confidentiality, and availability of Azure resources.
Run this check with Prowler
Run in Prowler CloudRun
prowler azure --checks defender_ensure_defender_for_arm_is_onRecommendation
Enable Microsoft Defender for Azure Resource Manager at the Standard tier across all subscriptions. Apply least privilege to deployment principals, enforce the plan via policy for new subscriptions, and route alerts to centralized monitoring to support defense-in-depth and rapid response.
Remediation
CLI
az security pricing create --name Arm --tier StandardTerraform
# Enable Microsoft Defender for Azure Resource Manager at Standard tier
resource "azurerm_security_center_subscription_pricing" "<example_resource_name>" {
tier = "Standard" # Critical: enables Standard pricing (ON)
resource_type = "Arm" # Critical: targets Defender for Azure Resource Manager
}NativeIaC
// Enable Microsoft Defender for Azure Resource Manager at Standard tier
resource example_pricing 'Microsoft.Security/pricings@2023-01-01' = {
name: 'Arm'
properties: {
pricingTier: 'Standard' // Critical: sets Defender for ARM plan to Standard (ON)
}
}Other
1In Azure Portal, go to Microsoft Defender for Cloud
2Select Environment settings > your subscription
3Open Defender plans
4Set "Defender for Azure Resource Manager" to On/Standard
5Click Save
Check Code
from prowler.lib.check.models import Check, Check_Report_Azure
from prowler.providers.azure.services.defender.defender_client import defender_client
class defender_ensure_defender_for_arm_is_on(Check):
def execute(self) -> Check_Report_Azure:
findings = []
for subscription, pricings in defender_client.pricings.items():
subscription_name = defender_client.subscriptions.get(
subscription, subscription
)
if "Arm" in pricings:
report = Check_Report_Azure(
metadata=self.metadata(), resource=pricings["Arm"]
)
report.subscription = subscription
report.resource_name = "Defender plan ARM"
report.status = "PASS"
report.status_extended = f"Defender plan Defender for ARM from subscription {subscription_name} ({subscription}) is set to ON (pricing tier standard)."
if pricings["Arm"].pricing_tier != "Standard":
report.status = "FAIL"
report.status_extended = f"Defender plan Defender for ARM from subscription {subscription_name} ({subscription}) is set to OFF (pricing tier not standard)."
findings.append(report)
return findings