Check ID: entra_conditional_access_policy_require_mfa_for_management_api
Provider: Azure
Service: entra
Severity: MEDIUM
Categories: e3
Resource type: NotDefined

What this check verifies

Microsoft Entra Conditional Access is evaluated for a policy that requires multifactor authentication when accessing the Windows Azure Service Management API (Azure PowerShell, Azure CLI, Azure Resource Manager API, etc.). The check confirms an enabled policy targets All users, includes the Service Management API app, and enforces an MFA grant control.

Risk

Without MFA on the Service Management API, attackers with stolen credentials can use Azure CLI, PowerShell, or the Resource Manager API to modify infrastructure, escalate privileges, and exfiltrate data. This directly impacts confidentiality, integrity, and availability of all Azure resources managed through the API.

Recommendation

  1. From the Azure Admin Portal dashboard, open Microsoft Entra ID. 2. Click Security in the Entra ID blade. 3. Click Conditional Access in the Security blade. 4. Click Policies in the Conditional Access blade. 5. Click + New policy. 6. Enter a name for the policy. 7. Click the blue text under Users. 8. Under Include, select All users. 9. Under Exclude, check Users and groups. 10. Select users or groups to be exempted from this policy (e.g. break-glass emergency accounts, and non-interactive service accounts) then click the Select button. 11. Click the blue text under Target Resources. 12. Under Include, click the Select apps radio button. 13. Click the blue text under Select. 14. Check the box next to Windows Azure Service Management APIs then click the Select button. 15. Click the blue text under Grant. 16. Under Grant access check the box for Require multifactor authentication then click the Select button. 17. Before creating, set Enable policy to Report-only. 18. Click Create. After testing the policy in report-only mode, update the Enable policy setting from Report-only to On.

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 = ["797f4846-ba00-4fd7-ba43-dac1f8f63013"]  # Critical: Windows Azure Service Management API
    }
  }

  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_management_api. 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