elsa-workflows / elsa-workflows/elsa-foundation

RBAC: Enforce mandatory resource authorization and allowed actions

Open
#836 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ready-for-agent
Dominant language
C#
Stars
5
Forks
1
Avg merge
3h 18m
Merged PRs (30d)
261

Description

Parent

  • #806

What to build

Replace alternative-grant resource authorization with a mandatory constraint phase and prove it through representative workflow definition and execution resources. A granted role permission remains necessary but cannot override an account, membership, scope, or resource veto. Authorized collection queries enforce visibility before materialization, and Server returns allowed actions for Studio after loading the resource.

Studio renders resource-sensitive actions from the Server result rather than recreating policy.

Covers PRD user stories 39-46, 49-51, 56, 64, and 95-98.

Acceptance criteria

  • Mandatory authorization constraints use a contract whose denial cannot be converted to success by a general permission or another handler.
  • Representative workflow definition and execution operations require both effective permission and every applicable account, membership, scope, and resource constraint.
  • Resource-sensitive reads and mutations return established 401, 403, or non-disclosing 404 behavior without leaking foreign-tenant existence.
  • Collection visibility is applied in the persistence query rather than through post-fetch in-memory filtering.
  • Continuation cursors are bound to exact authorization scope and permission revision and are rejected after incompatible authorization changes.
  • Server returns allowed resource actions or a disclosure-safe explanation after resource loading.
  • Studio consumes allowed actions, disables useful forbidden actions with a reason, and never infers resource authority from tenant-wide permissions alone.
  • Server HTTP/query/security tests and Studio integration tests prove mandatory vetoes, query isolation, cursor binding, allowed actions, and non-disclosing failures.

Blocked by

  • #830

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by resolving the blocked dependency #830, then map the Server authorization and persistence-query paths for workflow definition and execution resources. Run the Server HTTP/query/security tests and Studio integration tests; done requires mandatory vetoes, scope-bound cursors, isolated collections, disclosure-safe failures, and Server-provided actions consumed by Studio.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
authorization, backend-api-design, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.