feat(rc-admin)!: add secure RustFS KMS configuration lifecycle#280
Draft
cxymds wants to merge 2 commits into
Draft
feat(rc-admin)!: add secure RustFS KMS configuration lifecycle#280cxymds wants to merge 2 commits into
cxymds wants to merge 2 commits into
Conversation
Member
Author
|
Validation is complete for head
The earlier Windows-only test-fixture failure used a Unix absolute path in a platform-neutral core test. Commit |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issues
Resolves rustfs/backlog#1396
Part of rustfs/backlog#1378
Roadmap: rustfs/backlog#1361
Background
RustFS beta.10 supports dynamic KMS configuration and service control, but configuration contains Local master keys or Vault credentials. Accepting those values as command-line literals or reflecting server bodies into diagnostics would expose secrets through process listings, shell history, logs, or structured output.
This PR is stacked on #279 so configuration lifecycle remains independently reviewable.
Solution
rc admin kms configure ALIAS --config-file PATH|--stdinrc admin kms reconfigure ALIAS --config-file PATH|--stdinstart, confirmedrestart --yes, and confirmedstop --yesSecurity
No configuration secret is accepted through a field-specific command-line option or positional JSON. Raw input, typed secret fields, serialized request bytes, HTTP request ownership, response text, response messages, and service-status values use zeroizing application-owned storage. Non-success response bodies are not read into diagnostics, and all client-facing errors are static and value-free.
On non-Unix platforms, Unix mode-bit enforcement is unavailable; stdin should come from a protected pipe or secret manager.
Compatibility
BREAKING contract marker: this extends the protected CLI reference and output-v3 KMS contract with configuration and service lifecycle operations. Existing output-v1 and output-v2 contracts remain unchanged.
Validation
cargo fmt --all --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspaceAll checks pass locally. Native route and request contracts are covered with signed mock Admin servers; a live configured RustFS KMS environment is still recommended before merge. HTTP and serde dependencies may make transient internal copies outside application-owned zeroizing buffers.