




3366 Members
Authorization as a service decides what a signed-in user, service, or agent can do after login. Authentication as a service (Auth0, Cognito, Clerk) verifies who is asking. The best authorization option depends on your access model, who edits policy, and where decisions run. Permit.io fits a managed control plane with local PDPs. The other options fit the cases below.
We build Permit.io, so read this as a vendor-written comparison. To keep it useful, we based the comparison on each vendor's documentation or pricing page, checked on 5 October 2026. Where a point depends on vendor documentation, we attribute it or avoid stating it as fact. These products change quickly, so open the linked pages before you decide. For foundational concepts, see our earlier introduction to authorization as a service.
Authorization as a service is a hosted or partly hosted system that decides what a signed-in user, service, or agent can do in your application, so you do not rebuild that logic in every codebase. Authentication as a service (products like Auth0, Amazon Cognito, or Clerk) verifies who the user is; authorization as a service answers what they can do after that. See authentication vs authorization. Most teams start with a few if statements and a roles column, then discover that tenants, sharing, custom roles, and audit questions turn that code into a product of its own.
An authorization service takes that logic out of the application. Your code acts as the enforcement point and asks a decision point a question such as "can this user publish this document?". The service provides some mix of a policy store, a decision engine, and a management interface. The differences that matter are who edits policy, where the decision is computed, and which access model the engine understands. For the architecture behind this split, see PEP, PDP, and decision logs, and for the build-or-buy question see why rolling your own RBAC gets expensive and why teams stop rebuilding permissions in application code.
The table compares seven options on the dimensions that usually decide the shortlist. It lists billing models and no prices, because plans change often. Access models, languages, and licensing come from each vendor's documentation.
| Product | Access models | Deployment | Policy language | Open source | Pricing model |
|---|---|---|---|---|---|
| Permit.io | RBAC, ReBAC, ABAC (ABAC runs on the Edge PDP, not the Cloud PDP) | Cloud control plane with managed Cloud PDP or Edge PDP in your network; light and full on-premise on Enterprise | Policy Editor that generates Rego or Cedar; custom Rego through GitOps | Edge PDP, OPAL, and cedar-agent are open source; the control plane is a commercial service | Free Community tier; paid tiers are usage-based (Pro and Enterprise MAU); Enterprise by quote |
| Oso Cloud | RBAC, ReBAC, ABAC, according to Oso | Managed cloud; hybrid with read-only fallback nodes; self-hosted on AWS | Polar | Commercial service; the legacy open source library is deprecated | Usage-based, according to Oso docs |
| Cerbos | RBAC, ABAC, PBAC; Cerbos also lists ReBAC | Self-hosted PDP as service, sidecar, or daemonset; optional managed Cerbos Hub | YAML or JSON policies with CEL conditions | PDP is open source (Apache 2.0); Cerbos Hub and Synapse are commercial | PDP free; Cerbos Hub priced by monthly active principals |
| AuthZed | ReBAC (Zanzibar-inspired) with caveats | AuthZed Cloud, Dedicated Cloud, or self-hosted SpiceDB | SpiceDB schema language | SpiceDB is open source (Apache 2.0) | Resource-based cloud billing; annual per-region, per-vCPU license for self-hosted |
| Auth0 FGA | ReBAC, built on OpenFGA | Managed service | OpenFGA-based authorization model | Built on OpenFGA, a CNCF project; the managed service is commercial | Free evaluation tier; production requires an enterprise contract |
| WorkOS FGA | Resource-scoped roles with hierarchical inheritance, extending WorkOS RBAC | Hosted API | Resource types, roles, and permissions set in the WorkOS Dashboard, no schema DSL | No open source component described in the docs | Not listed on WorkOS's public pricing page at the time of writing |
| AWS Verified Permissions | Policy-based control with roles and attributes | Managed AWS service | Cedar | Cedar is open source; the service is managed by AWS | Pay per API request, no minimum |
Two notes on reading it. First, a "yes" for a model is not the same as parity: Permit's own docs say the Cloud PDP evaluates RBAC and ReBAC but not ABAC, and you need an Edge PDP for attribute conditions and custom policy code. Second, "managed" can mean a hosted decision API, a hosted control plane with decisions in your network, or both, and that difference usually decides the shortlist.
Three questions remove most candidates.
Who changes policy? If only engineers do, in pull requests, a policy-as-code engine with a clear testing workflow may be enough. If product managers, support, or your customers' administrators need to change access without a release, you need an editor or embeddable UI, and that narrows the field.
Where must the decision run? A check sits on the critical path of every request. Some teams are comfortable with a hosted decision API. Others need the decision point in their own VPC, or fully air-gapped. Check what happens to decisions when the vendor's control plane is unreachable, and ask for the answer in the vendor's own docs.
What shape is your data? Tenant-wide roles with a handful of permissions are a different problem from a Google-Docs-style graph of folders, groups, and shares. Relationship-heavy products are built for the second case. Role-first products are simpler for the first. For a deeper look at the models themselves, read RBAC vs ABAC vs ReBAC. For a step-by-step evaluation process, see how to choose an authorization service, and for a self-hosted shortlist see top open-source authorization tools for enterprises in 2026.
Each section ends with when to choose that product and, where another option fits better, when to choose that instead.
Permit.io splits authorization into a control plane and decision points. The control plane lives in Permit's cloud, where you manage policy in the Policy Editor, the API, Terraform, or GitOps. The editor generates policy as code for OPA (Rego) or Cedar. Decisions come from a managed Cloud PDP, or from an Edge PDP container that you run beside your services, kept in sync by OPAL. Permit also ships Permit Elements, embeddable components for user management, access requests, approvals, and audit logs.
Permit generates policy in open languages (Rego or Cedar) rather than a proprietary format. OPA is a CNCF graduated project, and Cedar was accepted to the CNCF at Sandbox on 8 October 2025. The generated policy can be reviewed in Git, tested with standard tools (opa test on the policy repository, Permit CLI test commands), and reused outside Permit if you later change control planes.
Beyond the editor, Permit is built for a full policy SDLC. You can manage the authorization model with the official Terraform provider (permitio/permit-io on the Terraform Registry), sync generated policy into a Git repository you own through GitOps, separate projects and environments for promotion, drive changes from the API and Permit CLI, and wire CI/CD plus policy tests before production.
Permit.io models ReBAC with resource instances, relationship tuples, resource roles, and role derivation. OPAL pushes policy and related data to Edge PDPs so checks can run against a local copy without the application stuffing the full graph into every request. For larger relationship-heavy datasets, Permit documents Nexus PDP (early access as of September 2026) as a self-hosted option with on-disk storage and sync that resumes after disconnection. Treat Nexus availability as time-sensitive and recheck before you buy.
The Cloud PDP does not evaluate ABAC or custom Rego, so those workloads need an Edge PDP that you operate. The Policy Editor generates allow rules, and deny-override rules need custom Rego.
Permit.io's own service holds a SOC 2 Type II attestation covering Security, Availability and Confidentiality. The latest renewal was completed in January 2026, and Sections 1 and 2 of the report are public on the trust center. Business Associate Agreements are available where applicable. Pricing is on the pricing page: a free Community tier, usage-based Pro and Enterprise tiers priced by MAU, and Enterprise plans by quote.
Choose Permit.io when
Choose something else when
Oso Cloud is a hosted authorization service built around Polar, a declarative logic language. According to Oso's docs, Polar can express RBAC, ReBAC, and ABAC. Oso offers three deployment models: cloud, hybrid with read-only fallback nodes in your infrastructure, and self-hosted, which Oso currently supports on AWS. Its Local Authorization feature can return SQL expressions to run against your own PostgreSQL or MySQL database, which is useful for filtering lists. Oso's public pricing page now lists plans for Oso for Agents, and its docs describe Oso Cloud billing as usage-based, so ask Oso for current Oso Cloud pricing.
Choose Oso Cloud when
Choose something else when
Cerbos is built around an open source, stateless PDP that you run as a service, sidecar, or daemonset. Policies are YAML or JSON files with CEL conditions, typically stored in Git. Cerbos Hub is an optional commercial control plane for authoring, testing, distribution, and audit log aggregation. According to Cerbos, the PDP needs no license or Hub account. Cerbos pricing is based on monthly active principals, with the open source PDP free.
Cerbos policies are YAML or JSON documents with CEL conditions. That format is Cerbos-specific. CEL itself is an open expression language, but the surrounding policy schema, rule shape, and evaluation semantics are proprietary to Cerbos. Teams that invest deeply in Cerbos policy files should plan for a rewrite if they move engines later. YAML is designed for configuration and structured data, not for expressing branching logic. In Cerbos, complex rules become CEL expression strings embedded inside YAML fields. Those strings are harder to format, refactor, type-check, and unit-test than policy written in a language meant for logic (such as Rego or Cedar). For small allow/deny matrices this is fine. For large, evolving authorization logic, a dedicated policy language is usually easier to keep correct.
The PDP is stateless: it evaluates the policies it has loaded against the principal and resource attributes supplied on each API request. Relationship facts are not stored as a first-class graph inside the open source PDP the way Permit stores relationship tuples; if a rule needs "user owns folder," the caller (or Synapse) must provide those attributes on the check.
For a deeper technical comparison, see Permit.io vs Cerbos: managed control plane vs self-hosted PDP.
Choose Cerbos when
Choose something else when
AuthZed develops SpiceDB, an open source permissions database inspired by Google Zanzibar. You describe your model in the SpiceDB schema language, write relationships, and query permissions with configurable consistency. AuthZed sells AuthZed Cloud, Dedicated Cloud, and self-hosted licenses, and SpiceDB itself is Apache 2.0 licensed.
Choose AuthZed when
Choose something else when
Auth0 FGA is Okta's managed relationship-based access control service built on OpenFGA, the CNCF open source project. You write an authorization model and store relationship tuples. According to the subscription docs, the free tier is for evaluation, with limits such as 100 monthly active users and 50 thousand tuples, and production use requires an enterprise contract.
Choose Auth0 FGA when
Choose something else when
WorkOS FGA extends the WorkOS RBAC product with resources arranged in a hierarchy, so a role on a workspace flows down to the projects and apps inside it. According to the docs, it has no schema DSL, integrates with SSO, Directory Sync, and AuthKit, and can be adopted incrementally. Subjects today are organization memberships and groups. WorkOS's public pricing page did not list FGA when we checked, so confirm terms with WorkOS.
Choose WorkOS FGA when
Choose something else when
Amazon Verified Permissions is a managed service for fine-grained authorization in custom applications. Policies are written in Cedar, the open source policy language, and managed through the AWS console, APIs, or CloudFormation. It assumes the user is already authenticated elsewhere, for example by Amazon Cognito or another OIDC provider. AWS prices it per API request, with no upfront or minimum fees.
Choose AWS Verified Permissions when
Choose something else when
When you shortlist an authorization service, ask how decisions behave under failure, how policy and data reach the decision point, and how you export audit evidence. Below is what Permit.io documents today, plus Cerbos where its docs are explicit. For the other vendors in this post, treat the questions at the end as the evaluation checklist unless their docs state the answer clearly.
With Permit.io, an Edge PDP answers from the policy and data it already holds. The trust center says a local PDP can continue evaluating cached policy during a temporary control-plane interruption, and that policy updates resume when connectivity returns. The managed Cloud PDP is hosted by Permit, so checks depend on Permit's service being available. Edge PDPs can optionally cache repeated decisions for a TTL (off by default); cached answers can be stale until the entry expires. Sidecar Edge PDPs send checks over loopback, which Permit docs describe as sub-millisecond.
With Cerbos, the standalone PDP has no control-plane dependency for decisions. Cerbos Hub is optional for authoring, signed bundle distribution, and audit aggregation. If Hub is in your design, ask Cerbos what a connected PDP serves when Hub is unreachable.
Public docs we checked for Permit and Cerbos do not define a product-level fail-open or fail-closed switch for the case where the PDP itself is unreachable. That choice belongs to your enforcement point. Ask each vendor, and your own integration, what happens when the decision service does not answer.
Permit.io uses OPAL inside the Edge PDP to push policy and data from the control plane so decisions run from a local copy (deployment options).
Cerbos loads policies through storage drivers such as disk, Git, blob stores, and databases. Callers typically pass attributes with each request; Cerbos Hub can push signed policy bundles after validation and tests.
Permit.io provides an Audit Log screen and API filterable by user, date, decision, and tenant. Edge PDPs deployed with the Permit Helm chart can use the logs forwarder to send decision logs to stdout or Elasticsearch.
Cerbos PDP audit logging supports local, file, and Kafka backends. Cerbos Hub audit log collection aggregates decision logs across PDPs, with local buffering when the network drops.
| If your top requirement is | Start with |
|---|---|
| Non-engineers and customer admins manage access, hybrid deployment | Permit.io |
| Policy as files in Git, self-hosted decision point, no control plane | Cerbos |
| Large relationship graph with Zanzibar-style consistency | AuthZed |
| You already run Auth0 or Okta and your model is relationship-based | Auth0 FGA |
| You already use WorkOS and need resource-scoped roles | WorkOS FGA |
| AWS-only workloads, Cedar, pay per request | AWS Verified Permissions |
| Declarative logic language and filtering against your own SQL database | Oso Cloud |
Authorization as a service is a hosted or partly hosted system that decides whether a user, service, or agent may perform an action on a resource, so you do not build that logic into each application. Your code asks a decision point and enforces the answer. The service usually adds a way to manage policy and, in some products, user-facing UI and audit logs.
It depends on who manages access and where decisions run. Teams that need per-tenant roles, customer-admin UI, and decisions in their own network often shortlist Permit.io (see also best practices for multi-tenant authorization). Teams that prefer policy as files in Git look at Cerbos, and teams with sharing-heavy relationship graphs look at AuthZed or Auth0 FGA.
Several products have free options with different limits. Permit.io's Community plan is free and lists limits of 1,000 monthly active users and 20 tenants. The Cerbos PDP and SpiceDB are open source and free to self-host, Auth0 FGA has a free evaluation tier that is not meant for production, and AWS Verified Permissions charges per request with no minimum.
Cerbos and SpiceDB are open source and can run entirely in your infrastructure. Permit.io's Edge PDP runs in your network and Enterprise customers can deploy the full platform on-premise. Oso supports self-hosting on AWS, and OpenFGA, the open source base of Auth0 FGA, is self-hostable. According to their docs, AWS Verified Permissions and WorkOS FGA are hosted services.
OPA and Cedar are policy engines: they evaluate policy against input and return a decision. An authorization service adds what surrounds the engine, such as policy storage, data synchronization to decision points, a management interface, and audit logs. Some services are built on these engines. Permit.io, for example, runs OPA or Cedar inside its decision points. For a deeper comparison, read the policy engine showdown.
Start with the question you need to answer. Roles answer "what can an editor do", attributes answer "under what conditions", and relationships answer "what does this person have to do with this specific document". Many products grow into a mix, so check whether the service can combine models before you commit. See RBAC, ABAC, and ReBAC for the basics.
Permit.io's service holds a SOC 2 Type II attestation covering Security, Availability and Confidentiality, with the latest renewal completed in January 2026. Sections 1 and 2 of the report are public on the trust center. Using Permit does not make your own application SOC 2 compliant, because your controls and your audit remain your own.

Co-Founder / CEO at Permit.io