TL;DR: Authorization systems rely on a permissions model, decision data, and an engine, while graph-based approaches better represent relationships than flat lists, according to Authzed. Clearer terminology matters because teams need to separate access-rule design from the service layer that evaluates, caches, and audits decisions.
At a glance
What this is: This is a terminology and architecture note that separates permissions systems from authorization services and argues that clearer language improves design decisions.
Why it matters: IAM, IGA, and application-security teams need this distinction to avoid mixing access-rule logic with the operational service layer that evaluates, caches, and audits decisions.
Context
Permissions systems are the rules-and-data layer that decides whether an action should be allowed, while authorization is the act of answering that question. The article argues that modern teams still reuse IAM language in ways that blur design intent, which makes architecture discussions and procurement comparisons harder than they need to be.
For practitioners, the real problem is not just vocabulary. When teams cannot separate permission logic from the service that serves decisions, they struggle to assign ownership, compare build-versus-buy choices, and explain where caching, logging, and deployment responsibilities belong.
Key questions
A: Teams lose clarity about where policy is authored, where decisions are evaluated, and where operational duties such as caching and auditing belong. That creates duplicated logic, inconsistent access behaviour, and muddled ownership across application and IAM teams. The result is not just poor terminology, but weak governance around a critical control layer.
A: Graph-based models represent users, resources, and relationships directly, so they can evaluate nested ownership, shared access, and inherited permissions without flattening everything into static roles. That makes them better suited to collaboration-heavy systems where access depends on connection patterns rather than a small set of fixed entitlements.
Q: Should teams build their own permissions system or use an authorization service?
A: Teams should build only when they have a clear need and the capacity to operate latency, consistency, and audit requirements at scale. If not, the safer choice is usually to use a service layer and concentrate engineering effort on product logic rather than access-control infrastructure.
Q: What is the difference between permissions and authorization in application security?
A: Permissions are the rules and logic that define what actions are allowed under specific conditions. Authorization is the runtime process that evaluates a request against those rules. Teams should keep the policy model separate from the decision layer so they can change access logic without entangling it with application code.
Technical breakdown
Permissions model, decision data, and engine
A permissions system needs three parts: a model that expresses the rules, decision data about the actor and object, and an engine that applies the rules to the data. That structure is what turns abstract policy into a yes-or-no answer. In the article’s framing, this is the core of authorization logic, whether it lives inside one application or is shared across many. The model can be role-based, relationship-based, or another approach, but the decision still depends on matching rules to current context.
Practical implication: separate the policy model from application code so teams can change rules without rewriting every service.
Authorization service as an abstraction layer
An authorization service sits on top of the permissions system and handles the operational work around it. That can include caching decisions, logging and auditing requests, and managing supportive infrastructure. The key distinction is that the service is not the rules themselves. It is the layer that exposes them consistently to applications and absorbs the scaling and operational burden that would otherwise be duplicated across product teams.
Practical implication: define which functions belong to the decision layer and which belong to the service layer before implementation starts.
Why graph-based permissions models fit relationships better
Graph-based models represent users, resources, and relationships as connected entities rather than flat lists. That matters when access depends on nested groups, shared resources, or inherited relationships. The article points to Zanzibar-style approaches because they can answer queries by traversing relationship data rather than forcing teams to encode every rule as a standalone list entry. This is especially useful when collaboration patterns are complex and changing.
Practical implication: choose a relationship model when access depends on inheritance, nesting, or shared ownership rather than simple static roles.
NHI Mgmt Group analysis
Clear terminology is an architectural control, not a style preference: When teams collapse permissions, authorization, and authorization services into one bucket, they hide where policy is authored, where decisions are made, and where operational responsibility lives. That confusion leads to duplicated logic, weak ownership, and harder audits. The practical conclusion is that naming is part of governance, because bad vocabulary produces bad boundaries.
Graph-based authorization is a better fit for relationship-heavy access than flat lists: The article’s strongest technical point is that authorization data is often relational, not purely enumerative. Flat role lists work poorly when access depends on nested teams, shared workspaces, or transitive relationships. The implication for practitioners is that data model choice is a governance decision, not just an implementation preference.
Permissions systems and authorization services should be evaluated separately: A team can like the policy model but still dislike the service layer, or the reverse. Caching, auditing, deployment, and consistency are operational concerns that do not change the underlying permission semantics. Practitioners should therefore assess decision logic, runtime behaviour, and service operations as distinct evaluation criteria.
Relationship-aware access: The article describes a category of authorization design where access is governed by connected entities rather than isolated entitlements. That framing matters because it shifts the conversation from static permission lists to the structure of who is related to what, and why. The implication is that identity and application teams need shared language before they can share responsibility.
What this signals
Relationship-aware access control is becoming the practical default for complex applications: When access depends on nested groups, shared ownership, and transitive relationships, a flat entitlement model stops being expressive enough. Teams should expect authorization design to look more like data modelling than simple role assignment.
The governance question is no longer whether authorization exists, but where decision logic should live and how much of it should remain inside application code. The cleaner the boundary between permissions logic and the service layer, the easier it becomes to audit decisions, reuse policy, and scale collaboration features without creating access sprawl.
For practitioners
- Define permissions, authorization, and authorization service separately Document which team owns the rules, which team owns the decision layer, and which team owns caching, logging, and deployment so accountability is explicit.
- Model relationship-driven access explicitly Use a graph-oriented structure when access depends on nested groups, shared ownership, or transitive relationships that a flat role list cannot represent cleanly.
- Separate policy logic from operational concerns Treat policy evaluation, audit logging, and performance caching as different design choices so changes to one do not unintentionally alter the others.
- Compare build-versus-buy on operational burden Assess whether your team can sustain low-latency decisions, consistent data, and auditability if the authorization layer must be built in-house.
Key takeaways
- The article’s core value is not a new access-control theory, but a clearer vocabulary for separating permission rules from the service that evaluates them.
- Graph-based models fit collaborative systems better because relationship data is often more accurate than flat role lists for real access decisions.
- Teams should treat the decision model and the operational service as distinct governance choices when designing or buying authorization capabilities.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP API Security Top 10 addresses the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and CSA Cloud Controls Matrix set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP API Security Top 10 | API5 — Broken Function Level Authorization | The article centers on how authorization decisions are structured and exposed to applications. |
| Recommendation — Separate authorization functions from application logic and verify decision paths consistently. | ||
| NIST CSF 2.0 | PR.AA-05 — Access Permissions, Entitlements and Authorizations | The piece is fundamentally about how entitlements are defined and evaluated. |
| Recommendation — Document entitlement logic and keep authorization decisions consistent across systems. | ||
| NIST SP 800-53 Rev 5 | AC-6 — Least Privilege | Clear permission boundaries are necessary to prevent overbroad access rules. |
| Recommendation — Apply least-privilege review to the permissions model before exposing it to applications. | ||
| CSA Cloud Controls Matrix | IAM — Identity and Access Management | The article discusses the architecture and governance of access decision systems. |
| Recommendation — Align access decision ownership, auditing, and consistency controls under IAM governance. | ||
Key terms
- Permissions System: A permissions system is the set of rules, data, and decision logic used to determine whether an action is allowed. It may live inside an application or outside it, but its job is to encode the access model and answer permission questions consistently at runtime.
- Authorization Service: An authorization service is the operational layer that sits on top of a permissions system and exposes decisions to applications. It usually adds caching, auditing, deployment management, and infrastructure support so applications can consume access decisions without carrying all the policy machinery themselves.
- Graph-Based Authorization: Graph-based authorization is a model that represents users, resources, and permissions as relationships in a graph. It is useful when access depends on nested hierarchies, shared resources, or indirect relationships between entities. The model is well suited to applications where relationship context matters as much as static roles or attributes.
- Decision Engine: A decision engine evaluates signals about an event and recommends an action such as approve, challenge, or reject. In fraud and trust workflows, it is the control point where multiple indicators are combined into a business outcome, often using rules, models, or both.
Deepen your knowledge
NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
Published by the NHIMG editorial team on June 11, 2026.
Updated on October 10, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org