[1.18] WorkflowAccessPolicy#5114
Conversation
Implementation based on dapr/dapr#9790 Signed-off-by: joshvanl <me@joshvanl.dev>
There was a problem hiding this comment.
Pull request overview
Adds documentation for the preview WorkflowAccessPolicy feature, including a CRD schema reference and operational guidance, and links it from existing workflow/security docs.
Changes:
- Introduces new docs pages for WorkflowAccessPolicy (how-to + resource spec schema).
- Adds WorkflowAccessPolicy to the preview-features list.
- Cross-links the feature from workflow overview, multi-app workflow docs, and security concepts.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| daprdocs/content/en/reference/resource-specs/workflow-access-policy-schema.md | New CRD/spec reference page for WorkflowAccessPolicy. |
| daprdocs/content/en/operations/support/support-preview-features.md | Adds WorkflowAccessPolicy to the preview feature table. |
| daprdocs/content/en/operations/security/workflow-access-policy.md | New how-to page describing semantics, setup, and examples. |
| daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-overview.md | Adds a “Workflow security” section pointing to the new how-to. |
| daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-multi-app.md | Adds a security section + example policy for multi-app workflows. |
| daprdocs/content/en/concepts/security-concept.md | Adds a workflow access control subsection linking to the how-to. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: joshvanl <me@joshvanl.dev>
Reflect the policy reshape from dapr/dapr#9850, #9870, and #9838: - Schema now uses separate workflows/activities blocks; workflows have an operations list (schedule, terminate, raise, pause, resume, purge, get, rerun). No defaultAction, no per-rule action; rules are a pure allow-list. - Self-calls (caller appID == target appID) are always allowed. The multi-app example no longer needs the target to list itself in callers. - Remove the WorkflowAccessPolicy feature flag entry from the preview features page and drop the "enable the feature flag" instructions; the gate was deleted upstream. - Update the security concept page and CRD reference doc to match. Signed-off-by: joshvanl <me@joshvanl.dev>
nelson-parente
left a comment
There was a problem hiding this comment.
Pre-review for @marcduiker handoff: LGTM — large but well-structured.
This is a substantial new feature (376 lines across 5 files) covering WorkflowAccessPolicy for v1.18. Key observations:
- New CRD spec page (
workflow-access-policy.md) is thorough: allow-list semantics, self-call bypass, SPIFFE identity note, glob patterns, all 8 operations documented. - Security concept page and workflow-overview/multi-app pointers are consistently updated.
- The
scopesfield behavior (empty = applies to all apps) is correctly noted with the backward-compat implication. - The note that mTLS must be active for cross-app enforcement is present.
- The new resource-specs schema page is a nice addition.
Nit:with no rules and policies loaded, all cross-app calls are deniedin the spec fields table contradicts the earlier prose that sayswith no policies loaded, all calls are allowed— these are different conditions (no rules vs. no policies) and the distinction matters for users. @JoshVanL — could you clarify: if a policy exists but has emptyrules, are all calls denied? If yes, a concrete example would help readers avoid an accidental deny-all.
Nothing else blocking — Marc, your call on whether the contradiction needs resolution first.
msfussell
left a comment
There was a problem hiding this comment.
My comments. Mostly this is providing additional clarity.
I always love having a diagram where possible. Can we have a diagram that shows policies being loaded and applied to an application?
|
|
||
| ## Self-hosted setup | ||
|
|
||
| In self-hosted mode, place the workflow access policy YAML in the resources directory (default: `$HOME/.dapr/components`, or the path passed via `--resources-path`). |
There was a problem hiding this comment.
should this not be
| In self-hosted mode, place the workflow access policy YAML in the resources directory (default: `$HOME/.dapr/components`, or the path passed via `--resources-path`). | |
| In self-hosted mode, place the workflow access policy YAML in the resources directory (default: `$HOME/.dapr/resources`, or the path passed via `--resources-path`). |
There was a problem hiding this comment.
No, components is the right directory
There was a problem hiding this comment.
? Do we still create a components directory then on Dapr install?
There was a problem hiding this comment.
Yes-
$ find .dapr -maxdepth 1
.dapr
.dapr/components
.dapr/bin
.dapr/config.yaml
Signed-off-by: joshvanl <me@joshvanl.dev>
389934d to
cf98d00
Compare
|
@msfussell @nelson-parente please can you take another look? All the feedback should be addressed. I have also updated the docs to only focus on the |
Co-authored-by: Mark Fussell <markfussell@gmail.com> Signed-off-by: Josh van Leeuwen <me@joshvanl.dev>
Signed-off-by: joshvanl <me@joshvanl.dev>
Implementation based on dapr/dapr#9790