Closed jraddaoui closed 4 months ago
This is a good incremental approach to validating and building out our identity management capabilities in Enduro.
@jraddaoui I believe this is the issue related to our discussion about adding a prototype landing page so we can test users w no permissions. If that's correct, below is a super simple, rough first pass:
I thought it could be nice to show the username in the welcome header text, but we can also skip that if it adds too much complexity. Otherwise, it's just a basic project description and a link or two.
Initial implementation:
Some notes @fiver-watson:
@
in front of the user name. Depending on the claims obtained by the OIDC provider the user name could read "Jane Doe", so I think it's better without it.Let me know your initial thoughts.
As discussed, we don't currently have the infrastructure to test this locally. I can see the lovely new landing page 🎉 For our purposes, I'm going to move this to done; we can reopen if necessary once the client has had a chance to configure and test.
Is your feature request related to a problem? Please describe.
Enduro's API has optional authentication using OpenID Connect (OIDC), but there is no mechanism in place to control access to resources based on user roles or permissions.
Describe the solution you'd like
I looked at different options to provide this functionally:
ACLs allows granular control over each resource, but it has scalability issues as the application grows. Like RBAC, they won't provide a flexible and fine-grained access control that will allow us to manage complex access needs dynamically as the application grows.
Both ABAC and PBAC grant or deny access based on attributes like user roles, resource types, operations, etc., evaluating them through defined policies. This attributes can have a hierarchical organization, policy inheritance and delegated administration (as the system and organization evolves). While PBAC provides comprehensive policy management, it can be implemented following ABAC when more defined policies and integration with external decision points are needed.
As an initial implementation or PoC, I'd like to see how Enduro is capable of getting a list of attributes from a configurable claim in the OIDC access token and limit user actions based on them. For example, considering the following actions (API-endpoints/UI-views):
And the following attributes:
package:*
package:list
package:read
package:download
Should be able to perform all actions.
Should only be able to list and read packages, but not download them.
Describe alternatives you've considered
Mentioned above.
Additional context
not:package:download
,!package:download
,package:!download
)?