apache / apache/dolphinscheduler
[DSIP-105][Feature][API] Add Property.sensitive and mask values in API/UI
- Dominant language
- Java
- Stars
- 14.5k
- Forks
- 5.1k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 29
Description
### Search before asking
- [x] I had searched in the [issues](https://github.com/apache/dolphinscheduler/issues?q=is%3Aissue) and found no similar feature requirement.
### Description
Subtask of #17937 (DSIP-105). Parent remains the DSIP design tracker; this issue is the first implementation slice.
Add `Property.sensitive` and mask sensitive parameter values as `******` on API/UI read paths. Keep-original merge on write/start. **No encryption** in this subtask.
#### In scope (aligned with PR #18585)
- Add `Property.sensitive` (default `false`; missing JSON field is `false`)
- Deep-copy mask on workflow / task / instance query responses and `view-variables` (never mutate shared entities in place)
- Write-path merge: only `******` means keep the DB original value
- Empty / null is a **real empty value**, not keep-original
- Reject creating a new sensitive param, or flipping `false → true`, with placeholder-only `******`
- UI: **Sensitive** checkbox on workflow global params and task `localParams`; echo `******` after reload
- Start / command path: `******` in start params is replaced with the definition value
#### Out of scope (follow-up subtasks)
- Definition-time encrypt/decrypt via `PasswordUtils` (next API subtask)
- Worker stdout dynamic redaction + cleanup (Worker subtask)
- Project parameters, Export / Import (parent out of scope)
#### Acceptance
- [ ] Marked `sensitive=true` params never return real values in external API/UI (`******` only)
- [ ] Unmarked params behave exactly as today
- [ ] Saving with `******` does not overwrite the stored secret
- [ ] Empty string persists as empty, not as keep-original
- [ ] `false → true` with only `******` is rejected
- [ ] Unit tests for mask / merge / placeholder validation
- [ ] UI checkbox works on global params and task local params
Implementation: https://github.com/apache/dolphinscheduler/pull/18585
### Use case
Users store passwords / API keys as workflow global params or task local params. After this subtask, UI and API responses must not show those values in plaintext. Persistence may still be plaintext; at-rest encryption is a later subtask.
### Related issues
- Parent DSIP: #17937
- PR: #18585
### Are you willing to submit a PR?
- [x] Yes I am willing to submit a PR!
### Code of Conduct
- [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
Contributor guide
Assessment
This issue has not been assessed yet.