In resource-based models, permissions travel with the object or resource itself, which enables sharing and ownership patterns but requires careful delegation boundaries and review.
Resource-based permissions and delegation attach access rules to the resource itself rather than defining everything centrally on the subject. This pattern is common in document sharing systems, project ownership, object stores, customer workspaces, repositories, and many SaaS products. Instead of saying “user X has permission Y everywhere,” the system says “this object or collection may be read, edited, shared, or administered by these identities under these constraints.”
This model is powerful because it matches how many products actually behave. A document owner can share one document without becoming a global admin. A project maintainer can invite collaborators to one workspace. A tenant admin can delegate support to a team inside their own tenant. These are natural, useful behaviors. They also create risk when ownership is unclear, shares accumulate, or delegates can expand access farther than intended.
Resource-based authorization often solves a problem that role-based systems handle awkwardly: object-level or tenant-level ownership. In a document platform, it may be impractical to create a central role for every file or folder relationship. In a customer-facing SaaS product, each tenant may need its own local administrators, contributors, viewers, and delegates. Resource-based permissions make that possible.
The downside is that permission state becomes more distributed. Reviewers can no longer look only at central role assignments. They may also need to inspect object ACLs, share links, workspace membership, owner relationships, and delegation rules. Without strong boundaries, resource-based sharing can grow into invisible privilege creep.
The diagram below shows a typical delegation path.
flowchart LR
A["Resource owner"] --> B["Grant scoped access"]
B --> C["Delegate or collaborator"]
C --> D["Use allowed actions"]
D --> E["Audit and review"]
B --> F["Revocation or expiry"]
What to notice:
Typical examples include:
This pattern works best when the resource model is clear and ownership is meaningful. If the product cannot reliably determine who owns a resource or what boundary it sits inside, delegation quickly becomes ambiguous.
Delegation is not the same as unrestricted permission transfer. Strong resource-based models usually constrain delegation by:
For example, a project owner may grant viewer or editor inside one workspace but may not grant organization-wide billing admin. A tenant admin may delegate user management inside the tenant but not change the platform’s global security policy.
The following YAML example shows a generic object-level sharing model with bounded delegation.
1resource:
2 id: workspace-742
3 owner: team-alpha
4 acl:
5 - subject: user-123
6 role: maintainer
7 can_delegate:
8 - viewer
9 - contributor
10 - subject: user-456
11 role: viewer
12 can_delegate: []
13 constraints:
14 tenant_id: tenant-acme
15 delegation_may_cross_tenant: false
16 share_expiry_required_for_external: true
This model stays safer than a free-form sharing system because:
This is the kind of guardrail that keeps product sharing features usable without turning them into uncontrolled privilege spread.
Resource-based models do not eliminate the need for central policy. Central rules often still define:
This is why resource-based permissions often complement, rather than replace, RBAC or policy engines. The central model defines guardrails, while the resource model handles local ownership and collaboration.
A SaaS collaboration product allows any workspace editor to invite anyone else as another editor, with no expiry, no tenant constraint, and no clear owner review. The team argues that this keeps collaboration friction low. Is that a strong delegation design?
No. It prioritizes convenience without preserving ownership boundaries. The stronger design would define who may delegate, to which roles, within which tenant or sharing boundaries, and with what review or expiry rules for broader access. Delegation should be useful, not unbounded.
Application security fundamentals • SaaS authorization design tracks • zero-trust and tenant-isolation learning paths
This lesson is the bridge from central authorization models into product-level sharing, tenant administration, and delegated control. It becomes especially important again in the later chapter on IAM for applications, APIs, and microservices.