From 46797dc815d6007a43a5d10190bd74e4282f2b87 Mon Sep 17 00:00:00 2001 From: songhahaha66 Date: Mon, 20 Oct 2025 19:40:54 +0800 Subject: [PATCH] fix(export): fix the policy and service account export (#665) * fix(export): fix the policy export mechanism * fix: correct service account check logic in IamSys --- crates/iam/src/sys.rs | 2 +- crates/policy/src/policy/policy.rs | 8 ++++---- rustfs/src/admin/handlers/user.rs | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/iam/src/sys.rs b/crates/iam/src/sys.rs index 4de858810..b59663abb 100644 --- a/crates/iam/src/sys.rs +++ b/crates/iam/src/sys.rs @@ -528,7 +528,7 @@ impl IamSys { return Err(IamError::NoSuchServiceAccount(access_key.to_string())); }; - if u.credentials.is_service_account() { + if !u.credentials.is_service_account() { return Err(IamError::NoSuchServiceAccount(access_key.to_string())); } diff --git a/crates/policy/src/policy/policy.rs b/crates/policy/src/policy/policy.rs index c4596fae8..334ae1650 100644 --- a/crates/policy/src/policy/policy.rs +++ b/crates/policy/src/policy/policy.rs @@ -154,8 +154,8 @@ impl Validator for Policy { type Error = Error; fn is_valid(&self) -> Result<()> { - if !self.id.is_empty() && !self.id.eq(DEFAULT_VERSION) { - return Err(IamError::InvalidVersion(self.id.0.clone()).into()); + if !self.version.is_empty() && !self.version.eq(DEFAULT_VERSION) { + return Err(IamError::InvalidVersion(self.version.clone()).into()); } for statement in self.statements.iter() { @@ -213,8 +213,8 @@ impl Validator for BucketPolicy { type Error = Error; fn is_valid(&self) -> Result<()> { - if !self.id.is_empty() && !self.id.eq(DEFAULT_VERSION) { - return Err(IamError::InvalidVersion(self.id.0.clone()).into()); + if !self.version.is_empty() && !self.version.eq(DEFAULT_VERSION) { + return Err(IamError::InvalidVersion(self.version.clone()).into()); } for statement in self.statements.iter() { diff --git a/rustfs/src/admin/handlers/user.rs b/rustfs/src/admin/handlers/user.rs index 5f26f31b0..e2a09eabf 100644 --- a/rustfs/src/admin/handlers/user.rs +++ b/rustfs/src/admin/handlers/user.rs @@ -675,7 +675,7 @@ impl Operation for ImportIam { let policies: HashMap = serde_json::from_slice(&file_content) .map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, e.to_string()))?; for (name, policy) in policies { - if policy.id.is_empty() { + if policy.is_empty() { let res = iam_store.delete_policy(&name, true).await; removed.policies.push(name.clone()); if let Err(e) = res {