diff --git a/go.mod b/go.mod index 739738f5c..91583fcb5 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( k8s.io/api v0.0.0-20230810042731-2f6eec10c476 k8s.io/apimachinery v0.0.0-20230815235018-4c378f8a8a61 k8s.io/client-go v0.0.0-20230816040348-b97d8af0937c - k8s.io/component-base v0.0.0-20230807211050-31137ad9f7f2 + k8s.io/component-base v0.0.0-20230816041302-b54afcf379c0 k8s.io/klog/v2 v2.100.1 k8s.io/kms v0.0.0-20230807211544-e54c40adc2b2 k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 @@ -129,6 +129,6 @@ replace ( k8s.io/api => k8s.io/api v0.0.0-20230810042731-2f6eec10c476 k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230815235018-4c378f8a8a61 k8s.io/client-go => k8s.io/client-go v0.0.0-20230816040348-b97d8af0937c - k8s.io/component-base => k8s.io/component-base v0.0.0-20230807211050-31137ad9f7f2 + k8s.io/component-base => k8s.io/component-base v0.0.0-20230816041302-b54afcf379c0 k8s.io/kms => k8s.io/kms v0.0.0-20230807211544-e54c40adc2b2 ) diff --git a/go.sum b/go.sum index 396b15e8e..46269ea72 100644 --- a/go.sum +++ b/go.sum @@ -676,8 +676,8 @@ k8s.io/apimachinery v0.0.0-20230815235018-4c378f8a8a61 h1:PQAKasgkOolbHn5mI2MIMa k8s.io/apimachinery v0.0.0-20230815235018-4c378f8a8a61/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw= k8s.io/client-go v0.0.0-20230816040348-b97d8af0937c h1:P3i5n8yHv4kog3UH5DsTY/Ea/lKR5kIABlNHdpi3IVA= k8s.io/client-go v0.0.0-20230816040348-b97d8af0937c/go.mod h1:8j1NqdeVD9eU4kSF8iq14yzTJQLAM897lcLSv3p/JB4= -k8s.io/component-base v0.0.0-20230807211050-31137ad9f7f2 h1:bgkLpsQhIRm8Rd6h9V/n50sN63k6sEzX+Q8nCpZCCX4= -k8s.io/component-base v0.0.0-20230807211050-31137ad9f7f2/go.mod h1:wjy+fowSTnR9NfN23CZuwDq+yF+viZTN5nbGbXcOYBM= +k8s.io/component-base v0.0.0-20230816041302-b54afcf379c0 h1:uuljDMCaiT42hJDJgaxdoXrMEcej8ADI5y+kGjt4Dtw= +k8s.io/component-base v0.0.0-20230816041302-b54afcf379c0/go.mod h1:W5sXP3/QrFKETZVvaWLTjcl1LmhmxJhE8MFFRysUHPw= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kms v0.0.0-20230807211544-e54c40adc2b2 h1:BOGPJSH0D8wqePatlYZlSJK08/SADckKy05IyvIi9mA= diff --git a/pkg/endpoints/filters/impersonation.go b/pkg/endpoints/filters/impersonation.go index 4803975a7..a6d293a15 100644 --- a/pkg/endpoints/filters/impersonation.go +++ b/pkg/endpoints/filters/impersonation.go @@ -164,7 +164,7 @@ func WithImpersonation(handler http.Handler, a authorizer.Authorizer, s runtime. req = req.WithContext(request.WithUser(ctx, newUser)) oldUser, _ := request.UserFrom(ctx) - httplog.LogOf(req, w).Addf("%v is acting as %v", oldUser, newUser) + httplog.LogOf(req, w).Addf("%v is impersonating %v", userString(oldUser), userString(newUser)) ae := audit.AuditEventFrom(ctx) audit.LogImpersonatedUser(ae, newUser) @@ -183,6 +183,24 @@ func WithImpersonation(handler http.Handler, a authorizer.Authorizer, s runtime. }) } +func userString(u user.Info) string { + if u == nil { + return "" + } + b := strings.Builder{} + if name := u.GetName(); name == "" { + b.WriteString("") + } else { + b.WriteString(name) + } + if groups := u.GetGroups(); len(groups) > 0 { + b.WriteString("[") + b.WriteString(strings.Join(groups, ",")) + b.WriteString("]") + } + return b.String() +} + func unescapeExtraKey(encodedKey string) string { key, err := url.PathUnescape(encodedKey) // Decode %-encoded bytes. if err != nil { diff --git a/pkg/server/httplog/httplog.go b/pkg/server/httplog/httplog.go index 4d6248f83..a4b4c5899 100644 --- a/pkg/server/httplog/httplog.go +++ b/pkg/server/httplog/httplog.go @@ -205,7 +205,6 @@ func StatusIsNot(statuses ...int) StacktracePred { func (rl *respLogger) Addf(format string, data ...interface{}) { rl.mutex.Lock() defer rl.mutex.Unlock() - rl.addedInfo.WriteString("\n") rl.addedInfo.WriteString(fmt.Sprintf(format, data...)) }