Alexander Kharkevich
528c3278b7
fix(iam): allow colons and dots in STS claim policy names ( #3164 )
...
`is_safe_claim_policy_name` rejected any character other than
`[a-zA-Z0-9_-]`, silently dropping policy names containing colons.
This breaks Kubernetes workload identity where `claim_name=sub`
resolves to `system:serviceaccount:<namespace>:<sa-name>` — a valid
policy name that can be created via the admin API but is then
unreachable during STS session authorization.
Add `:` and `.` to the allowed character set. These characters are:
- Used in K8s service account `sub` claims (colons)
- Used in Java/DNS-style group names from OIDC providers (dots)
- Already accepted by the `add-canned-policy` admin API endpoint
Require at least one alphanumeric character to prevent meaningless
names (`.`, `..`, `-`, `_`, `:`, etc.) from resolving.
Still rejected: `/`, `\`, whitespace, `$`, `;`, `{`, `}` and other
chars that could enable path traversal or injection.
Signed-off-by: Alexander Kharkevich <alex@mara.com >
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: 安正超 <anzhengchao@gmail.com >
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: GatewayJ <835269233@qq.com >
2026-06-04 03:39:50 +00:00
Alexander Kharkevich
ce6fcf39b1
feat(oidc): add HIDE_FROM_UI option to exclude providers from console login ( #3162 )
...
Add `RUSTFS_IDENTITY_OPENID_HIDE_FROM_UI[_<SUFFIX>]` setting that
removes a provider from the login page while keeping it fully
functional for STS AssumeRoleWithWebIdentity and site-replication.
Changes:
- Add `hide_from_ui: bool` to `OidcProviderConfig`
- Add `list_visible_providers()` that filters hidden providers
(used by console login and /v3/oidc/providers endpoint)
- Keep `list_providers()` unfiltered for site-replication/admin config
- Extract `normalize_provider_config(config) -> config` to deduplicate
field normalization (accepts the struct directly, not 18 parameters)
- Add `parse_enable_state()` helper for consistent EnableState parsing
- Plumb through admin API request structs (`#[serde(default)]`)
- Expose in `OidcConfigView` for admin GET config round-trip
- Persist via `upsert_persisted_provider_config()`
Note: adding `hide_from_ui` to the public `OidcProviderConfig` struct
is a source-level change for code constructing it with struct literals.
This is acceptable for the current pre-1.0 release cycle.
Signed-off-by: Alexander Kharkevich <alex@mara.com >
Co-authored-by: GatewayJ <835269233@qq.com >
2026-06-03 13:37:44 +00:00
GatewayJ
c257043b63
fix(iam): serialize IAM cache writes ( #3105 )
...
* fix(iam): serialize IAM cache writes
* fix(iam): timestamp rebuilt group memberships
* fix(iam): publish cache updates atomically
* fix(iam): reuse policy cache snapshots
* fix(iam): commit missing user notification cache updates atomically
* fix(iam): remove unused cache membership rebuild wrapper
---------
Co-authored-by: 季宏伟 <jihongwei@jihongweis-MacBook-Pro.local >
Co-authored-by: houseme <housemecn@gmail.com >
2026-05-29 08:02:42 +00:00
GatewayJ
8d20e89bf8
fix(iam): avoid stale cache replacement on walk errors ( #3094 )
...
* fix(iam): avoid stale cache replacement on walk errors
* fix(iam): guard full reload cache commits
---------
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: 季宏伟 <jihongwei@jihongweis-MacBook-Pro.local >
2026-05-28 09:54:06 +00:00
houseme
3d2449872a
refactor(credentials): derive RPC secret fallback and remove IAM keygen duplication ( #3079 )
...
* refactor(credentials): derive rpc secret and remove iam keygen
* fix(credentials): reject default access key RPC secret
* test(credentials): align RPC fallback and add keygen coverage
2026-05-25 11:05:58 +00:00
安正超
8a501846f4
test(iam): cover mixed STS claim policy names ( #2932 )
2026-05-12 10:39:53 +00:00
GatewayJ
b2ba2e5bb3
iam: handle sts claim policy names ( #2902 )
...
Co-authored-by: cxymds <Cxymds@qq.com >
2026-05-12 07:10:42 +00:00
houseme
c90bfe2b23
fix(ecstore): harden runtime read-path quorum handling ( #2872 )
2026-05-08 09:56:39 +00:00
Henry Guo
03045ff2e6
fix(iam): keep error state on initial load failure ( #2846 )
...
Signed-off-by: houseme <housemecn@gmail.com >
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-05-08 08:26:01 +00:00
weisd
a995ec0315
fix(iam): preserve portable IAM storage and derived auth ( #2713 )
2026-04-28 05:57:10 +00:00
GatewayJ
09be06a4d2
fix(ecstore): log walk failures in IAM listing path ( #2705 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: houseme <housemecn@gmail.com >
2026-04-27 14:13:40 +00:00
安正超
159ddd5bac
fix: honor bucket-scoped ListBucket policies with s3:prefix ( #2707 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-04-27 14:13:22 +00:00
GatewayJ
cfbd094bc4
fix(iam): propagate cache miss load failures ( #2692 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: houseme <housemecn@gmail.com >
2026-04-27 09:21:22 +00:00
houseme
59f41eb86a
feat(obs): improve metrics coverage and dashboard performance ( #2682 )
2026-04-25 18:51:29 +00:00
cxymds
8d4caeacad
fix(oidc): add federated logout flow ( #2667 )
...
Co-authored-by: GatewayJ <835269233@qq.com >
2026-04-24 06:51:31 +00:00
Andy Teijelo Pérez
989827e3b5
feat: add OTHER_AUDIENCES config ( #2605 )
...
Co-authored-by: GatewayJ <835269233@qq.com >
2026-04-21 03:48:13 +00:00
LeonWang0735
38eb0781cf
fix(iam): decouple IAM config encryption from root secret rotation ( #2558 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-04-17 14:13:53 +00:00
GatewayJ
f255b8a9f1
fix(admin): align accountinfo policy with IAM prepare_auth for OIDC console ( #2568 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
Co-authored-by: houseme <housemecn@gmail.com >
2026-04-17 05:38:18 +00:00
houseme
28edfd6190
fix(storage): harden offline drive fail-fast paths ( #2564 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com >
2026-04-16 09:21:45 +00:00
Tunglies
579b124726
lint: clippy rules or_fun_call ( #2561 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-04-16 02:48:39 +00:00
Tunglies
49366ee200
chore(lint): clippy rules redundant_clone ( #2554 )
2026-04-15 13:54:07 +00:00
GatewayJ
16b9189e9b
feat(oidc): add roles_claim and jwt:roles policy support ( #2509 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: loverustfs <hello@rustfs.com >
2026-04-15 09:30:24 +08:00
GatewayJ
8db55de72c
fix(iam): return policy JSON object from info_policy ( #2395 ) ( #2436 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-04-09 21:45:22 +08:00
weisd
898857d1c9
fix(iam): keep service account JWT expiry consistent ( #2410 )
2026-04-07 11:00:07 +08:00
Alexander Kharkevich
740e4399af
fix: skip missing groups in policy_db_get instead of aborting ( #2393 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-04-07 09:17:39 +08:00
安正超
67863630b2
fix(auth): reject ambiguous case-insensitive claim matches ( #2386 )
2026-04-04 08:36:14 +08:00
Logan Ye
2d91e2f580
fix(oidc): support case-insensitive claim name matching ( #2362 )
...
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-04-03 21:45:56 +08:00
GatewayJ
c244943313
feat(iam): retry OIDC discovery with issuer URL slash variants ( #2360 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-04-03 21:10:27 +08:00
GatewayJ
3366bd2464
feat(iam,admin): prepared IAM auth, ExistingObjectTag, admin permission checks ( #2315 )
...
Signed-off-by: GatewayJ <835269233@qq.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: GatewayJ <8352692332qq.com>
2026-03-29 19:18:16 +08:00
cxymds
75e6902f46
feat(admin): add persisted OIDC config APIs ( #2267 )
...
Co-authored-by: heihutu <heihutu@gmail.com >
2026-03-24 12:13:41 +08:00
weisd
05dc131a49
perf(storage): optimize internode RPC transfer path ( #2262 )
...
Co-authored-by: momoda693 <momoda693@gmail.com >
2026-03-23 17:09:49 +08:00
GatewayJ
19d3a23a13
fix(admin): console self password for STS sessions ( #1923 ) ( #2250 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
2026-03-21 22:10:38 +08:00
heihutu
3c28f0a0ba
feat(metrics): migrate system monitoring from rustfs-obs to rustfs-metrics ( #2242 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-03-20 18:52:33 +08:00
Trent Houliston
e1a278aaf8
fix(iam): preserve trailing slash in OIDC issuer URL ( #2228 )
2026-03-19 13:52:59 +08:00
weisd
b9b7d86ae4
feat: improve legacy metadata and admin compatibility ( #2202 )
2026-03-18 21:05:09 +08:00
安正超
9d03029959
fix(iam): sync user cache on load-user notifications ( #2104 )
2026-03-09 09:36:02 +08:00
evan slack
d52a10c5fb
chore(obs): Improve tracing instrumentation ( #2086 )
...
Co-authored-by: loverustfs <hello@rustfs.com >
2026-03-07 20:03:20 +08:00
安正超
8c4735ff88
docs: scope AGENTS instructions by directory ( #2083 )
2026-03-05 17:25:37 +08:00
Rafael Herrero
a6090b98dc
fix(iam): remove incorrect trailing slash from OIDC issuer URL ( #2050 )
2026-03-02 19:48:12 +08:00
GatewayJ
2cb8db36a5
fix(iam): user group policy and delete group ( fixes #2028 ) ( #2043 )
...
Co-authored-by: GatewayJ <8352692332qq.com>
2026-03-02 14:19:01 +08:00
安正超
af6c32efac
refactor: improve code quality with safer error handling, trait decomposition, and dead code cleanup ( #1997 )
2026-02-28 01:19:47 +08:00
安正超
9d2b8822cf
refactor: stabilize heal format recovery integration tests ( #1984 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-02-27 15:26:19 +08:00
heihutu
d983638391
build: update docker config and refine s3s region handling ( #1976 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-02-27 01:21:12 +08:00
安正超
40692f18ed
fix(iam): address PR 1875 review issues for OIDC STS flows ( #1969 )
2026-02-26 14:38:57 +08:00
Jeff Poegel
c35ef84a8c
feat(iam): add OpenID Connect SSO with claim-based policy resolution ( #1875 )
...
Signed-off-by: houseme <housemecn@gmail.com >
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: heihutu <30542132+heihutu@users.noreply.github.com >
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-02-26 14:03:17 +08:00
GatewayJ
fb0267981d
fix(iam): STS parent groups fallback and session policy debug for #1423 ( #1804 )
...
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-02-14 11:40:36 +08:00
yxrxy
23f79ae88f
fix: improve IAM and quota authorization ( #1781 )
...
Signed-off-by: yxrxy <yxrxytrigger@gmail.com >
Co-authored-by: loverustfs <hello@rustfs.com >
2026-02-14 10:09:47 +08:00
Tyooughtul
1184806c3f
Fix/resolve pr 1710 ( #1743 )
2026-02-11 08:24:55 +08:00
houseme
0b870d6301
build(deps): bump the dependencies group with 19 updates ( #1745 )
2026-02-07 12:22:14 +08:00
yxrxy
00ccc19e27
Revert "fix: resolve Issue #1465 - IAM credential change crash ( #1535 )" ( #1685 )
2026-02-02 07:14:53 +08:00