Keti is a service that was designed to protect RESTfuls API using Attribute Based Access Control (ABAC).
The solution itself is implemented as a cloud-native RESTful API that adheres to the guiding principles of the twelve factor app. Key characteristics of the service include:
- Central management of policies and privileges
- The ability to manage hierarchical privileges (e.g. sub-groups) and scoped privileges (e.g. assigning elevated privileges based on the resource accessed)
- A policy format tailored for developers who build RESTful APIs
- An access control decision engine
Spring Boot is the primary framework that Keti is built on. Additionally Keti uses the following open source libraries:
- Titan DB, an implementation of Apache TinkerPop, for it's graph data structure
- Jedis as a Redis client for caching
- Spring Security to protect it's API
- Spring Data JPA for persistence to RDBMS
An operator deploys Keti in the same datacenter where the web services it protects are deployed. Either a common gateway, or the web service itself, sends requests for authorized access to Keti and enforces the decision received in the response. When deployed, Keti typically has the following service dependencies.
- UAA as an OAuth server
- Redis (optional) for decision caching
- Cassandra through Titan DB for graph persistence
- PostgreSQL, or H2 as a RDBMS
Below is a basic diagram of how Keti fits in the interaction between web application and web service.