mirror of
https://github.com/minio/minio.git
synced 2025-04-01 02:03:42 -04:00
fix: allow STS creds for admin accounts to add users (#11138)
Allow rotating creds with privileges to add users fixes https://github.com/minio/console/issues/529
This commit is contained in:
parent
3e16ec457a
commit
d8e28830cf
@ -373,23 +373,29 @@ func (a adminAPIHandlers) AddUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if cred.IsTemp() || cred.IsServiceAccount() {
|
|
||||||
writeErrorResponseJSON(ctx, w, errorCodes.ToAPIErr(ErrAccountNotEligible), r.URL)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not allowed to add a user with same access key as root credential
|
// Not allowed to add a user with same access key as root credential
|
||||||
if owner && accessKey == cred.AccessKey {
|
if owner && accessKey == cred.AccessKey {
|
||||||
writeErrorResponseJSON(ctx, w, errorCodes.ToAPIErr(ErrAddUserInvalidArgument), r.URL)
|
writeErrorResponseJSON(ctx, w, errorCodes.ToAPIErr(ErrAddUserInvalidArgument), r.URL)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cred.IsTemp() || cred.IsServiceAccount()) && cred.ParentUser == accessKey {
|
||||||
|
// Incoming access key matches parent user then we should
|
||||||
|
// reject password change requests.
|
||||||
|
writeErrorResponseJSON(ctx, w, errorCodes.ToAPIErr(ErrAddUserInvalidArgument), r.URL)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
implicitPerm := accessKey == cred.AccessKey
|
implicitPerm := accessKey == cred.AccessKey
|
||||||
if !implicitPerm {
|
if !implicitPerm {
|
||||||
|
parentUser := cred.ParentUser
|
||||||
|
if parentUser == "" {
|
||||||
|
parentUser = cred.AccessKey
|
||||||
|
}
|
||||||
if !globalIAMSys.IsAllowed(iampolicy.Args{
|
if !globalIAMSys.IsAllowed(iampolicy.Args{
|
||||||
AccountName: cred.AccessKey,
|
AccountName: parentUser,
|
||||||
Action: iampolicy.CreateUserAdminAction,
|
Action: iampolicy.CreateUserAdminAction,
|
||||||
ConditionValues: getConditionValues(r, "", cred.AccessKey, claims),
|
ConditionValues: getConditionValues(r, "", parentUser, claims),
|
||||||
IsOwner: owner,
|
IsOwner: owner,
|
||||||
Claims: claims,
|
Claims: claims,
|
||||||
}) {
|
}) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user