fix(iam): serialize replicated identity updates - #2
Closed
GatewayJ wants to merge 2 commits into
Closed
Conversation
GatewayJ
force-pushed
the
fix/oidc-service-account-policy
branch
from
July 24, 2026 07:25
f4b2b42 to
aaf3bd1
Compare
GatewayJ
force-pushed
the
fix/iam-replication-cas
branch
from
July 24, 2026 07:26
20fa21c to
5219fac
Compare
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
Depends on rustfs#5152. This is a stacked PR in
GatewayJ/rustfs, based onfix/oidc-service-account-policy; GitHub cannot use a fork branch as the base of an upstream PR.Summary of Changes
Verification
cargo test -p rustfs replicated_oidc_service_account_replaces_claims_and_groups_in_handler --libcargo fmt --all --checkmake pre-commitmake pre-prImpact
No S3 protocol, public API, or configuration change. IAM service-account deletion now persists an internal tombstone so delayed replication cannot restore the deleted access key. Non-object
Storeimplementations retain legacy unconditional-write behavior through trait defaults.The change affects site-replication IAM persistence only. Deploy it to every participating site before relying on tombstone-based stale-delete protection. Parent-user deletion remains unchanged; its cross-node atomicity needs a separate design.
Additional Notes
High-risk adversarial review: correctness (full replacement and stale-event tests), simplicity (reuse of the existing IAM object precondition interface), security (no stale privileged claims survive), concurrency/durability (ETag CAS, bounded retries, and serialized cache commits), compatibility (no S3 wire change), performance (infrequent IAM mutation path only), and test coverage found no unresolved issue.