Merge pull request #124665 from neolit123/1.31-fix-windows-priv-preflight-check

kubeadm: update the IsPriviligedUser preflight check on Windows
This commit is contained in:
Kubernetes Prow Robot 2024-05-02 13:13:28 -07:00 committed by GitHub
commit 201e6262c4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,34 +20,17 @@ limitations under the License.
package preflight
import (
"os/user"
"github.com/pkg/errors"
"golang.org/x/sys/windows"
)
// The "Well-known SID" of Administrator group
// https://support.microsoft.com/en-us/help/243330/well-known-security-identifiers-in-windows-operating-systems
const administratorSID = "S-1-5-32-544"
// Check validates if a user has elevated (administrator) privileges.
func (ipuc IsPrivilegedUserCheck) Check() (warnings, errorList []error) {
currUser, err := user.Current()
if err != nil {
return nil, []error{errors.Wrap(err, "cannot get current user")}
hProcessToken := windows.GetCurrentProcessToken()
if hProcessToken.IsElevated() {
return nil, nil
}
groupIds, err := currUser.GroupIds()
if err != nil {
return nil, []error{errors.Wrap(err, "cannot get group IDs for current user")}
}
for _, sid := range groupIds {
if sid == administratorSID {
return nil, nil
}
}
return nil, []error{errors.New("user is not running as administrator")}
return nil, []error{errors.New("the kubeadm process must be run by a user with elevated privileges")}
}
// Check number of memory required by kubeadm