RBAC vs ABAC vs ReBAC: Choosing an Authorization Model
Updated 2026-05-06 · 13 min read · By @guptadeepak
Key takeaways
- RBAC scales to ~5–10 roles; beyond that, role explosion makes maintenance expensive.
- ABAC handles arbitrary policy logic but pushes policy authoring into XACML or Rego, significant complexity.
- ReBAC, popularized by Google's Zanzibar paper, models permissions as graph relationships and scales to billions of objects.
- Most B2B SaaS in 2026 ends up with a hybrid: RBAC for coarse-grained policy, ReBAC for resource-level permissions.
- Native Zanzibar implementations: OpenFGA, SpiceDB (Authzed), Permify, Ory Keto, Auth0 FGA, WorkOS FGA.
Three models, briefly
The choice between them is not aesthetic. Each model has scaling and authoring characteristics that determine which scenarios it handles cleanly and which it makes expensive.
RBAC: roles that aggregate permissions
RBAC is the model most teams start with: define a set of roles (admin, editor, viewer), assign permissions to roles (admin can delete, editor can write, viewer can read), and assign roles to users. At check time, the system answers "does this user have a role that grants this permission?"
Alice → role: admin → permissions: [users.delete, billing.read, ...]
Bob → role: editor → permissions: [posts.write, posts.read]
RBAC works well when:
- The role count stays small (5–10 roles is typical, 20 starts to feel awkward, 50+ is unmaintainable).
- Permissions don't need to vary per resource instance.
- Role assignment is the right abstraction for the buyer (admin assigns roles in a console).
RBAC breaks down when teams start creating roles like editor-of-project-X or viewer-of-document-Y to model resource-specific permissions. That's role explosion, and it's the signal to add ReBAC or move to it.
ABAC: policies that evaluate attributes
ABAC moves the decision from "does the user have a role" to "does this policy evaluate true for these attributes." Policies are expressed in a language (XACML historically; Rego via OPA in modern deployments) and consider attributes of the subject, resource, action, and environment.
allow if {
input.subject.department == input.resource.department
input.subject.clearance >= input.resource.classification
time.now_ns() >= input.resource.releaseDate
}ABAC handles arbitrary logic that doesn't fit role aggregation cleanly: time-of-day rules, classification-versus-clearance, geographic restrictions, dynamic conditions. The price is policy authoring complexity, Rego is a real language, policy edits often require dedicated review, and policy mistakes can be subtle (allow-deny precedence, missing default-deny).
ABAC fits well when:
- Policy logic genuinely doesn't reduce to roles.
- The team has policy-authoring competence (security engineers, compliance team, dedicated authz reviewers).
- The decision needs to consume context that role assignment can't capture.
ABAC fits poorly when:
- The use case is "Alice can edit Project X", that's relationships, not attribute logic.
- The team isn't ready for Rego / XACML authoring.
ReBAC: relationships in a graph
ReBAC was named in academic literature long before Zanzibar, but the 2019 Google paper is the reason the model is mainstream in 2026. Permissions are modeled as relationships between subjects and objects, expressed as triples:
project:acme-launch#editor@user:alice
document:roadmap-v3#parent@project:acme-launch
team:engineering#member@user:bob
Authorization checks traverse the graph: "Does Alice have edit permission on document:roadmap-v3?" → walk from user:alice through her relationships to find a path that grants the permission. Inheritance is expressed as schema rules: "Edit on a project implies edit on its child documents."
ReBAC fits well when:
- The application has resources users hold permissions on (projects, documents, repos, channels, files).
- Permissions inherit through a containment hierarchy.
- Sharing is a first-class operation, granting Alice access to one resource without changing her role.
- The system needs to answer "which resources does Alice have access to" (reverse queries).
The Zanzibar architecture additionally handles the consistency model (zookies) so that authorization decisions can be cached across geo-distributed datacenters without staleness violating user expectations.
When teams compose models
Most mature B2B SaaS in 2026 run a hybrid:
- RBAC for coarse policy, admin vs member vs billing-only at the org level.
- ReBAC for resource-level permissions, who can edit which project, who can view which document.
- ABAC for the edge cases, region-locked resources, business-hours-only operations, classification policies.
The composition isn't theoretical. WorkOS ships RBAC primitives plus WorkOS FGA (Zanzibar-style ReBAC). Auth0 ships role-based authorization plus Auth0 FGA. Authress ships ReBAC as the design center with RBAC convenience on top.
Implementation choices in 2026
For RBAC, every CIAM in this index ships role primitives, the choice is bundled with the CIAM choice, not a separate evaluation. ReBAC and ABAC are the dimensions where standalone authz vendors compete: which engine handles fine-grained per-resource permissions at scale, and which policy language fits the team's authoring competence. The 2026 production-ready picks are below; for most B2B SaaS, the question collapses to "which Zanzibar implementation matches our stack."
For ReBAC at scale, the production-ready Zanzibar implementations are:
- OpenFGA, CNCF Sandbox project, originated at Auth0/Okta, broadly vendor-neutral.
- SpiceDB (Authzed), commercial Zanzibar implementation, also OSS.
- Permify, OSS Zanzibar with growing adoption.
- Ory Keto, bundled with the Ory stack.
- Auth0 FGA, managed, tightly integrated with Auth0 CIAM.
- WorkOS FGA, managed, bundled with WorkOS B2B SaaS auth.
For ABAC, OPA (Open Policy Agent) is the dominant 2026 choice, with Rego as the policy language. Casbin is the alternative for teams preferring a smaller surface and library-style integration.
Vendor support snapshot
Among full-platform CIAM, native ReBAC support clusters around: Auth0 FGA, WorkOS FGA, Authress (the only CIAM in this index built around ReBAC as the design center), Ory Keto, and Casdoor (via Casbin). Everything else either ships RBAC plus a recommendation to pair with OpenFGA / SpiceDB / Permify, or ships RBAC plus ABAC and considers ReBAC out of scope.
Related vendors
Auth0
Auth0 remains the safest mid-market default for B2C plus B2B Enterprise SSO when developer velocity matters more than long-run TCO. Below 50k MAU it is hard to beat. Above 500k MAU, cost and Actions-driven lock-in make alternatives like FusionAuth (self-host), Cognito (AWS-native), or Stytch plus Corbado (passkey-first) increasingly attractive.
Authress
Authress is the authorization-first developer CIAM in 2026, native ReBAC and Zanzibar-style FGA at a price point materially below Auth0 FGA or WorkOS FGA. For B2B SaaS designing fine-grained per-resource permissions where authorization is the binding constraint rather than authentication, Authress removes the two-vendor split (full CIAM plus separate authz service) most teams end up running. For teams whose binding constraint is auth methods or B2C scale, look elsewhere.
Casdoor
Casdoor is the OSS CIAM with the strongest native authorization integration via Casbin (same maintainer), Apache 2.0 licensed and broad-featured. The trade-offs are dated DX, English-documentation rough edges, and a sprawling scope that spans CIAM plus adjacent domains. For teams that value Casbin authz tightly coupled to identity, or for China-region deployments where Casdoor has strong adoption, it is a credible OSS pick. For Western enterprise with strict compliance needs, look at Keycloak / FusionAuth / Zitadel instead.
Ory
Ory is the most architecturally modern open-source CIAM in 2026, Go-based, Kubernetes-native, composable components, strict Apache 2.0, with native Zanzibar-style FGA via Keto that no other full-platform vendor in this index ships natively. The trade-off is operational scope: running four composable services rather than one binary suits Kubernetes-native teams and frustrates everyone else. For teams that want OSS plus FGA from one vendor, Ory is the singular pick.
WorkOS
WorkOS is the strongest B2B-first CIAM in 2026 by deliberate scope choice, every product surface assumes the buyer is selling to enterprise IT, not to consumers. AuthKit's 1M MAU free tier makes it a credible Auth0 alternative for B2B SaaS that doesn't need adaptive risk or B2C consumer flows. For pure B2B SSO, SCIM, and audit logs, WorkOS is hard to beat at any price point.
FAQ
- When is RBAC enough?
- When the application has a small number of role categories (admin, member, viewer, etc.) and permissions don't need to vary per resource instance. Most internal tools and many B2B SaaS at MVP scale fit this. The transition point is when teams start creating roles like 'editor-of-project-X' to handle resource-specific permissions, that's role explosion and the signal to add ReBAC or ABAC.
- What is the Zanzibar paper and why does it matter?
- Google published the Zanzibar paper in 2019, describing the consistent global authorization system that powers Google Drive, YouTube, Calendar, and other Google services. It introduced the relation-tuple data model and the consistency model (zookies) that became the template for modern fine-grained authorization. OpenFGA, SpiceDB, Permify, and Ory Keto are all Zanzibar-derived.
- Should I use RBAC or ReBAC for a B2B SaaS?
- Start with RBAC for coarse-grained policy (admin / member / billing / etc.) and add ReBAC when you need per-resource permissions ('Alice can edit Project X', 'Members of Acme team can view Document Y'). Most mature B2B SaaS run both, RBAC for role gates, ReBAC for resource-level checks.
- Is OPA (Open Policy Agent) the same as ABAC?
- OPA implements a policy-evaluation engine using the Rego language, which is general enough to express RBAC, ABAC, and ReBAC patterns. In practice, OPA deployments most often look like ABAC because the Rego policies tend to express attribute-based rules. OPA itself is not bound to any one authorization model.
Sources
- Google Zanzibar paper (Pang et al., 2019)
- NIST RBAC standard (ANSI INCITS 359-2004)
- OPA / Rego documentation
- OpenFGA documentation