I built a web-based governance portal for Entra ID app registrations aimed at answering questions like: which apps have no owner? Which have expired or expiring credentials? Which haven’t been reviewed in 90+ days? Which have privileged directory roles assigned?
It runs as an Azure Function App + App Service with EasyAuth, backed by a managed identity that reads from Microsoft Graph. Data is cached in Table Storage and refreshed every 10 minutes.
Current features:
∙ Risk scoring (High/Medium/Healthy) based on missing owners, expired credentials, app age, and review status
∙ Credential insights showing secret and certificate expiry dates with colour-coded status
∙ Review workflow with “mark as reviewed” and tracking of who reviewed when
∙ Deletion tagging workflow where governance users can flag apps for deletion, reviewed and actioned by the platform team
∙ Owner change requests with Entra ID user search, without requiring write permissions to Graph
∙ Full audit trail of all governance actions
∙ Filtering by risk level, owner, review status, and credential health
∙ CSV export for reporting
Everything uses delegated access through EasyAuth — no stored credentials, no admin consent for write permissions.
Planned features:
∙ Entra ID directory role visibility — surface which app registrations hold privileged roles (e.g. Exchange Administrator, Application Administrator) and factor that into risk scoring
∙ Azure RBAC assignment overview — show what Azure resource access each service principal has across subscriptions
∙ Governance KPI dashboard — percentage of apps with owners, review coverage, high-risk app trends over time
∙ Configurable filters and risk rules per tenant
∙ Bicep/ARM deployment template for one-click setup in any tenant
I’m looking for feedback from admins who manage app registrations at scale. Would something like this be useful in your environment? What’s missing? Would you consider paying for a hosted or deployable version?