From 951877f5761a5924889a2d1508272f4e9e4caa5c Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Tue, 15 Jun 2021 18:52:01 -0700 Subject: [PATCH] fix: root credentials should be able to create users (#12511) --- cmd/admin-handlers-users.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/cmd/admin-handlers-users.go b/cmd/admin-handlers-users.go index f0c60d69f..347689566 100644 --- a/cmd/admin-handlers-users.go +++ b/cmd/admin-handlers-users.go @@ -186,9 +186,16 @@ func (a adminAPIHandlers) GetUserInfo(w http.ResponseWriter, r *http.Request) { return } - accessKey := cred.AccessKey - if cred.ParentUser != "" { - accessKey = cred.ParentUser + accessKey := cred.ParentUser + if accessKey == "" { + accessKey = cred.AccessKey + } + + // For temporary credentials always + // the temporary credentials to check + // policy without implicit permissions. + if cred.IsTemp() && cred.ParentUser == globalActiveCred.AccessKey { + accessKey = cred.AccessKey } implicitPerm := name == accessKey @@ -434,6 +441,12 @@ func (a adminAPIHandlers) AddUser(w http.ResponseWriter, r *http.Request) { if parentUser == "" { parentUser = cred.AccessKey } + // For temporary credentials always + // the temporary credentials to check + // policy without implicit permissions. + if cred.IsTemp() && cred.ParentUser == globalActiveCred.AccessKey { + parentUser = cred.AccessKey + } if !globalIAMSys.IsAllowed(iampolicy.Args{ AccountName: parentUser, Groups: cred.Groups, @@ -1017,7 +1030,7 @@ func (a adminAPIHandlers) AccountInfoHandler(w http.ResponseWriter, r *http.Requ if err != nil && !IsErrIgnored(err, dns.ErrNoEntriesFound, dns.ErrDomainMissing) { - writeErrorResponse(ctx, w, toAPIError(ctx, err), r.URL, guessIsBrowserReq(r)) + writeErrorResponseJSON(ctx, w, toAdminAPIErr(ctx, err), r.URL) return } for _, dnsRecords := range dnsBuckets {