RBAC inheritance #1591
Replies: 3 comments 1 reply
-
Quick comment: it might prove difficult/impossible to aggregate RBAC data across shards, which would be required for RBAC inheritance because multiple workspaces in a sub-hierarchy can have their content hosted on different shards. |
Beta Was this translation helpful? Give feedback.
-
Sharing one data point from a high-level conversation with an interested party (link here for those with access). They "loved" the notion of a hierarchical model for Kube-base RBAC, and seemed to assume that KCP would enable it. Unfortunately I don't have more details, but something similar to hierarchical namespaces may have been what they were imagining. |
Beta Was this translation helpful? Give feedback.
-
@sttts would the RBAC Policy Workspace solution you mentioned recently (comment thread) enable users to define policies in 1 spot and have them apply to every sub-workspace of e.g. Aspian's Finance Department? Maybe a new team member joins and an org admin/owner wants to give them view-only access to everything in the Org Workspace at Minimizing the number of places where access rules have to be managed and expressed seems like a good way to reduce the risk of users making costly mistakes in general, so that high-level problem seems worth solving for. |
Beta Was this translation helpful? Give feedback.
-
Context
Suggestion
Therefore, I suggest there should be some way to reuse Cluster RBAC across Workspaces to solve for these use cases.
One approach is to take advantage of the hierarchy and "inherit" ClusterRoles and/or *Bindings. This hierarchical inheritance is one of the motivations behind GCP's resource hierarchy, for example: https://cloud.google.com/iam/docs/resource-hierarchy-access-control
Another might be to take a label-based (or in more general terms, attribute-based) approach, where somehow policies can be associated with Workspaces or NS of different attributes and matched accordingly.
I'm curious what the kcp team thinks about this idea and what approaches, with what tradeoffs, might work to solve this.
Thanks!
Note
Disclaimer: possible rabbit hole. I can't help but point out one interesting technology which is possibly relevant. It's by no means the first thing I would reach for, but the recent buzz around "relationship based access control (ReBAC)" (i.e. from the popular Zanzibar whitepaper) is partly explained by it being a general solution for this kind of common problem. It is a system for defining access based on relationships (e.g. nodes in a graph), therefore you can very easily express and check for something like "I have this permission in this nested object (e.g. workspace) because I have that permission in a parent object." I only mention because if we find it very challenging to engineer for RBAC inheritance starting from the existing authorizer implementation, maybe this is something to consider.
Beta Was this translation helpful? Give feedback.
All reactions