- 
                Notifications
    You must be signed in to change notification settings 
- Fork 60
Description
Suppose you create a Silo with a real identity provider (IdP). The first time an IdP user logs in, their user is JIT-provisioned in the Silo. If the operator has set things up so that roles are assigned to members of IdP groups, and the user is a member of some groups that have roles, then the user may get some privileges -- great. But if not, the new user has no roles on any resource. Right now, that means they won't see any Organizations, which means they can't see anything else either. Fair enough -- they don't have access to anything.
We talked briefly about saying that unprivileged users in a Silo should have the privileges required to list the Organizations in the Silo. The thinking would be: if you don't trust everyone in the Silo to know about each others' Organizations, well, put them into different Silos. But I realized this isn't enough: now they can see the Organizations, but they can't see the Projects or anything else in the Organizations. That's not much better.
Another thing that sucks here: suppose somebody does share a particular Project with them. None of this changes: they still can't see any Organizations. If they know the name of the Organization and Project, they can navigate to it and all should be fine. But they'd have to type that into the URL bar.
I see a couple of options here:
- The endpoints to list Organizations and Projects could be modified to list any that you have access to. This seems like the obvious answer but it has problems. We explicitly punted this out of the MVP because this requires either richer support from Oso than we currently have (data filtering) or we hand-roll our own (which isn't simple either). It's worse than that: with the current model, you can work with any Organization if you have access to anything inside it. (That is, someone only needs to share a Project with you, and that implicitly grants you access to see the Organization that the Project is in.) That means answering the question of what Organizations you can see is potentially very complicated expensive (e.g., do you have any role on any resource whose parent ['s parent['s parent...]]] is this Organization).
- Lean-in on the other direction: everyone in a Silo can see all the Organizations and all the Projects. That's broader than we were initially thinking, but I come back to the idea that Silos are the unit of isolation, and if you don't want people to see things, they need to be in different Silos.