Check ID: entra_conditional_access_policy_require_mfa_for_admin_portals
Provider: Azure
Service: entra
Severity: MEDIUM
Categories: identity-access, e3
Resource type: NotDefined

What this check verifies

Microsoft Entra Conditional Access is evaluated for a policy that requires multifactor authentication when accessing Microsoft Admin Portals (Microsoft 365 Admin Center, Microsoft Entra Admin Center, Microsoft Exchange Admin Center, etc.). The check confirms an enabled policy targets All users, includes the Microsoft Admin Portals app, and enforces an MFA grant control.

Risk

Without MFA on admin portals, attackers with stolen credentials can access Microsoft 365 Admin Center, Entra Admin Center, or Exchange Admin Center to modify tenant settings, escalate privileges, and exfiltrate data. This directly impacts confidentiality, integrity, and availability of all services managed through those portals.

Recommendation

Create a Conditional Access policy that requires MFA for the Microsoft Admin Portals app targeting All users. Exclude only break-glass emergency accounts and non-interactive service principals. Test in Report-only mode before enforcing. Prefer phishing-resistant MFA methods (FIDO2, passkeys) and apply least privilege principles.

Remediation

resource "azuread_conditional_access_policy" "<example_resource_name>" {
  display_name = "<example_resource_name>"
  state        = "enabled"

  conditions {
    users {
      included_users = ["All"]
      excluded_users = ["<break_glass_account_id>"]
    }
    applications {
      included_applications = ["MicrosoftAdminPortals"]  # Critical: Microsoft Admin Portals
    }
  }

  grant_controls {
    operator          = "OR"
    built_in_controls = ["mfa"]  # Critical: requires MFA
  }
}

References

Where this check fires

This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable by Check ID = entra_conditional_access_policy_require_mfa_for_admin_portals. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Azure checks