-
Notifications
You must be signed in to change notification settings - Fork 142
Description
Today the admin configuration of Trustee is very basic. It only has two fields; a path to a public key representing a singular Trustee admin, and a flag to disable checking the admin private key.
Enterprise use cases will require more sophisticated admin configurations with multiple personas, roles, identities, etc. I have some ideas about how we can introduce these features.
Decoupled Admin Backend
Today what few admin configurations we have come from the Trustee config file. In the future, admin information could be specified in the config file, but it could also come from some other service such as LDAP. In many parts of Trustee we already have a modular backend pattern. We should adopt something similar for admin. The default can be a local admin provider where the admin config comes directly from the Trustee config. Other admin providers can use the Trustee config to store information about connecting to an external admin service.
The exact API of the admin backend isn't yet clear, but the next sections will help to understand some of the requirements.
Multiple Admin Personas, Roles, and Identities
There are a lot of things we could do with a more sophisticated admin config. Some things would require significant changes to other parts of Trustee, but some would not.
The simplest possible change would be to support multiple admins, which all have the same capabilities. As soon as we have multiple admins, we probably want to have some kind of admin ID so that we can track (at least in the logs) who did what.
We should probably introduce some kind of admin roles. In the short term these roles can simply allow access to combinations of API endpoints. There can be a role for resources, a role for policies, etc. In the longterm we can think about deeper integrations for roles and maybe even try to figure out some form of multi-tenancy.
Authentication Modes
Today, authenticating to Trustee with the KBS client is a somewhat annoying. You must provide the admin private key to the KBS-Client. It can be annoying to specify this path every time and although it is secure, some people get a little bit scared by dealing with the private key.
In the short term, we could hide this by creating some local kbs-client config that stores your login information (like with Docker) . We should also think about how a modular admin backend would work with logging in. Authenticating a user will probably be delegated to the backend, meaning that the information required to login could be different for different backends. We'll need to make our authentication mechanism flexible enough to handle this.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status