apache / apache/dolphinscheduler

[DSIP-105][Feature][API] Add Property.sensitive and mask values in API/UI

Open
#18,586 0 comments 0 reactions 1 assignee Claimed by @det101 View on GitHub
backend feature
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.