By NHI Mgmt Group Editorial TeamBased on Cerbos: “Supabase alternative in 2026: Best open source auth options” (April 28, 2026)

TL;DR: Supabase Auth works well for fast sign-in on a Supabase and Postgres stack, but its authorization model stays manual in RLS and becomes harder to govern as roles, tenancy, and cross-service permissions expand, according to Cerbos. The practical issue is not login, but the growing cost of maintaining policy logic in one database layer.


At a glance

What this is: Cerbos analyses where Supabase Auth fits and where it starts to break, concluding that the limitation is authorization scope, not authentication.

Why it matters: IAM teams should read this as a reminder that clean sign-in can still leave them with fragile permission logic when authorization stays embedded in one database layer.


Context

Supabase Auth is an authentication service, but authentication and authorization are not the same control. The article argues that the model works when access decisions stay close to PostgreSQL row-level security, then becomes harder to govern once teams need clearer roles, broader tenancy, or permissions that span services.

For IAM practitioners, the important issue is governance drift. A database-centric access model can feel efficient early on, but manual policy growth makes reviews, change control, and long-term consistency harder as the application surface expands.


Key questions

Q: What breaks when Supabase Auth is used as the only authorization model?

A: Authorization starts to fragment inside row-level security, tables, and app logic as soon as roles, tenancy, or cross-service permissions expand. The result is harder review, weaker consistency, and more effort each time access rules change.

Q: When should teams move authorization out of the database?

A: Teams should move authorization out of the database when access rules must apply across multiple services, resources, or tenancy boundaries. At that point, database policies become too coupled to application design to stay maintainable.

Q: What are the signs that RLS is becoming an authorization bottleneck?

A: Warning signs include policy changes that require repeated database edits, access logic that is hard to explain in reviews, and new product features that need extra exceptions in row-level security. Those signals show the model is carrying more governance than it was designed for.

Q: How should security teams decide whether to replace Supabase Auth or keep it and add authorization separately?

A: Teams should replace Supabase Auth only when the authentication layer itself is the constraint, such as when they need broader federation, protocol support, or a different identity operating model. If sign-in is working and the pain is policy sprawl, keep Supabase for authentication and move authorization into a separate, governed decision layer so access rules are easier to review and change.


Technical breakdown

Why PostgreSQL row-level security becomes the limit

Supabase Auth pushes claims from JWTs into PostgreSQL row-level security, which is convenient when the application lives almost entirely inside that stack. The mechanism works because the database evaluates access rules close to the data, reducing the need for a separate identity provider or policy service. The limit appears when policy logic must reflect relationships, tenancy boundaries, or actions that are no longer local to one database. At that point, the database becomes both data store and policy engine, which couples release timing, permission design, and schema changes. Practical implication: treat database-native authorization as a bounded pattern, not a universal control plane.

Practical implication: separate database filtering from broader authorization once permissions need to span multiple services or domains.

Manual authorization is not the same as built-in role management

The article’s key distinction is that Supabase Auth covers sign-in and token issuance, but leaves authorization logic for the team to assemble manually. That usually means tables, relationships, and Postgres policies become the de facto policy system. This is workable for simple products, but it creates policy debt because every change has to be expressed, reviewed, and tested in application-specific logic. The issue is not that manual authorization is impossible. The issue is that it scales poorly when product scope grows and access patterns become harder to reason about. Practical implication: do not confuse a login service with a governance model for permissions.

Practical implication: move recurring permission decisions into a dedicated authorization layer when policy review starts to dominate delivery work.

What changes when authorization spans services

Once permissions have to apply beyond PostgreSQL, Supabase Auth’s tightly coupled design starts to look narrow. Authorization decisions for documents, services, APIs, and multi-tenant resources become harder to centralise when the model assumes one database backend. That is where a policy decision point becomes architecturally useful: it lets the application keep authentication separate from authorization, while evaluating principal, resource, and action consistently across different services. The article’s comparison shows that the problem is not missing login features, but missing structure for decision consistency. Practical implication: align authorization architecture with the number of resources and services that need to share the same policy logic.

Practical implication: introduce a central policy decision path before cross-service access rules become impossible to maintain consistently.


NHI Mgmt Group analysis

Supabase Auth is not failing at authentication, it is exposing an authorization boundary. The article shows that login, social sign-in, passwordless access, and JWT handling are not the hard part. The hard part begins when teams expect row-level security to behave like an enterprise authorization layer. That boundary matters because IAM programmes fail when authentication success is mistaken for governed access.

Manual policy logic inside the database creates authorization debt. When roles, tenancy, and cross-service permissions are encoded in tables and Postgres policies, the application team inherits the governance burden. Reviews get slower, changes become riskier, and policy behaviour is harder to explain. The implication is that teams need to stop treating database policy as an implementation detail once access logic becomes a product capability.

Fine-grained authorization and authentication are different control layers, and mixing them hides risk. Supabase Auth can still be a valid sign-in layer even when it is no longer the right authorization layer. The article’s core lesson is architectural separation, not replacement for its own sake. Practitioners should judge each layer on the control it actually provides, not on how conveniently the stack bundles it.

Database-bound authorization will keep colliding with app growth. The more an application depends on service boundaries, tenancy models, and evolving roles, the less sustainable it becomes to express access only in one database layer. That is why the practical alternative is not always to change identity systems. In many cases, the better move is to externalise policy while keeping authentication where it already works.

Permission logic should be evaluated as a governance surface, not just a code pattern. The article’s strongest signal is that the real product decision is whether access rules remain local or become centrally managed. That distinction affects reviewability, change control, and long-term maintainability across the identity programme.

From our research library:

What this signals

The practical lesson for IAM programmes is that permission governance has to be designed as a distinct layer once access rules outgrow a single database. Keeping authentication and authorization separate preserves flexibility when the product starts to span services, tenants, and different resource types.

Authorization boundary creep: when a database policy layer quietly becomes the system of record for access decisions, every new role or resource type increases governance overhead. That is the point where teams should treat authorization as architecture, not implementation detail.


For practitioners

  • Map authorization scope before replacing authentication Inventory which access decisions are currently enforced in PostgreSQL row-level security and which now need to apply across services, tenants, or resources outside the database.
  • Separate sign-in from permission decisions Keep Supabase or any equivalent authentication layer focused on identity proofing and token issuance, then route access decisions through a dedicated policy layer when logic grows beyond simple database rules.
  • Reduce policy debt in database rules Review whether tables, relationships, and RLS conditions are now acting as a hidden authorisation system, and move recurring decisions into a centrally governed model before change review becomes the bottleneck.
  • Test multi-tenant and cross-service cases explicitly Validate access decisions for users who belong to multiple tenants, services, or roles, because those cases are where tightly coupled database policies usually become hardest to reason about.

Key takeaways

  • Supabase Auth is effective for straightforward sign-in flows, but its authorization model becomes harder to govern as access rules expand beyond a single Postgres-backed application.
  • The main pressure point is not identity proofing, but the growing cost of maintaining manual policy logic inside row-level security and application code.
  • Teams should decide early whether permission control belongs in the database or in a dedicated authorization layer, because that choice determines how well access governance scales.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 addresses the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Non-Human Identity Top 10NHI-05 — Overprivileged NHIManual policy sprawl can hide excessive access scope as apps grow beyond simple database rules.
Recommendation — Review access scope where database policies now govern more than one application boundary.
NIST CSF 2.0PR.AA-05 — Access Permissions, Entitlements and AuthorizationsThe article is fundamentally about how permissions are governed as application scope expands.
Recommendation — Separate authentication from authorization and manage entitlements through a defined access control model.
NIST SP 800-53 Rev 5AC-6 — Least PrivilegeAuthorization logic must remain bounded as teams add roles, tenants, and service boundaries.
Recommendation — Apply least privilege to database and application authorization decisions before policy sprawl grows.
CIS Controls v8CIS-5 — Account ManagementThe article centers on managing access as identity and permission complexity grows.
Recommendation — Centralise account and permission governance once the application outgrows ad hoc database rules.

Key terms

  • Row-Level Security: Row-level security is a database control that restricts which rows a session can read or modify based on policy. For multi-tenant apps, it is valuable because it pushes tenant enforcement below application code, reducing the chance that a forgotten filter exposes another organisation's data.
  • Policy decision point: A policy decision point evaluates contextual rules and returns an access decision that enforcement points can act on. It separates authorization logic from application code, which helps teams manage tenant rules, resource ownership, and risk signals consistently.
  • Authentication: Authentication is the process of proving that an identity is genuine. In practice, it uses credentials, certificates, biometrics, or other factors to establish who or what is requesting access. For NHIs, the key issue is whether the proof is strong enough to resist theft, replay, or misuse.
  • Authorization: Authorization is the decision about what an authenticated identity is allowed to do. In NHI and IAM practice, it covers scope, duration, and allowable actions, and it is the layer that most directly controls blast radius when access is active.

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.
NHIMG Editorial Note
Published by the NHIMG editorial team on June 10, 2026.
Updated on October 6, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org