Add RFC: Condition-based access control for RBAC grants - #35
Open
rrrkharse wants to merge 1 commit into
Open
Conversation
Propose condition-based access control — grants can optionally specify conditions that must be satisfied for the grant to take effect. Two condition types: - Resource conditions (tags, aliases): control which resources a grant applies to - Request conditions: restrict what values a user can set Enables dynamic permission boundaries within a workspace (dev/prod lifecycle, promotion protection) without moving resources between workspaces. Reuses MLflow's search filter syntax, preserves the allow-only model, and adds no extra DB queries for resource attributes. Related: mlflow/mlflow#24742
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Proposes condition-based access control for MLflow RBAC. Grants gain an optional
conditionparameter (a single AND-ed filter string using MLflow's existing search filter syntax) that must be satisfied for the grant to take effect.Problem: MLflow RBAC grants access by resource type + identity, but not by resource state. Once a user has EDIT on experiments in a workspace, they can modify any experiment regardless of its lifecycle stage. There is no way to express "this user can edit dev experiments but not production ones" without moving resources between workspaces (which breaks lineage).
Two condition types:
tags.stage = 'dev',aliases.champion EXISTS) — control which resources a grant applies to, evaluated against the resource's current attributes.request.tag_key != 'stage') — control what values a user can set, evaluated against the request payload. Prevents e.g. a data scientist from setting astage=productiontag or a@championalias.Key use cases:
Design highlights:
filter_stringsyntax — familiar to usersrole_permission_conditionstable) — no migration, existing grants remain unconditionalRelated: mlflow/mlflow#24742