Skip to content

App Specific Roles #480

@m-braha

Description

@m-braha

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?

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions