mirror of
https://github.com/rustfs/rustfs.git
synced 2026-11-08 03:23:23 +00:00
73e7afa01a
Scan findings in the IAM crate and the admin identity handlers, grouped because they share the IamCache mutation lock, the STS session sweep and the admin client-address plumbing: - Admin and STS authorization used the socket peer as aws:SourceIp behind a trusted proxy; they now read the verified client address the S3 path already uses (backlog#3025), and the admin usage route passes the bucket named in the path to the s3:ListBucket check (backlog#3033). - AssumeRoleWithWebIdentity accepted HS256 ID tokens MACed with the OIDC client secret; only provider-signed tokens verify (backlog#3028), and JWKS refresh is single-flight with a failure cool-down (backlog#3103). - A disabled group emptied the member's whole policy list, dropping every Deny; direct and other-group policies are preserved (backlog#3042). - Identity rewrites (secret change, add-user, status) ran without a lock and without re-reading the record, so a user's password change could undo an admin disable or reset (backlog#3048). add-user on an existing user and in-flight AssumeRole both left sessions minted under the old secret valid (backlog#3071, backlog#3079); rotation now revokes under the per-key mutation lock and derived-credential publication is ordered with it. - aws:groups never carried a built-in user's IAM group membership and jwt:iss was always the local marker, so group- and issuer-scoped Denies never matched; both now come from live IAM state (backlog#3095, backlog#3096). - OPA mode skipped the account-status gates for service accounts and STS sessions of a disabled user (backlog#3057). - The periodic IAM reload published nothing when any cache write raced it and kept stale partitions when a prefix listed empty, so a missed revocation never applied (backlog#3064, backlog#3114). - update-group-members never evaluated admin:RemoveUserFromGroup (backlog#3098); ExportIAM compared the site-replicator account against a name it never has (backlog#3045); add-user accepted the access key of a live STS session or service account (backlog#3134); a service account could create or extend a lifetime beyond its own (backlog#3112); sts:DurationSeconds and svc:DurationSeconds were never populated (backlog#3136); temporary-account-info returned service accounts (backlog#3137); an access key the object layer refuses no longer holds the service-account lock through the write retries (backlog#3133).
RustFS IAM - Identity & Access Management
Identity and access management system for RustFS distributed object storage
📖 Documentation
· 🐛 Bug Reports
· 💬 Discussions
📖 Overview
RustFS IAM provides identity and access management capabilities for the RustFS distributed object storage system. For the complete RustFS experience, please visit the main RustFS repository.
✨ Features
- User and group management with RBAC
- Service account and API key authentication
- Policy engine with fine-grained permissions
- LDAP/Active Directory integration
- Multi-factor authentication support
- Session management and token validation
📚 Documentation
For comprehensive documentation, examples, and usage guides, please visit the main RustFS repository.
📄 License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
