ZANZIBAR AUTHORISATION FOR YOUR APPLICATION

Zanzibar permissions for groups, roles and shared data.
Zanzibar permissions for groups, roles and shared data.

Use Zanzibar-style relationships to model groups, roles, shared objects and inherited access. Keldra evaluates permissions with the data: queries return only authorised records, and object reads and writes enforce application and bucket permissions.
Relationship rules for records, files and query results.

Groups, roles and row-level access in one model

Define the relationships your product needs instead of maintaining a separate permissions system for every feature. A JSON document is an object, so object-level access also provides row-level permissions for indexed records.

Groups and teams

Give a team access to a workspace and let membership carry that access to its users. Change membership in one place rather than rewriting each object's access list.

Roles and RBAC

Model owners, editors, viewers or your own roles as relationships. Define which actions each role permits and combine roles with other relationships in the schema.

Object and row-level permissions

Share one file or JSON record without opening the entire collection. Realm-aware searches filter records before building results, counts, facets and aggregates.

Inherited access

Carry access from an organisation to a workspace, folder or document through schema rules. Keep shared access consistent without copying permission logic into each endpoint.

Custom application realms

Use your own users, resource types and permission names in a custom realm. Your authenticated backend supplies the end-user subject and the relation each query input must satisfy.

Enforcement at the data boundary

Keldra checks object API reads and writes and applies custom-realm visibility inside indexed queries. Use the same Zanzibar engine for your application's edit and delete rules before submitting a generic object mutation.

Groups and teams

Give a team access to a workspace and let membership carry that access to its users. Change membership in one place rather than rewriting each object's access list.

Roles and RBAC

Model owners, editors, viewers or your own roles as relationships. Define which actions each role permits and combine roles with other relationships in the schema.

Object and row-level permissions

Share one file or JSON record without opening the entire collection. Realm-aware searches filter records before building results, counts, facets and aggregates.

Inherited access

Carry access from an organisation to a workspace, folder or document through schema rules. Keep shared access consistent without copying permission logic into each endpoint.

Custom application realms

Use your own users, resource types and permission names in a custom realm. Your authenticated backend supplies the end-user subject and the relation each query input must satisfy.

Enforcement at the data boundary

Keldra checks object API reads and writes and applies custom-realm visibility inside indexed queries. Use the same Zanzibar engine for your application's edit and delete rules before submitting a generic object mutation.

Groups and teams

Give a team access to a workspace and let membership carry that access to its users. Change membership in one place rather than rewriting each object's access list.

Roles and RBAC

Model owners, editors, viewers or your own roles as relationships. Define which actions each role permits and combine roles with other relationships in the schema.

Object and row-level permissions

Share one file or JSON record without opening the entire collection. Realm-aware searches filter records before building results, counts, facets and aggregates.

Inherited access

Carry access from an organisation to a workspace, folder or document through schema rules. Keep shared access consistent without copying permission logic into each endpoint.

Custom application realms

Use your own users, resource types and permission names in a custom realm. Your authenticated backend supplies the end-user subject and the relation each query input must satisfy.

Enforcement at the data boundary

Keldra checks object API reads and writes and applies custom-realm visibility inside indexed queries. Use the same Zanzibar engine for your application's edit and delete rules before submitting a generic object mutation.

Permissions scattered across an app

One endpoint checks team membership. Another keeps its own access list. Search returns a file the user cannot open. Duplicated permission logic is difficult to maintain and easy to apply inconsistently as your application grows.

One place to define access

Record who is related to which resource and define what those relationships allow. Your application owns its policy and relationship facts; Keldra evaluates the rules. Indexed queries can apply the chosen subject and relation before collecting their results.

How it works

Model relationships, define the rules and use the right authorisation context for each operation.

Define relationships

Record facts such as a user belonging to a team or a team having access to a workspace. These relationship records are called tuples.

Write the access rules

A Zanzibar-style schema defines permissions from relationships, including inherited access. Use your application's resource names and business rules.

Query for the right user

An authorised application supplies the custom realm, end-user subject and relation. Each query input can check its own relation before hits, groups, facets or joined results are collected.

Protect reads and writes

Keldra automatically enforces application and bucket permissions on object operations. Evaluate your custom user's edit or delete relation with the same authorisation APIs when your backend handles an application action.

Define relationships

Record facts such as a user belonging to a team or a team having access to a workspace. These relationship records are called tuples.

Write the access rules

A Zanzibar-style schema defines permissions from relationships, including inherited access. Use your application's resource names and business rules.

Query for the right user

An authorised application supplies the custom realm, end-user subject and relation. Each query input can check its own relation before hits, groups, facets or joined results are collected.

Protect reads and writes

Keldra automatically enforces application and bucket permissions on object operations. Evaluate your custom user's edit or delete relation with the same authorisation APIs when your backend handles an application action.

Define relationships

Record facts such as a user belonging to a team or a team having access to a workspace. These relationship records are called tuples.

Write the access rules

A Zanzibar-style schema defines permissions from relationships, including inherited access. Use your application's resource names and business rules.

Query for the right user

An authorised application supplies the custom realm, end-user subject and relation. Each query input can check its own relation before hits, groups, facets or joined results are collected.

Protect reads and writes

Keldra automatically enforces application and bucket permissions on object operations. Evaluate your custom user's edit or delete relation with the same authorisation APIs when your backend handles an application action.

From team membership to visible search results

Alice belongs to the Product team
Store that membership as a relationship fact.
The Product team can view the workspace
Your schema defines how team access applies to workspace resources.
Workspace access grants access to its files
Define the inheritance rule in your own schema rather than repeating it in every search endpoint.
Return the files Alice can see
The query evaluates Alice's required relation before collecting visible matches and aggregates. Hidden matches must not leak through totals or groups.

Zanzibar relationships in plain English

Tuples are facts

A tuple records a relationship between a subject and a resource: Alice is a member of the Product team, for instance.

Schemas define what the facts allow

Your rules decide whether membership grants viewing, editing or another permission. A schema does not authenticate the caller or create those relationships for you.

System rules protect Keldra

Keldra's system realm protects administration and its application and bucket operations. These permissions are separate from the vocabulary of your own product.

Custom realms model your application

Keep your users, teams and business permissions in a custom realm. Your credentialed backend can evaluate the selected subject's permissions and make realm-aware index queries on their behalf.
BUILD WITH CONFIDENCE

Define access once. Apply it across files and queries.

Keep application authorisation understandable while storing files and querying indexed data on your own infrastructure. Start with the Docker setup and build around your own users and resources.