Tenant does not allow non-admin users to register applications
Microsoft Entra authorization policy controls whether default users can create application registrations via allowed_to_create_apps. App creation is expected to be limited to administrators or explicitly delegated roles.
Risk
Permitting default users to register apps enables unvetted service principals, consent phishing, and over-privileged API access, threatening data confidentiality and integrity. Adversaries can persist with app credentials, exfiltrate mail/files, and perform lateral movement using rogue permissions.
Run this check with Prowler
Run in Prowler Cloudprowler azure --checks entra_policy_ensure_default_user_cannot_create_appsRecommendation
Apply least privilege: restrict app registration to admins or delegated roles; set Users can register applications to No. Use the Application Developer role for exceptions, require admin consent workflows, routinely review app/service principal permissions, and audit changes for defense in depth.
Remediation
CLI
az rest --method PATCH --url https://graph.microsoft.com/v1.0/policies/authorizationPolicy/authorizationPolicy --body '{"defaultUserRolePermissions":{"allowedToCreateApps":false}}'Terraform
resource "azuread_authorization_policy" "<example_resource_name>" {
default_user_role_permissions {
allowed_to_create_apps = false # Critical: disables application registration for non-privileged users
}
}Other
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_policy_ensure_default_user_cannot_create_apps(Check):
def execute(self) -> Check_Report_Azure:
findings = []
for tenant_domain, auth_policy in entra_client.authorization_policy.items():
report = Check_Report_Azure(metadata=self.metadata(), resource=auth_policy)
report.subscription = f"Tenant: {tenant_domain}"
report.resource_name = getattr(auth_policy, "name", "Authorization Policy")
report.resource_id = auth_policy.id
report.status = "FAIL"
report.status_extended = "App creation is not disabled for non-admin users."
if getattr(
auth_policy, "default_user_role_permissions", None
) and not getattr(
auth_policy.default_user_role_permissions,
"allowed_to_create_apps",
True,
):
report.status = "PASS"
report.status_extended = "App creation is disabled for non-admin users."
findings.append(report)
return findingsReferences
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/azure/ActiveDirectory/users-can-register-applications.html
- https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/delegate-app-roles#restrict-who-can-create-applications
- https://learn.microsoft.com/en-us/entra/identity-platform/how-applications-are-added#who-has-permission-to-add-applications-to-my-azure-ad-instance