docs/architecture/migration-progress.md
Status values: [ ] not started, [~] in progress, [x] complete, [!] blocked.
rustfs/backlog#660overtrue/arch-kms-redactionupstream/main at 0cdcd1eb7bfd5fc229eb45f851c624084b072365security-changeDebug output and admin status
summary views no longer expose local master keys, Vault tokens, or AppRole
secret IDs. KMS backend behavior, authorization, production defaults, and
config persistence are unchanged.Debug implementations for
secret-bearing KMS config and configure request types, and focused tests that
prove secrets are absent from debug/admin views while serde persistence keeps
the original values.G-001 Refresh main and record baseline.
git fetch upstream main --prune; git rev-parse upstream/main.G-002 Create migration tracking checklist.
G-003 Classify PR types.
crate-boundaries.md lists exactly one
allowed PR type per PR.G-004 Define re-export and wrapper policy.
RUSTFS_COMPAT_TODO.G-005 Add dependency direction guard.
./scripts/check_layer_dependencies.sh passes on current
upstream/main while still rejecting new unaccepted layer dependencies.G-006 Create migration loss-prevention checks.
admin-route-action-snapshot.md and
rustfs/src/admin/route_registration_test.rs.G-007 Create startup timeline table.
startup-timeline.md records current
binary startup order, side effects, fatal boundaries, and readiness stages.G-008 Capture admin route-action snapshot.
admin-route-action-snapshot.md
records current route families, handler ownership, authorization actions,
public exceptions, table-catalog routes, and /minio/admin compatibility
alias behavior.G-009 Enforce pre-push three-expert review.
crate-boundaries.md requires
quality/architecture, migration-preservation, and testing/verification review
before push.G-010 Inventory ecstore::config::{Config, KV, KVS} consumers.
ecstore-config-consumer-inventory.md
records the current model definitions, global accessors, persistence helpers,
consumer groups, migration risks, and do-not-change contract.TEST-PRTYPE-001 Check PR type enum consistency.
./scripts/check_architecture_migration_rules.sh parses the
allowed PR types from crate-boundaries.md and fails
when ARCHITECTURE.md or architecture docs reference an unknown PR type.COMPAT-REG-001 Check temporary compatibility cleanup consistency.
./scripts/check_architecture_migration_rules.sh fails when a
source RUSTFS_COMPAT_TODO(<task-id>) marker lacks a cleanup-register entry,
when a register entry lacks a source marker, or when a source marker omits a
removal condition.S-001 Add crates/security-governance.
rustfs, ecstore, admin handlers, Axum, or runtime state.cargo check -p rustfs-security-governance.S-002 Add admin route matrix core types.
AdminRouteSpec, AdminRouteAccess, AdminActionRef,
PublicRouteKind, RouteRiskLevel, and validation errors model route
governance metadata without registering routes or enforcing auth.cargo test -p rustfs-security-governance.S-003 Add redaction contract types.
RedactionRule, RedactionLevel, and validation errors model
sensitive field handling without logging, masking, or runtime integration.cargo test -p rustfs-security-governance.S-004 Add serde policy marker types.
SerdePolicy, SerdePolicyKind, UnknownFieldPolicy, and
validation errors model strict ingress and compatibility serde contracts
without changing deserialization behavior.cargo test -p rustfs-security-governance.S-005 Add supply-chain policy contract types.
ArtifactIntegrityPolicy, ArtifactSourceKind, and validation
errors model digest, signature, and provenance requirements without changing
release or CI behavior.cargo test -p rustfs-security-governance.S-006 Add rustfs/src/admin/route_policy.rs backed by these contract
types, without changing route registration or auth behavior.
AdminRouteSpec entries cover routes with a single
stable admin policy action, deferred inventory records routes that need
richer contract support, and tests prove the combined inventory covers every
registered admin route.S-011 Add KMS action taxonomy.
KmsAction can parse and serialize dedicated configure,
service-control, clear-cache, generate-data-key, delete, rotate, list, and
describe actions; wildcard matching still works.cargo test -p rustfs-policy action --no-fail-fast.S-012 Migrate KMS handlers to dedicated actions.
kms:* actions.compat-cleanup-register.md.make pre-commit.S-013 Apply KMS redaction.
make pre-commit passed.security-change: inventory KMS development defaults before any production
default hardening.security-change: apply IAM and plugin redaction in a separate S-014 PR.| Expert | Status | Notes |
|---|---|---|
| Quality/architecture | pass | Single security-change PR; redaction rules use the security-governance crate, custom Debug stays local to secret-bearing KMS types, and no startup/storage/global-state path is touched. |
| Migration preservation | pass | Runtime secret access and persisted config serialization are explicitly preserved by tests; no temporary compatibility path is introduced. |
| Testing/verification | pass | Focused redaction/status tests, full KMS tests, admin KMS handler tests, governance tests, clippy, migration guards, Rust quality scan, nextest, doctests, and make pre-commit passed. |
Passed:
cargo test -p rustfs-kms redaction -- --nocapturecargo test -p rustfs-kms status_response -- --nocapturecargo test -p rustfs-kms --no-fail-fastcargo test -p rustfs admin::handlers::kms --no-fail-fastcargo test -p rustfs-security-governance --no-fail-fastcargo clippy -p rustfs-kms --all-targets --all-features -- -D warningscargo fmt --all --check./scripts/check_layer_dependencies.sh./scripts/check_architecture_migration_rules.sh./scripts/check_metrics_migration_refs.shgit diff --checkmake pre-commitNotes:
make pre-commit passed all checks, including 5691 nextest tests, 111
skipped tests, and workspace doctests.security-change PR. Do not change KMS
defaults, admin authorization, admin route registration shape, Config moves,
Storage API moves, Runtime moves, or ECStore moves.rustfs may depend on rustfs-security-governance for contract metadata;
the security-governance crate must stay independent from implementation
crates and runtime state.RUSTFS_COMPAT_TODO(<task-id>) marker and cleanup-register entry.