Teams should preserve the security intent of the policy, but they should not assume every graph shape is equally efficient. If a permission model creates extreme fan-out or deep joins, restructuring the data model may be necessary to keep authorization usable at scale.
Why policy structure and performance cannot be treated as the same design problem
authorization policy has to preserve the security decision, but the way that decision is represented can still make the system expensive to evaluate. A model with too much fan-out, too many joins, or repeated graph traversal can become slow enough that teams bypass it, cache it badly, or stop using it consistently. The goal is to keep the control correct while making it practical at the scale of real requests.
That distinction matters most when permissions are evaluated on every request, across many resources, or through multiple relationship layers. A policy can be logically sound and still be operationally fragile if it requires excessive lookup depth or forces the authorization service to assemble too much context before it can answer.
Well-designed authorization models usually separate the authorization model from the implementation shape. RBAC, ABAC, and ReBAC can all express correct policy intent, but each creates different performance trade-offs depending on role cardinality, attribute freshness, and relationship traversal depth.
When redesigning the data model is justified
The important question is whether the current policy structure can answer access decisions quickly enough without weakening the decision logic. If a graph model creates extremely broad relationships, or if a rule engine must repeatedly resolve long chains of entitlements, then the policy may need to be restructured even though the underlying access meaning stays the same.
That often means changing how policy data is stored, indexed, precomputed, or partitioned, not changing who should get access. In practice, teams may preserve the business rule and redesign the supporting representation so the authorization layer can evaluate requests predictably under load.
The issue is especially visible in systems that have grown through incremental exceptions. IAM and IGA basics emphasise that access governance is not just about assigning permissions, but also about keeping entitlement structures understandable and reviewable as the estate grows.
Role design is one of the first places this shows up. A badly clustered role model can produce role explosion, while an over-aggregated role model can create excessive fan-out and make every authorization check more expensive than it needs to be. In those cases, the right fix is usually role decomposition, scoping, or introducing narrower access paths, not relaxing the policy outcome.
The same logic applies to fine-grained systems that evaluate actions or resources dynamically. If the model must resolve many conditions per request, teams should consider whether some of those conditions can be represented earlier in the lifecycle, precomputed safely, or shifted into a better lookup structure.
What a practical redesign looks like without changing the security intent
A useful redesign starts by asking which part of the model is causing cost: too many nodes, too many edges, expensive joins, or repetitive evaluation. Once that is clear, teams can tune the representation while keeping the authorization decision intact. Common moves include flattening unnecessarily deep hierarchies, separating high-churn attributes from stable ones, or splitting globally shared policy from tenant- or application-specific policy.
This is also where externalised authorization patterns help. Central policy services can improve consistency, but only if the policy data and lookup model are designed for the latency budget of the application. If the request path cannot tolerate repeated graph expansion, the model may need caching, denormalisation, or a narrower relationship scope.
For teams building access for services, APIs, workloads, or agents, the same principle applies to delegated access. AI Agent Authorisation Guide shows why task-scoped, per-action decisions are preferable to broad standing access when runtime control matters.
Where the model relies on relationship traversal, the design goal is not maximal expressiveness at any cost. It is to keep the policy decision explainable, testable, and fast enough that applications will actually call it on the critical path.
That is why Role Mining and Role Design Guide is relevant here: better role boundaries can reduce evaluation complexity while still preserving least privilege and making access more maintainable over time.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
NIST SP 800-53 Rev 5 and OWASP ASVS set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.
| Framework | Control / Reference | Relevance |
|---|---|---|
| NIST SP 800-53 Rev 5 | AC-3 — Access Enforcement | Access decisions must remain enforceable as policy structure changes. |
| AC-6 — Least Privilege | Role and relationship design should avoid excessive access and fan-out. | |
| IA-5 — Authenticator Management | Authorization implementations often depend on credentialed service flows and session cost. | |
| Recommendation — Design the authorization model so access enforcement stays correct and performant. Restructure roles and relationships to preserve least privilege at scale. Control the supporting identity material so authorization checks remain usable. | ||
| ISO/IEC 27001:2022 | A.5.15 — Access control | The question is fundamentally about structuring access control so it stays effective. |
| Recommendation — Keep the access-control design aligned to performance and security requirements. | ||
| OWASP ASVS | V8 — Authorization | ASVS authorization guidance directly maps to practical access-model design and enforcement. |
| Recommendation — Verify that authorization logic remains correct, testable, and efficient under load. | ||
Practitioner Guidance
What to prioritise: Preserve the access decision first, then optimise the policy representation only where latency, throughput, or operational complexity is preventing safe use. If a control is correct but too slow to trust, it will eventually be bypassed or weakened in practice.
What to verify: Measure decision latency, graph depth, join count, and the percentage of requests that require expensive fallback lookups. The warning sign is not merely a slow endpoint, but a model whose cost grows non-linearly as users, roles, or relationships expand.
Common mistake: Treating an authorization model as fixed because it is logically correct. In mature systems, the implementation shape is part of the control surface, and sometimes the most secure choice is to redesign the structure so the policy can remain enforceable at scale.
Practitioner takeaway: Keep the policy meaning stable, but do not freeze the data model if it makes enforcement impractical. Authorization that cannot be evaluated reliably and quickly is a design risk, even when the underlying rule is sound.
Related resources from NHI Mgmt Group
- How should security teams structure Active Directory to keep authentication, authorization, and policy control manageable at scale?
- How do teams keep policy-based authorization auditable?
- What do teams get wrong when they try to scale authorization from simple roles to fine-grained policy models?
- How should security teams structure Group Policy to avoid conflicts and keep administration manageable?
Deepen Your Knowledge
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.
Reviewed and updated by the NHIMG editorial team on October 10, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org