Join our Newsletter — 33% off our NHI Course
Home› Guides› Authorisation Maturity Model: Five Levels From Hardcoded Checks…
Maturity Model Authorisation

Authorisation Maturity Model: Five Levels From Hardcoded Checks to Policy

PDF for newsletter subscribers · free to read online

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 11 November 2026 14 min read
On this page

Most organisations can tell you how users log in, but very few can say, for any given application, who is allowed to do what to which records and where that rule is written down. Authorisation is the decision made after authentication, on every request, and it is where the commonest application flaw lives: OWASP ranks Broken Access Control first in its Top 10 2025 and found some form of it in every application tested. This model uses NHI Mgmt Group's five levels, Ad hoc to Optimised, to score authorisation across eight capability areas, from how rules are written and enforced to how entitlements are reviewed and how non-human identities and AI agents are constrained. It is for security architects, IAM and application security leads and engineering managers who need to place their estate on a scale and plan the next step. The models themselves (RBAC, ABAC, ReBAC) are explained in the Authorisation Models Guide; this page is about staged maturity.

Key takeaways

  • The five levels are Ad hoc, Developing, Defined, Managed and Optimised, scored separately for each of eight capability areas and, in large estates, for each application tier.
  • Coverage beats sophistication. One endpoint without a check undoes a well designed policy engine, so "every request is checked, deny by default" is the Level 3 line, before any choice of RBAC, ABAC or ReBAC.
  • Externalise the decision, not just the login. Moving rules out of scattered code into a policy decision point with versioned policy is what makes authorisation testable, reviewable and auditable at Levels 4 and 5.
  • Object and field level is where breaches happen. Function-level checks ("is this user an admin?") are common; record ownership and tenant checks ("may this user read this invoice?") are the gap OWASP and ASVS 5.0 single out.
  • Machines and agents need their own track. Service accounts, API clients and AI agents usually hold the broadest standing permissions and act on behalf of users, so the originating subject's rights must survive the hop.

The five levels

LevelNameWhat it looks like
1Ad hocAccess checks are written by each developer inside handlers, often only in the user interface. Many applications have an "admin" flag and nothing finer. Default framework settings decide what is open. Nobody can list who can do what, and service accounts run with owner or administrator rights because it was quicker.
2DevelopingRoles exist in the main applications and the identity provider passes group claims. Checks sit in shared middleware for some services. Roles multiply with each request ("role explosion"), entitlements are reviewed once a year in a spreadsheet, and object-level checks depend on the individual team.
3DefinedAn authorisation standard requires deny by default, server-side enforcement on every request, and object-level ownership or tenant checks. Each application documents its rules (ASVS V8.1.1). Roles are defined in a catalogue with owners, privileged roles are separated, and access failures are logged. Service accounts are inventoried with owners and scoped permissions.
4ManagedDecisions for new and high-risk applications go through a policy decision point (PDP) with policy as code, version control, peer review and automated tests in the pipeline. Context such as device, location or risk feeds decisions for sensitive actions. Entitlement data is joined to usage so unused rights are removed. Delegated access by services preserves the originating user's permissions.
5OptimisedFine-grained, relationship or attribute-based policy is the norm for data access, standing privilege is close to zero, and permission changes take effect immediately. Authorisation decisions are logged centrally and analysed for drift. AI agents receive task-scoped, short-lived delegated rights with human approval for high-impact actions, and policy coverage is measured continuously.

Capability areas

Score each area separately. An organisation whose policy engine is excellent but whose entitlement reviews are rubber stamps is not at Level 4.

Capability areaLevel 1 Ad hocLevel 3 DefinedLevel 5 Optimised
Policy definitionRules exist only in code and people's headsWritten authorisation rules per application covering function and data access; role catalogue with ownersPolicy as code in a declarative language, versioned, reviewed and traceable to business rules
Enforcement coverageChecks in some handlers or only in the user interfaceServer-side, deny by default on every request through shared middleware or gatewayEvery application and API calls a policy enforcement point; coverage measured and gaps alerted
Object and field levelAny authenticated user can reach any record by changing an IDOwnership and tenant checks on every object; sensitive fields filtered per roleRelationship or attribute-based rules for all data access, tested for cross-tenant leaks
Decision architectureEmbedded logic, duplicated per serviceShared library or gateway per platformExternalised PDP with a standard request format (subject, action, resource, context), local caching and defined failure mode
Least privilege and entitlementsBroad roles, owner rights by defaultPrivileged roles separated, joiner, mover and leaver changes applied, periodic reviewsUsage-driven right-sizing, just-in-time elevation, near-zero standing privilege
Non-human identitiesService accounts with administrator or owner rights, shared between appsInventory with owners, one identity per workload, scoped rolesWorkload identities with minimum, reviewed permissions; unused rights removed automatically
Delegation and AI agentsBack-end services act with their own full rights for any callerServices pass the user context; agents limited to named toolsDelegated, task-scoped and short-lived tokens; originating subject's rights enforced end to end; approval for high-impact actions
Testing, logging and reviewNo access control tests; failures not loggedUnit and integration tests for deny cases; access failures loggedAutomated authorisation test suites in CI, decision logs analysed, policy drift detected

Decision architecture options by level

The architecture choice is the one most often confused with maturity. A policy engine is a means, not a score. Choose by the number of applications, how often rules change and who must audit them.

ApproachTypical levelStrengthsWeaknessesFits
Checks embedded in each handler1 to 2No dependency, fast to writeEasy to miss a route, impossible to audit centrallySmall single applications only
Shared middleware or framework annotations2 to 3Global, deny by default possible, low latencyRules still compiled into each service; object-level logic often left outA few applications on one stack
API gateway enforcement3One place for coarse function-level rules on APIsCannot see object ownership without calling the service; bypassed by internal trafficCoarse checks in front of many APIs
Externalised PDP with policy as code (for example OPA with Rego, Cedar)4 to 5Versioned, testable, consistent; decision logsNeeds engineering investment, latency and availability design, policy skillsMany applications, frequent rule changes, audit pressure
Relationship-based service (Zanzibar style)4 to 5Expresses sharing, hierarchies and ownership at scaleRelationship data must be kept in sync; harder to reason aboutDocument, collaboration and multi-tenant SaaS products

OpenID AuthZEN Authorization API 1.0, published as Final on 11 January 2026, standardises how an enforcement point asks a decision point for an answer: subject, resource and action, with optional context, sent to an evaluation endpoint, with batch evaluations and search endpoints for listing what a subject may do. A standard interface reduces lock-in when moving from Level 3 libraries to a Level 4 PDP. See the OpenID AuthZEN Authorization API Guide and the Policy-as-Code for Authorisation Guide.

Mapping to frameworks

FrameworkControlWhat it asks for
NIST SP 800-53 Rev. 5AC-3, AC-24Access enforcement; access control decisions
NIST SP 800-53 Rev. 5AC-6, AC-6(5), AC-6(7), AC-6(10)Least privilege; privileged accounts; review of user privileges; prohibit non-privileged users from executing privileged functions
NIST SP 800-53 Rev. 5AC-5, AC-2(1)Separation of duties; automated account management
NIST CSF 2.0PR.AA-05Access permissions, entitlements and authorisations defined in policy, managed, enforced and reviewed, with least privilege and separation of duties
OWASP ASVS 5.0V8.1.1, V8.2.1 to V8.2.4, V8.3.1 to V8.3.3, V8.4.1Documented rules; function, data and field-level checks; adaptive controls; enforcement at a trusted service layer; immediate effect of changes; originating subject's permissions; cross-tenant controls
NIST SP 800-162 and SP 800-207ABAC model; PDP and PEPAttribute-based decisions; per-request decisions before a session with a resource
MITRE ATT&CKT1078, T1098, T1548Valid Accounts, Account Manipulation and Abuse Elevation Control Mechanism, which weak authorisation makes more damaging

Self-assessment questions

Answer per application tier (customer-facing, internal business, administrative) and then for machine identities. A control that covers part of the estate scores Level 2.

  • Documentation: for your five most important applications, can the owner produce written rules for who may perform each function and read or change each data type?
  • Coverage: is there a route, endpoint or GraphQL field in any of them that does not pass through a server-side check? How do you know?
  • Default: when a new endpoint is added without an explicit rule, is it denied or allowed?
  • Object level: if a user changes an order or account ID in a request, what stops them reading someone else's record? The T-Mobile API breach shows how far one abused API can reach when it returns data beyond what the caller should see.
  • Tenancy: in multi-tenant systems, is the tenant enforced in the data layer or only in the user interface?
  • Roles: how many roles exist per application, how many have no members or no owner, and how many users hold privileged roles they have not used in 90 days?
  • Change speed: when a user leaves or a role is removed, how long until the change is enforced, including in cached tokens?
  • Machines: how many service accounts or workload identities hold owner, administrator or wildcard permissions?
  • Delegation: when a back-end service or AI agent acts for a user, are the user's permissions checked, or the service's?

Evidence that supports each score

Capability areaEvidence for Level 3Evidence for Level 4
Policy definitionAuthorisation rules document per application; role catalogue with ownersPolicy repository with commit history, reviews and links to business rules
Enforcement coverageMiddleware configuration showing deny by default; route inventory with the check appliedReport of endpoints calling the PDP, with uncovered endpoints at zero or tracked
Object and field levelTest cases where user A requests user B's object and is refusedAutomated cross-user and cross-tenant tests in CI on every release
Least privilegeCompleted access reviews with revocations recordedUnused-entitlement report and removals driven by it
Non-human identitiesService account inventory with owners and permission scopeShare of workload identities without administrator or wildcard rights, trending up
LoggingAccess-denied events logged with subject, action, resource and reasonDecision logs centralised, with alerts on spikes in denials and on policy changes

Worked example

A SaaS company scores itself: policy definition 2, enforcement coverage 3 (shared middleware, deny by default), object level 2 (ownership checks in some services), decision architecture 2, least privilege 3, non-human identities 1 (deployment service principal with owner rights on production), delegation 2 and testing 2. The profile, not the average of 2.1, sets the plan: object-level and tenant checks come first because a single missing check exposes customer data across tenants, and the over-privileged deployment identity comes second because it is the shortest path from one stolen token to the whole platform.

Moving up: roadmap

From Ad hoc to Developing

  1. Inventory applications and APIs, and for each one record where authorisation is enforced today.
  2. Move every check to the server side and remove reliance on hidden buttons, client-side flags or values the caller can change.
  3. Remove owner and administrator rights from service accounts used by applications, starting with production.

From Developing to Defined

  1. Publish an authorisation standard: deny by default, check on every request, object ownership and tenant checks, logging of failures. The RBAC Role Matrix Template helps document roles.
  2. Apply checks through shared middleware or framework filters so a new route cannot be added without one, and run it in report-only mode first to find routes that would be denied before switching to enforce.
  3. Build a role catalogue with owners, separate privileged roles and define incompatible combinations. See the Segregation of Duties Guide.
  4. Add negative tests: user A cannot read user B's object, a standard user cannot call an administrative function. See the Authorisation Testing Automation Guide.
  5. Inventory service accounts with owners and scope their permissions to one workload each.

From Defined to Managed

  1. Choose a PDP pattern and pilot it on one high-risk application. Run the new engine in shadow mode, comparing its decisions with the existing code for several weeks, and switch only when mismatches are understood; keep the old check behind a flag as rollback.
  2. Put policy in version control with peer review and tests in the pipeline, and log every decision with the policy version.
  3. Define the failure mode: fail closed for writes and sensitive reads, and document any fail-open exceptions with an owner.
  4. Join entitlement data to usage logs and remove privileged rights unused for 90 days. Move standing administrator access to just-in-time elevation. See the JIT Access Guide.
  5. Propagate the originating user's identity through service calls so downstream services check the user, not the intermediary.

From Managed to Optimised

  1. Adopt relationship or attribute-based rules where roles cannot express ownership and sharing. See the Fine-Grained Authorisation Guide.
  2. Make permission changes take effect immediately: short token lifetimes, revocation checks or live policy evaluation for sensitive actions.
  3. Issue AI agents task-scoped, short-lived delegated tokens and require human approval for high-impact actions. See the AI Agent Authorisation Guide.
  4. Measure policy coverage continuously and alert on any endpoint or identity outside it.

Metrics that show movement

  • Enforcement coverage: share of endpoints and APIs behind a server-side, deny-by-default check (target 100 per cent).
  • Object-level test coverage: share of data-returning endpoints with automated cross-user and cross-tenant tests.
  • Standing privilege: number of human and machine identities with permanent administrator, owner or wildcard rights, and the trend.
  • Unused entitlements: share of privileged entitlements unused in 90 days.
  • Revocation latency: median time from a role removal to enforcement everywhere.
  • Authorisation findings: broken access control findings per release from testing and bug bounty, by severity.

What changes with organisation size

  • Small organisations with a handful of applications should reach Level 3 with framework middleware, a role catalogue and negative tests; a dedicated PDP is rarely worth it.
  • Large organisations should score each application tier separately and fund externalisation for the applications with the most users, data and rule changes, accepting Level 3 for the long tail. The Externalised Authorisation Buyer's Guide covers evaluation.
  • SaaS providers should treat tenant isolation as a separate pass or fail test at every level. See the Multi-Tenant SaaS Authorisation and Tenant Isolation Guide.

Common failure patterns

  • Function checks without object checks: the endpoint confirms the caller is a customer but not that the record belongs to them, the pattern behind most broken object level authorisation findings. See the OWASP API Top 10 API1 Broken Object Level Authorization Guide.
  • Trusting the client: roles, prices or tenant IDs read from hidden fields, cookies or token claims the caller can influence, which ASVS V8.3.1 rules out.
  • Role explosion: a new role for every exception until nobody can review them, which is usually a sign that attributes or relationships are needed.
  • Over-privileged machines: a deployment or integration identity with owner rights becomes the target. At Capital One, the credentials of a firewall's cloud role were enough to read data on 106 million people.
  • The confused deputy: a back-end service or agent uses its own broad rights for every caller, so any user who can reach it inherits them.
  • Policy engine as a single point of failure: a PDP introduced without caching, capacity planning or a defined failure mode either takes applications down or is quietly set to fail open.

Practitioner checklist

  • Score all eight capability areas per application tier and for machine identities.
  • Require server-side, deny-by-default checks on every request and measure coverage.
  • Add object ownership and tenant checks with automated cross-user tests before any engine work.
  • Document authorisation rules per application and keep a role catalogue with owners.
  • Remove owner, administrator and wildcard rights from service accounts and workload identities.
  • Pilot a PDP in shadow mode with versioned, tested policy and a defined failure mode.
  • Propagate the originating user's identity through services and agents.
  • Remove privileged entitlements unused for 90 days and move standing access to just-in-time elevation.
  • Re-score every six months and report the six metrics quarterly.

Standards and references

Related NHI Mgmt Group resources: Authorisation Models Guide · Least Privilege Techniques Guide · Authentication Maturity Model · PAM Maturity Model · Authorisation Executive Briefing

PDF for subscribers

Take this guide with you

Every section, table and checklist in one PDF, with links to the sources and related guides. Subscribe to our weekly NHI & AI Identity Journal and we’ll email you a download link.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 11 November 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org

PDF Downloads for Newsletter Subscribers

Get the guide

Enter your details and we’ll email you a download link.

The full guide is free to read online. The PDF is a thank you for subscribing.

Fill in all fields marked * and tick the PDF box to continue.