Identity Risk Assessments connects to your tenant with a read-only app registration. It never signs in as users and cannot change users, roles, or policies โ it only reads security signals to produce your risk score and recommendations.
identityassess, supported account type: single tenant. Leave redirect URI blank. Register.Requires the Azure CLI.
# Log in (opens a browser)
az login
# Run the automated setup
.\scripts\setup-entra-app.ps1 -AppName "identityassess" -SecretYears 1
The script creates the app, adds all permissions, grants admin consent, creates the secret, and saves the
three values to entra-credentials.txt (file locked to your user).
GRAPH="00000003-0000-0000-c000-000000000000" # Microsoft Graph resource id
APP_ID=$(az ad app create --display-name "identityassess" --sign-in-audience AzureADMyOrg --query appId -o tsv)
az ad app permission add --id "$APP_ID" --api "$GRAPH" --api-permissions \
"User.Read.All=Role" "Reports.Read.All=Role" "AuditLog.Read.All=Role" \
"IdentityRiskyUser.Read.All=Role" "IdentityRiskyServicePrincipal.Read.All=Role" \
"Policy.Read.All=Role" "Policy.Read.PermissionGrant=Role" \
"RoleManagement.Read.Directory=Role" "Application.Read.All=Role" \
"Device.Read.All=Role" "Directory.Read.All=Role"
az ad app permission admin-consent --id "$APP_ID"
SECRET=$(az ad app credential reset --id "$APP_ID" --display-name "identityassess" --years 1 --query password -o tsv)
echo "ENTRA_TENANT_ID=$(az account show --query tenantId -o tsv)"
echo "ENTRA_CLIENT_ID=$APP_ID"
echo "ENTRA_CLIENT_SECRET=$SECRET"
| Permission | What it enables |
|---|---|
User.Read.All | User inventory, dormant-account detection |
Reports.Read.All | MFA / authentication-method coverage |
AuditLog.Read.All | Sign-in logs, admin activity, MFA registration |
IdentityRiskyUser.Read.All | Risky users (P2/E5) |
IdentityRiskyServicePrincipal.Read.All | Risky sign-ins / service principals (P2/E5) |
Policy.Read.All | Conditional Access, security defaults |
Policy.Read.PermissionGrant | User-consent policies |
RoleManagement.Read.Directory | Privileged roles, PIM |
Application.Read.All | Service principals, app owners, grants |
Device.Read.All | Device compliance |
Directory.Read.All | Tenant & directory data |
Policy.Read.PermissionGrant and IdentityRiskyServicePrincipal.Read.All can be omitted to minimize further (fewer signals).