permify

module
v0.0.0-alpha2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 18, 2022 License: Apache-2.0

README

Permify logo
Permify - Open Source Authorization Service

Permify Go Version  Permify Go Report Card  Permify Licence  Permify Discord Channel  Permify Docker Image Version 

Permify - Open source authorization as a service

What is Permify?

Permify is an open-source authorization service for creating and maintaining fine-grained authorizations. You can run Permify container with docker and it works as a Rest API.

Permify converts and syncs your authorization data as relation tuples into your preferred database. And you can check authorization with single request based on those tuples.

Data model is inspired by Google Zanzibar White Paper.

Why Permify?

You can use Permify any stage of your development for your authorization needs but Permify works best:

  • If you want to create unified control mechanism for individual applications.
  • If you need to refactor your authorization.
  • If your data model is getting too complicated to handle your authorization within the service.
  • If you’re managing authorization for growing micro-service infrastructure.
  • If your authorization logic is cluttering your code base.
  • If your authorization is growing too complex to handle within code or API gateway.

Features

  • Sync & coordinate your authorization data hassle-free.
  • Get Boolean - Yes/No decision returns.
  • Store your authorization data in-house with high availability & low latency.
  • Easily model, debug & refactor your authorization logic.
  • Enforce authorizations with a single request anywhere you call it.
  • Low latency with parallel graph engine for enforcement check.

Example Access Check

Permify helps you convert & sync authorization data to a database you point at with a YAML config file. And after you model your authorization with Permify's DSL - Permify Schema, you can perform access checks with a single call anywhere on your app. Access decisions made according to stored relational tuples.

Request

{
  "entity": {
    "type": "repository",
    "id": "1"
  },
  "action": "push",
  "subject": {
    "type":"user",
    "id": "1"
  }
}

Can the user 1 push on a repository 1 ?

Response

{
  "can": false, // main decision
  "decisions": { // decision logs
    "organization:1#member": {
      "prefix": "not",
      "can": false,
      "err": null
    },
    "repository:1#owner": {
      "prefix": "",
      "can": true,
      "err": null
    }
  }
}

Getting Started

Client SDKs

We are building SDKs to make installation easier, leave us a feedback on which SDK we should build first.

Community & Support

You can join the conversation at our Discord channel. We love to talk about authorization and access control - we would love to hear from you ❤

If you like Permify, please consider giving us a ⭐️

:heart: Let's get connected:

Contributing

Want to contribute ?

See: CONTRIBUTING.md.

License

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL