All Projects → authzed → spicedb

authzed / spicedb

Licence: Apache-2.0 license
Open Source, Google Zanzibar-inspired fine-grained permissions database

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to spicedb

Dgraph
Native GraphQL Database with graph backend
Stars: ✭ 17,127 (+410.04%)
Mutual labels:  scale, latency, production, distributed, graph-database
speedle-plus
Speedle+ is an open source project for access management. It is based on Speedle open source project and maintained by previous Speedle maintainers.
Stars: ✭ 45 (-98.66%)
Mutual labels:  acl, authorization, entitlements, fine-grained-access-control
Laratrust
Handle roles and permissions in your Laravel application
Stars: ✭ 1,799 (-46.43%)
Mutual labels:  permissions, acl, authorization
rbac-tool
Rapid7 | insightCloudSec | Kubernetes RBAC Power Toys - Visualize, Analyze, Generate & Query
Stars: ✭ 546 (-83.74%)
Mutual labels:  permissions, acl, authorization
Rbac
Hierarchical Role-Based Access Control for Node.js
Stars: ✭ 254 (-92.44%)
Mutual labels:  permissions, acl, authorization
Laravel Authz
An authorization library that supports access control models like ACL, RBAC, ABAC in Laravel.
Stars: ✭ 136 (-95.95%)
Mutual labels:  permissions, acl, authorization
nova-permissions
Add Permissions based authorization for your Nova installation via User-based Roles and Permissions. Roles are defined in the database whereas Permissions are defined in the code base.
Stars: ✭ 115 (-96.58%)
Mutual labels:  permissions, acl, authorization
Bouncer
Eloquent roles and abilities.
Stars: ✭ 2,763 (-17.72%)
Mutual labels:  permissions, acl, authorization
Casl
CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access
Stars: ✭ 3,610 (+7.5%)
Mutual labels:  permissions, acl, authorization
Brandenburg
Laravel Authentication Package
Stars: ✭ 79 (-97.65%)
Mutual labels:  permissions, acl, authorization
Vakt
Attribute-based access control (ABAC) SDK for Python
Stars: ✭ 92 (-97.26%)
Mutual labels:  permissions, acl, authorization
Think Authz
An authorization library that supports access control models like ACL, RBAC, ABAC in ThinkPHP 6.0 .
Stars: ✭ 155 (-95.38%)
Mutual labels:  permissions, acl, authorization
feathers-casl
feathers.js + casl: hooks & channels
Stars: ✭ 25 (-99.26%)
Mutual labels:  permissions, acl, authorization
Casbin4D
An authorization library that supports access control models like ACL, RBAC, ABAC in Delphi
Stars: ✭ 25 (-99.26%)
Mutual labels:  permissions, acl, authorization
Simpleacl
Simple ACL for PHP
Stars: ✭ 105 (-96.87%)
Mutual labels:  permissions, acl, authorization
Accesscontrol
Role and Attribute based Access Control for Node.js
Stars: ✭ 1,723 (-48.69%)
Mutual labels:  permissions, acl, authorization
Lock Laravel
This package is a Laravel 5 driver for Lock
Stars: ✭ 161 (-95.21%)
Mutual labels:  permissions, acl
Drf Access Policy
Declarative access policies/permissions modeled after AWS' IAM policies.
Stars: ✭ 200 (-94.04%)
Mutual labels:  permissions, authorization
Adonis Acl
demo app: https://github.com/enniel/adonis-acl-blog-demo
Stars: ✭ 195 (-94.19%)
Mutual labels:  permissions, acl
Appy
🚀 A full stack boilerplate web app
Stars: ✭ 225 (-93.3%)
Mutual labels:  permissions, authorization

SpiceDB

CII Best Practices Container Image Docs Discord Server Twitter

SpiceDB is an open source, Google Zanzibar-inspired, database system for creating and managing security-critical application permissions.

Developers create a schema that models their permissions requirements and use any of the official or community maintained client libraries to apply the schema to the database, insert data into the database, and query the data to efficiently check permissions in their applications.

Features that distinguish SpiceDB from other systems include:

Have questions? Ask in our Discord.

Want to learn more about the inspiration for SpiceDB? We've annotated Google's Zanzibar Paper with our own commentary.

Looking to contribute? See CONTRIBUTING.md.

You can find issues by priority: Urgent, High, Medium, Low, Maybe. There are also good first issues.

Getting Started

Installing the binary

Binary releases are available for Linux, macOS, and Windows on AMD64 and ARM64 architectures.

Homebrew users for both macOS and Linux can install the latest binary releases of SpiceDB and zed using the official tap:

brew install authzed/tap/spicedb authzed/tap/zed

Debian-based Linux users can install SpiceDB packages by adding a new APT source:

sudo echo "deb [trusted=yes] https://apt.fury.io/authzed/ /" > /etc/apt/sources.list.d/authzed-fury.list
sudo apt update && apt install spicedb

RPM-based Linux users can install SpiceDB packages by adding a new YUM repository:

sudo cat << EOF >> /etc/yum.repos.d/Authzed-Fury.repo
[authzed-fury]
name=AuthZed Fury Repository
baseurl=https://yum.fury.io/authzed/
enabled=1
gpgcheck=0
EOF
sudo dnf install spicedb

Running a container

Container images are available for AMD64 and ARM64 architectures on the following registries:

Docker users can run the latest SpiceDB container with the following:

docker run --rm -p 50051:50051 authzed/spicedb serve --grpc-preshared-key "somerandomkeyhere"

SpiceDB containers use Chainguard Images to ship the bare minimum userspace which is a huge boon to security, but can complicate debugging. If you want to execute a user session into a running SpiceDB container and install packages, you can use one of our debug images.

Appending -debug to any tag will provide you an image that has a userspace with debug tooling:

docker run --rm -ti --entrypoint sh authzed/spicedb:latest-debug

Containers are also available for each git commit to the main branch under ${REGISTRY}/authzed/spicedb-git:${COMMIT}.

Deploying to Kubernetes

Production Kubernetes users should be relying on a stable release of the SpiceDB Operator. The Operator enforces not only best practices, but orchestrates SpiceDB updates without downtime.

If you're only experimenting, feel free to try out one of our community-maintained examples for testing SpiceDB on Kubernetes:

kubectl apply -f https://raw.githubusercontent.com/authzed/examples/main/kubernetes/example.yaml

Developing your own schema

You can try both SpiceDB and zed entirely in your browser on the Playground thanks to the power of WebAssembly.

If you don't want to start with the examples loadable from the Playground, you can follow a guide for developing a schema or review the the schema language design documentation.

To get a quick idea of schema development, you can watch the creators of SpiceDB writing a schema for GitHub:

Modeling GitHub YouTube Video Thumbnail

Trying out the API

For debugging or getting started, we recommend installing zed, the official command-line client. The Playground also has a tab for experimenting with zed all from within your browser.

When it's time to write code, we recommend using one of the existing client libraries whether it's official or community-maintained.

Because every millisecond counts, we recommend using libraries that leverage the gRPC API for production workloads.

To get an understanding of integrating an application with SpiceDB, you can follow the Protecting Your First App guide or review API documentation on the Buf Registry or Postman.

Acknowledgements

SpiceDB is a community project fueled by contributions from both organizations and individuals. We appreciate all contributions, large and small, and would like to thank all those involved.

In addition, we'd like to highlight a few notable contributions:

  • The GitHub Authorization Team for implementing and contributing the MySQL datastore
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].