
Permify - Open Source Authorization 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.
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