@@ -267,10 +267,34 @@ webhooks:
267
267
apiVersions : ["v1"]
268
268
resources : ["rolebindings", "clusterrolebindings"]
269
269
{{- end }}
270
- {{- if eq .Cluster.ConfigItems.teapot_admission_controller_enable_generic_webhook "true" }}
271
- - name : generic-namespaced -admitter.teapot.zalan.do
270
+ {{- if eq .Cluster.ConfigItems.teapot_admission_controller_enable_write_protection_webhook "true" }}
271
+ - name : pod-exec -admitter.teapot.zalan.do
272
272
clientConfig :
273
- url : " https://localhost:8085/generic"
273
+ url : " https://localhost:8085/pod/exec"
274
+ caBundle : " {{ .Cluster.ConfigItems.ca_cert_decompressed }}"
275
+ admissionReviewVersions : ["v1beta1"]
276
+ failurePolicy : Fail
277
+ sideEffects : " NoneOnDryRun"
278
+ matchPolicy : Equivalent
279
+ namespaceSelector :
280
+ matchExpressions :
281
+ - key : kubernetes.io/metadata.name
282
+ operator : NotIn
283
+ values : [ "kube-system", "visibility", "kubenurse" ]
284
+ rules :
285
+ - operations : [ "CONNECT" ]
286
+ apiGroups : [""]
287
+ apiVersions : ["v1"]
288
+ resources : ["pods/exec"]
289
+ scope : " Namespaced"
290
+ matchConditions :
291
+ - name : ' exclude-privileged-groups'
292
+ expression : ' request.userInfo.groups.all(g, !(g in ["okta:common/administrator", "zalando:administrator"]))'
293
+ - name : ' exclude-postgres-admins'
294
+ expression : ' request.userInfo.groups.all(g, !(g in ["okta:common/postgres-admin"]))'
295
+ - name : namespaced-deny-admitter.teapot.zalan.do
296
+ clientConfig :
297
+ url : " https://localhost:8085/deny"
274
298
caBundle : " {{ .Cluster.ConfigItems.ca_cert_decompressed }}"
275
299
admissionReviewVersions : ["v1beta1"]
276
300
failurePolicy : Fail
@@ -287,9 +311,16 @@ webhooks:
287
311
apiVersions : ["*"]
288
312
resources : ["*/*"]
289
313
scope : " Namespaced"
290
- - name : generic-cluster-admitter.teapot.zalan.do
314
+ matchConditions :
315
+ - name : ' exclude-privileged-groups'
316
+ expression : ' request.userInfo.groups.all(g, !(g in ["system:masters", "system:nodes", "system:serviceaccounts:kube-system", "okta:common/administrator", "zalando:administrator"]))'
317
+ - name : ' exclude-privileged-usernames'
318
+ expression : ' !(request.userInfo.username in ["system:kube-controller-manager", "system:kube-scheduler", "zalando-iam:zalando:service:k8sapi_credentials-provider"])'
319
+ - name : ' exclude-eks-components'
320
+ expression : ' !request.userInfo.username.startsWith("eks:")'
321
+ - name : global-deny-admitter.teapot.zalan.do
291
322
clientConfig :
292
- url : " https://localhost:8085/generic "
323
+ url : " https://localhost:8085/deny "
293
324
caBundle : " {{ .Cluster.ConfigItems.ca_cert_decompressed }}"
294
325
admissionReviewVersions : ["v1beta1"]
295
326
failurePolicy : Fail
@@ -304,4 +335,11 @@ webhooks:
304
335
apiVersions : ["*"]
305
336
resources : ["*/*"]
306
337
scope : " Cluster"
338
+ matchConditions :
339
+ - name : ' exclude-privileged-groups'
340
+ expression : ' request.userInfo.groups.all(g, !(g in ["system:masters", "system:nodes", "system:serviceaccounts:kube-system", "okta:common/administrator", "zalando:administrator"]))'
341
+ - name : ' exclude-privileged-usernames'
342
+ expression : ' !(request.userInfo.username in ["system:kube-controller-manager", "system:kube-scheduler", "zalando-iam:zalando:service:k8sapi_credentials-provider"])'
343
+ - name : ' exclude-eks-components'
344
+ expression : ' !request.userInfo.username.startsWith("eks:")'
307
345
{{- end }}
0 commit comments