[IAM]
Permissions
Permissions represent the most granular level of access control within IAM. They define exactly what an identity is allowed to do within the PLTFRMS ecosystem.
Permissions are also commonly referred to as scopes in OAuth2 contexts.
What is a permission?
A permission is a single, atomic action or capability, such as:
users.readusers.writeinvoices.createpayments.refund
Permissions are not assigned directly to users in most cases. Instead, they are used as building blocks within roles.
Permissions in the IAM model
Permissions sit at the lowest level of the IAM structure:
User → Group → Role → Permission
This ensures that access is always:
- Structured (via roles and groups)
- Consistent across the platform
- Easy to manage at scale
Permissions and roles
Roles are composed of permissions.
This means:
- A role defines a set of allowed actions
- Permissions define the actual operations that can be executed
- A user inherits permissions through their assigned roles
For example:
- Role:
Adminusers.readusers.writeorganisations.manage
Permissions and OAuth2 scopes
In PLTFRMS, permissions are tightly integrated with OAuth2.
This means:
- Permissions are mapped to OAuth2 scopes
- Access tokens contain granted scopes
- APIs validate permissions based on token scopes
This ensures that authorization works consistently across both internal and external integrations.
Realm and organisation context
Permissions are always evaluated within:
- A Realm (isolation boundary)
- An Organisation (business context)
This ensures that:
- The same permission can behave differently per organisation
- Access is always scoped to the correct tenant context
- No permission exists outside its defined realm
Permission granularity
Permissions are designed to be:
- Atomic — representing a single action
- Composable — combined into roles
- Reusable — shared across roles and clients
- Context-aware — evaluated per realm and organisation
This allows IAM to remain both flexible and strict at the same time.
Types of permissions
IAM supports different categories of permissions:
- Resource permissions — access to entities (users, invoices, etc.)
- Action permissions — create, read, update, delete operations
- System permissions — platform-level or administrative capabilities
- Scoped API permissions — OAuth2-based API access scopes
Permission evaluation
When a request is made, IAM evaluates permissions by:
- Validating identity (user or client)
- Resolving roles via groups and assignments
- Aggregating all permissions from roles
- Checking required permission against granted set
- Enforcing realm and organisation context
Access is only granted if all conditions are satisfied.
Why permissions matter
Permissions are the foundation of all access control in IAM because they:
- Define the exact actions allowed in the system
- Enable fine-grained security control
- Power OAuth2 scope-based authorization
- Allow roles and groups to scale access management
Without permissions, IAM would not be able to enforce secure or granular access decisions.