Skip to content

Commit b85d1ff

Browse files
committed
feat: Enforce TLS v1.3 and disable auto TLS for etcd
This increases ootb security and provides STIG compliance for this area at least.
1 parent 552d824 commit b85d1ff

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

pkg/handlers/generic/mutation/etcd/inject.go

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ func newEtcdPatchHandler(
4545
}
4646
}
4747

48+
var defaultEtcdExtraArgs = map[string]string{
49+
"auto-tls": "false",
50+
"peer-auto-tls": "false",
51+
"tls-min-version": "TLS1.3",
52+
}
53+
4854
func (h *etcdPatchHandler) Mutate(
4955
ctx context.Context,
5056
obj *unstructured.Unstructured,
@@ -62,11 +68,7 @@ func (h *etcdPatchHandler) Mutate(
6268
h.variableName,
6369
h.variableFieldPath...,
6470
)
65-
if err != nil {
66-
if variables.IsNotFoundError(err) {
67-
log.V(5).Info("etcd variable not defined")
68-
return nil
69-
}
71+
if err != nil && !variables.IsNotFoundError(err) {
7072
return err
7173
}
7274

@@ -95,10 +97,25 @@ func (h *etcdPatchHandler) Mutate(
9597
}
9698

9799
localEtcd := obj.Spec.Template.Spec.KubeadmConfigSpec.ClusterConfiguration.Etcd.Local
98-
if etcd.Image != nil && etcd.Image.Tag != "" {
100+
101+
if localEtcd.ExtraArgs == nil {
102+
localEtcd.ExtraArgs = make(map[string]string, 3)
103+
}
104+
105+
for k, v := range defaultEtcdExtraArgs {
106+
if _, ok := localEtcd.ExtraArgs[k]; !ok {
107+
localEtcd.ExtraArgs[k] = v
108+
}
109+
}
110+
111+
if etcd.Image == nil {
112+
return nil
113+
}
114+
115+
if etcd.Image.Tag != "" {
99116
localEtcd.ImageTag = etcd.Image.Tag
100117
}
101-
if etcd.Image != nil && etcd.Image.Repository != "" {
118+
if etcd.Image.Repository != "" {
102119
localEtcd.ImageRepository = etcd.Image.Repository
103120
}
104121

pkg/handlers/generic/mutation/etcd/inject_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ var _ = Describe("Generate etcd patches", func() {
5656
"local": map[string]interface{}{
5757
"imageRepository": "my-registry.io/my-org/my-repo",
5858
"imageTag": "v3.5.99_custom.0",
59+
"extraArgs": map[string]interface{}{
60+
"auto-tls": "false",
61+
"peer-auto-tls": "false",
62+
"tls-min-version": "TLS1.3",
63+
},
5964
},
6065
},
6166
),
@@ -85,6 +90,11 @@ var _ = Describe("Generate etcd patches", func() {
8590
map[string]interface{}{
8691
"local": map[string]interface{}{
8792
"imageRepository": "my-registry.io/my-org/my-repo",
93+
"extraArgs": map[string]interface{}{
94+
"auto-tls": "false",
95+
"peer-auto-tls": "false",
96+
"tls-min-version": "TLS1.3",
97+
},
8898
},
8999
},
90100
),
@@ -114,6 +124,11 @@ var _ = Describe("Generate etcd patches", func() {
114124
map[string]interface{}{
115125
"local": map[string]interface{}{
116126
"imageTag": "v3.5.99_custom.0",
127+
"extraArgs": map[string]interface{}{
128+
"auto-tls": "false",
129+
"peer-auto-tls": "false",
130+
"tls-min-version": "TLS1.3",
131+
},
117132
},
118133
},
119134
),

0 commit comments

Comments
 (0)