Skip to content

Add RFC: Fine-grained sub-resource permissions - #32

Open
rrrkharse wants to merge 1 commit into
mlflow:mainfrom
rrrkharse:rfc/sub-resource-permissions
Open

Add RFC: Fine-grained sub-resource permissions#32
rrrkharse wants to merge 1 commit into
mlflow:mainfrom
rrrkharse:rfc/sub-resource-permissions

Conversation

@rrrkharse

Copy link
Copy Markdown

Summary

Proposes making all DB-indexed resource types independently permissionable behind a configuration flag (permission_granularity = simplified | fine_grained).

Problem: MLflow's RBAC recognizes only top-level resource types (experiment, registered_model, etc.). Sub-resources (runs, traces, assessments, logged models, model versions) inherit permissions from their parent — there is no way to grant different access levels on runs vs traces vs assessments within the same experiment.

Solution: A two-mode configuration:

  • simplified (default): today's behavior, fully backward compatible
  • fine_grained (opt-in): all sub-resource types become independently permissionable

Key use cases:

  1. Run access without experiment management (#11496)
  2. Assessment-only write access (evaluation/validation boundary)
  3. Model version lifecycle separation from registered_model management

Design highlights:

  • No DB schema changes — workspace resolution still traverses the parent chain
  • Single resolve_resource() helper per validator — minimal code change
  • Grants for sub-resource types can be pre-created in simplified mode (stored but not enforced) for safe migration
  • Workspace MANAGE continues to fold into all resource checks

Related: mlflow/mlflow#11496

Propose making all DB-indexed resource types independently permissionable
behind a configuration flag. In simplified mode (default), behavior is
identical to today. In fine-grained mode, admins can grant on run, trace,
assessment, logged_model, model_version, and other sub-resources
independently.

Key use cases:
- Run access without experiment management (#11496)
- Assessment-only write access (evaluation boundary)
- Model version lifecycle separation from registered_model
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant