Back to Checks
Microsoft Entra ID tenant has Security Defaults enabled
entra_security_defaults_enabled
Service: entraSeverity: critical
OfficialBuilt-inVerified
Categories:identity-accesse3
Resource Type:NotDefined
Microsoft Entra Security defaults provide tenant-wide baseline identity protections:
- MFA registration and challenges
- Legacy auth (
IMAP/POP/SMTP) blocked - Extra checks for privileged access
This evaluation identifies whether that baseline is enabled at the tenant level.
Risk
Absent these defaults, users can sign in with password-only or via legacy protocols that bypass MFA, enabling password spray, replay, and phishing-based takeovers. Compromise risks data exposure (confidentiality), unauthorized changes (integrity), and service disruption (availability).
Run this check with Prowler
Run in Prowler CloudRun
prowler azure --checks entra_security_defaults_enabledRecommendation
Activate Security defaults or implement equivalent Conditional Access as defense in depth:
- Require MFA for all identities
- Block legacy authentication
- Safeguard admin portals and APIs Apply least privilege and zero trust, and regularly review access patterns and break-glass exceptions to keep coverage complete.
Remediation
CLI
az rest --method PATCH --url https://graph.microsoft.com/v1.0/policies/identitySecurityDefaultsEnforcementPolicy --body '{"isEnabled":true}'Other
1Sign in to the Microsoft Entra admin center with a Conditional Access Administrator or Global Administrator account
2Go to Identity > Overview > Properties
3Click Manage security defaults
4Select Enabled and click Save
Check Code
from prowler.lib.check.models import Check, Check_Report_Azure
from prowler.providers.azure.services.entra.entra_client import entra_client
class entra_security_defaults_enabled(Check):
def execute(self) -> Check_Report_Azure:
findings = []
for (
tenant,
security_default,
) in entra_client.security_default.items():
report = Check_Report_Azure(
metadata=self.metadata(), resource=security_default
)
report.subscription = f"Tenant: {tenant}"
report.status = "FAIL"
report.status_extended = "Entra security defaults is disabled."
if getattr(security_default, "is_enabled", False):
report.status = "PASS"
report.status_extended = "Entra security defaults is enabled."
findings.append(report)
return findings