-
Notifications
You must be signed in to change notification settings - Fork 0
Sprint 3 Demo & Presentation
Ever Since Dstny Engage has opted for a microservices architecture, they have decided to use authorization as a service. Authorization is how you control who can do what in your application. Authorization as a service means using a third-party service to handle authorization in an app, and can make your app more resilient and easier to deploy.
Dstny's authorization service is based on OPA. The Open Policy Agent is an open-source, general-purpose policy engine that unifies policy enforcement across the stack. OPA decouples policy decision-making from policy enforcement and application logic. It provides major flexibility, and allows writing policies as code. This has produced a three-fold problem:
- OPA is written using Rego, a declarative query language, and thus requires a developer to modify policy code.
- Since policy is written as code, any change to the policy will require redeployment. Not only is this inefficient, but the OPA now represents a single point of failure, which may cause the entire system to fail.
- The authorization service cannot be productized, as it entirely relies on code modifications.
We have already conducted a detailed market survey here, but will now discuss two major competitors.
Keycloak provides user federation, strong authentication, user management, fine-grained authorization, and is already employed by Dstny Engage for authentication. However, it is not based on OPA, so it does not offer as much flexibility and granularity, and is difficult in redployment of permissions.
Permit.io offer solutions for no-code policy management. They offer GUI support for only two types of policies, RBAC and ABAC.
Throughout this project, we have designed an authorization service that provide five major requirements:
- Based on OPA
- Allows real-time policy modifications
- Allows policy editing through the GUI
- Automated policy testing and verification on each modification
- Rollback in case of failure
Most of the requirements we have first envisioned for our project have been implemented, the following are the features we will work on next, sorted by importance from highest priority to lowest priority:
- Add SSO (Single Sign-On)
- Add an IDE to allow writing policy code of any type
- Save checkpoints (tags) through our project to the release branch
- Project deployment