diff --git a/weed/s3api/auth_credentials.go b/weed/s3api/auth_credentials.go index 5581ffed2..953e3311e 100644 --- a/weed/s3api/auth_credentials.go +++ b/weed/s3api/auth_credentials.go @@ -59,6 +59,9 @@ type IdentityAccessManagement struct { // Bucket policy engine for evaluating bucket policies policyEngine *BucketPolicyEngine + + // useStaticConfig indicates if the configuration was loaded from a static file + useStaticConfig bool } type Identity struct { @@ -162,6 +165,7 @@ func NewIdentityAccessManagementWithStore(option *S3ApiServerOption, explicitSto if err := iam.loadS3ApiConfigurationFromFile(option.Config); err != nil { glog.Fatalf("fail to load config file %s: %v", option.Config, err) } + iam.useStaticConfig = true // Check if any identities were actually loaded from the config file iam.m.RLock() configLoaded = len(iam.identities) > 0 @@ -405,6 +409,10 @@ func (iam *IdentityAccessManagement) isEnabled() bool { return iam.isAuthEnabled } +func (iam *IdentityAccessManagement) IsStaticConfig() bool { + return iam.useStaticConfig +} + func (iam *IdentityAccessManagement) lookupByAccessKey(accessKey string) (identity *Identity, cred *Credential, found bool) { iam.m.RLock() defer iam.m.RUnlock() diff --git a/weed/s3api/auth_credentials_subscribe.go b/weed/s3api/auth_credentials_subscribe.go index e2d54e307..eaafa444e 100644 --- a/weed/s3api/auth_credentials_subscribe.go +++ b/weed/s3api/auth_credentials_subscribe.go @@ -59,6 +59,10 @@ func (s3a *S3ApiServer) onIamConfigChange(dir string, oldEntry *filer_pb.Entry, if dir != filer.IamConfigDirectory { return nil } + if s3a.iam.IsStaticConfig() { + glog.V(0).Infof("Ignoring IAM config change because static configuration file is in use") + return nil + } // Handle deletion: reset to empty config if newEntry == nil && oldEntry != nil && oldEntry.Name == filer.IamIdentityFile {