Skip to content

Commit 53ec654

Browse files
M00nF1shTimothy-Dougherty
authored andcommitted
security fixes (kubernetes-sigs#1451)
1 parent 4eef98e commit 53ec654

File tree

3 files changed

+66
-2
lines changed

3 files changed

+66
-2
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ RUN --mount=type=bind,target=. \
1919

2020
FROM amazonlinux:2 as bin-unix
2121
COPY --from=build /out/controller /controller
22+
USER 1002
2223
ENTRYPOINT ["/controller"]
2324

2425
FROM bin-unix AS bin-linux

pkg/model/elbv2/listener.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package elbv2
22

33
import (
44
"context"
5+
"encoding/json"
56
"github.com/pkg/errors"
67
"sigs.k8s.io/aws-load-balancer-controller/pkg/model/core"
78
)
@@ -123,8 +124,8 @@ type AuthenticateOIDCActionConditionalBehavior string
123124

124125
const (
125126
AuthenticateOIDCActionConditionalBehaviorDeny AuthenticateOIDCActionConditionalBehavior = "deny"
126-
AuthenticateOIDCActionConditionalBehaviorAllow = "allow"
127-
AuthenticateOIDCActionConditionalBehaviorAuthenticate = "authenticate"
127+
AuthenticateOIDCActionConditionalBehaviorAllow AuthenticateOIDCActionConditionalBehavior = "allow"
128+
AuthenticateOIDCActionConditionalBehaviorAuthenticate AuthenticateOIDCActionConditionalBehavior = "authenticate"
128129
)
129130

130131
// Request parameters when using an identity provider (IdP) that is compliant with OpenID Connect (OIDC) to authenticate users.
@@ -168,6 +169,14 @@ type AuthenticateOIDCActionConfig struct {
168169
ClientSecret string `json:"clientSecret"`
169170
}
170171

172+
func (cfg AuthenticateOIDCActionConfig) MarshalJSON() ([]byte, error) {
173+
type redactedCFG AuthenticateOIDCActionConfig
174+
redactedCfg := redactedCFG(cfg)
175+
redactedCfg.ClientID = "[REDACTED]"
176+
redactedCfg.ClientSecret = "[REDACTED]"
177+
return json.Marshal(redactedCfg)
178+
}
179+
171180
// Information about an action that returns a custom HTTP response.
172181
type FixedResponseActionConfig struct {
173182
// The content type.

pkg/model/elbv2/listener_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package elbv2
2+
3+
import (
4+
"encoding/json"
5+
awssdk "github.com/aws/aws-sdk-go/aws"
6+
"github.com/stretchr/testify/assert"
7+
"testing"
8+
)
9+
10+
func TestAuthenticateOIDCActionConfig_MarshalJSON(t *testing.T) {
11+
deny := AuthenticateOIDCActionConditionalBehaviorDeny
12+
type fields struct {
13+
AuthenticationRequestExtraParams map[string]string
14+
OnUnauthenticatedRequest *AuthenticateOIDCActionConditionalBehavior
15+
Scope *string
16+
SessionCookieName *string
17+
SessionTimeout *int64
18+
Issuer string
19+
AuthorizationEndpoint string
20+
TokenEndpoint string
21+
UserInfoEndpoint string
22+
ClientID string
23+
ClientSecret string
24+
}
25+
tests := []struct {
26+
name string
27+
cfg *AuthenticateOIDCActionConfig
28+
want string
29+
}{
30+
{
31+
name: "clientID and clientSecret should be redacted",
32+
cfg: &AuthenticateOIDCActionConfig{
33+
AuthenticationRequestExtraParams: map[string]string{"key": "value"},
34+
OnUnauthenticatedRequest: &deny,
35+
Scope: awssdk.String("oidc"),
36+
SessionCookieName: awssdk.String("my-cookie"),
37+
Issuer: "my-issuer",
38+
AuthorizationEndpoint: "my-auth-endpoint",
39+
TokenEndpoint: "my-token-endpoint",
40+
UserInfoEndpoint: "my-user-endpoint",
41+
ClientID: "client-id",
42+
ClientSecret: "client-secret",
43+
},
44+
want: `{"authenticationRequestExtraParams":{"key":"value"},"onUnauthenticatedRequest":"deny","scope":"oidc","sessionCookieName":"my-cookie","issuer":"my-issuer","authorizationEndpoint":"my-auth-endpoint","tokenEndpoint":"my-token-endpoint","userInfoEndpoint":"my-user-endpoint","clientID":"[REDACTED]","clientSecret":"[REDACTED]"}`,
45+
},
46+
}
47+
for _, tt := range tests {
48+
t.Run(tt.name, func(t *testing.T) {
49+
payload, _ := json.Marshal(tt.cfg)
50+
got := string(payload)
51+
assert.JSONEq(t, tt.want, got)
52+
})
53+
}
54+
}

0 commit comments

Comments
 (0)