Skip to content

Commit a32dbcb

Browse files
committed
Update CatalogSource Pod security context
Signed-off-by: perdasilva <[email protected]>
1 parent 3890c7f commit a32dbcb

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

pkg/controller/registry/reconciler/reconciler.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,13 @@ func Pod(source *operatorsv1alpha1.CatalogSource, name string, image string, saN
113113
pullPolicy = corev1.PullAlways
114114
}
115115

116+
// Security context
116117
readOnlyRootFilesystem := false
118+
allowPrivilegeEscalation := false
119+
runAsNonRoot := true
120+
121+
// See: https://github.com/operator-framework/operator-registry/blob/master/Dockerfile#L27
122+
runAsUser := int64(1001)
117123

118124
pod := &corev1.Pod{
119125
ObjectMeta: metav1.ObjectMeta{
@@ -167,12 +173,23 @@ func Pod(source *operatorsv1alpha1.CatalogSource, name string, image string, saN
167173
},
168174
},
169175
SecurityContext: &corev1.SecurityContext{
170-
ReadOnlyRootFilesystem: &readOnlyRootFilesystem,
176+
ReadOnlyRootFilesystem: &readOnlyRootFilesystem,
177+
AllowPrivilegeEscalation: &allowPrivilegeEscalation,
178+
Capabilities: &corev1.Capabilities{
179+
Drop: []corev1.Capability{"ALL"},
180+
},
171181
},
172182
ImagePullPolicy: pullPolicy,
173183
TerminationMessagePolicy: corev1.TerminationMessageFallbackToLogsOnError,
174184
},
175185
},
186+
SecurityContext: &corev1.PodSecurityContext{
187+
RunAsNonRoot: &runAsNonRoot,
188+
RunAsUser: &runAsUser,
189+
SeccompProfile: &corev1.SeccompProfile{
190+
Type: corev1.SeccompProfileTypeRuntimeDefault,
191+
},
192+
},
176193
NodeSelector: map[string]string{
177194
"kubernetes.io/os": "linux",
178195
},

pkg/controller/registry/reconciler/reconciler_test.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,23 @@ func TestPullPolicy(t *testing.T) {
7979

8080
func TestPodContainerSecurityContext(t *testing.T) {
8181
expectedReadOnlyRootFilesystem := false
82+
expectedAllowPrivilegeEscalation := false
83+
expectedRunAsNonRoot := true
84+
expectedRunAsUser := int64(1001)
85+
8286
expectedContainerSecCtx := &corev1.SecurityContext{
83-
ReadOnlyRootFilesystem: &expectedReadOnlyRootFilesystem,
87+
ReadOnlyRootFilesystem: &expectedReadOnlyRootFilesystem,
88+
AllowPrivilegeEscalation: &expectedAllowPrivilegeEscalation,
89+
Capabilities: &corev1.Capabilities{
90+
Drop: []corev1.Capability{"ALL"},
91+
},
92+
}
93+
expectedPodSecCtx := &corev1.PodSecurityContext{
94+
RunAsNonRoot: &expectedRunAsNonRoot,
95+
RunAsUser: &expectedRunAsUser,
96+
SeccompProfile: &corev1.SeccompProfile{
97+
Type: corev1.SeccompProfileTypeRuntimeDefault,
98+
},
8499
}
85100

86101
catsrc := &v1alpha1.CatalogSource{
@@ -92,7 +107,9 @@ func TestPodContainerSecurityContext(t *testing.T) {
92107

93108
gotPod := Pod(catsrc, "hello", "busybox", "", map[string]string{}, map[string]string{}, int32(0), int32(0))
94109
gotContainerSecCtx := gotPod.Spec.Containers[0].SecurityContext
110+
gotPodSecCtx := gotPod.Spec.SecurityContext
95111
require.Equal(t, expectedContainerSecCtx, gotContainerSecCtx)
112+
require.Equal(t, expectedPodSecCtx, gotPodSecCtx)
96113
}
97114

98115
func TestPodSchedulingOverrides(t *testing.T) {

0 commit comments

Comments
 (0)