-
Couldn't load subscription status.
- Fork 52
Description
Is your feature request related to a problem?
The goal is allow someone elevated permissions in one app but restricted permissions in another. This would allow use cases like:
- a development team lead getting elevated permissions in an app they own but regular developer permissions in another app they don't own
- creating a "common" app that holds shared secrets meant to be used across many apps, and letting limited read access to it while preserving developer permissions in the other apps they are apart of.
For example, I create a custom "App Admin" role that allows full access within an app (different from the built-in "Manager" role because e.g., some users shouldn't add members at the Organization level, but should at the app level). Alice, the lead of the Frontend group, gets the "App Admin" role for the Frontend app. She also sometimes supports the Backend group where she should really only get read access to secrets across all environments (via a custom "Reader" role)
Right now I don't think there's a way to express this. She would get App Admin access to an app she doesn't own because she was the App Admin of a different app.
Describe the solution you'd like
Perhaps Applications can override roles. The current system is kept, where users are assigned roles at the organization level, but within an existing Application the Role can be changed to another role. By default, it's the organization role and no other action is needed.
If a role is chosen within App, it gets saved to the Application state and on access control checks at the Application level, if a role was defined, that's used instead.
This could solve the use case above because we could assign Alice the different role in the app she doesn't own and it overrides her "App Admin" role. Though I suppose with app specific roles, Alice would be getting the "Reader" role at the organization level and for apps she owns, it gets overridden to "App Admin".
Simply doing role overrides means you can avoid having to compare individual permissions within a role and having to decide which to use in case of conflicts. But maybe there's other complications with this naive approach, not sure.
Describe alternatives you've considered
Giving people more access than they should, or duplicating secrets across many apps/environments.
For Service Accounts, it means creating very specific accounts and using the appropriate tokens for each. By providing multiple tokens to an external process, it can mimic the behavior of having multiple roles. But that doesn't apply to Users.
Maybe there's other options I haven't considered?