liveBook · Manning

Relationship-based access control

As explained in Authorization in Action

A relationship permission is an access rule or authorization pattern in which permission depends on an authorization-relevant relationship between entities.

Relationship-based access control (ReBAC) grants permission from the connection between a principal and a resource. A shared-document system, customer portal, or ticketing platform can ask not merely whether someone has a role, but whether they are an owner, viewer, editor, manager of an owner, or another authorized relation. This makes access follow collaboration, delegation, ownership, and organizational structure as those relationships change. section 6.1 section 6.1.4

ReBAC represents principals, teams, and resources as nodes in a relationship graph. Static rules define which relations permit which actions; the current graph supplies the changing policy data. An authorization service evaluates a request against both, so rules can remain stable while sharing, ownership, team membership, and management relationships change over time. section 6.1.1 section 6.4

Figure 6.1 A relationship graph used by ACME Corp’s Customer Collaboration platform. Employees like Bob and Alice are linked to customer accounts through roles such as support engineer and solution architect. Access to resources such as support tickets and deployment plans is controlled by these relationships, allowing for dynamic, fine-grained authorization decisions based on who is connected to what and how.

Inspect the relationship graph to see how employee-to-account links and resource relations support fine-grained decisions for tickets and deployment plans. section 6.1

A practical ReBAC design separates durable relationship facts from the rules that interpret them:

  • Model meaningful, durable relations such as owner, viewer, editor, team member, customer collaborator, and manager. section 6.1 section 6.1.5
  • Define permissions as paths through those relations, including direct access and indirect access such as a manager of the resource owner. section 6.1.1
  • Update relationships through sharing dialogs, project assignments, or administration tools; these changes alter future decisions without rewriting rules. section 6.1.2
  • Provide graph visibility, path tracing, and auditing because a small graph change can create non-obvious access paths. section 6.1.3 section 6.1.5

Shared support ticket

A support engineer can update ticket #456 when recorded as its editor. Its owner can perform all actions, and that owner’s manager can receive inherited access through a defined management path. If the ticket is shared with a customer as a viewer, the graph changes and the customer can view it; no new application-specific role is required. section 6.1.1 section 6.1.2

ReBAC is strongest where people naturally reason about “who is connected to what and how”: shared workspaces, documents, developer portals, support tools, customer collaboration, and scoped project work. It avoids forcing every ownership or delegation variation into a new role, and lets people close to the work grant or revoke access through familiar interface actions. section 6.1.3 section 6.1.4

Relationships alone do not express transient conditions well. Time of day, device posture, geographic location, and similar runtime context should not be disguised as graph edges; attribute-based access control (ABAC) or another policy mechanism can evaluate them directly. Hybrid authorization can retain RBAC for broad responsibilities, use ReBAC for collaboration, and apply ABAC for context-sensitive constraints. section 6.1.5 section 6.3.3

Operational safety depends on relationship lifecycle management and governance. Delegated sharing improves agility but distributes policy-authoring power, so systems need well-designed relationship models, training, guardrails, simulations, and tools that explain why access was allowed. Large or densely connected graphs can make a single change difficult to audit or debug without tracing the full path. section 6.1.3 section 6.1.5

A ReBAC service can fit a standard authorization architecture: an enforcement point intercepts requests, a decision point evaluates static rules against the relationship graph, a policy information point supplies graph and identity data, and policy administration often occurs through the application UI. Systems such as OpenFGA provide a Zanzibar-inspired graph model in which typed relations and permission rules are evaluated dynamically. section 6.1.2 section 8.3

How Authorization in Action covers it

How deep it goes
Explains graph-based evaluation, static rules, relationship updates, architecture mapping, and operational limitations without formal graph algorithms.
Examples
Uses shared documents, support tickets, deployment plans, customer workspaces, ownership, editing, and manager inheritance.
What it assumes
Introduces relationship graphs through ownership and sharing examples while contrasting familiar ACL and RBAC approaches.
What you can do after
Apply it by modeling relations, defining permitted paths, and governing relationship changes in collaborative systems.
How it connects
Connects ACLs, RBAC, ABAC, PBAC, authorization reference architecture, relationship graphs, and OpenFGA.

Also explained in

Compare how 2 books explain relationship-based access control →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Authorization in Action. The section links point to the parts of the book it draws on.