1
+ apiVersion : admissionregistration.k8s.io/v1alpha1
2
+ kind : ValidatingAdmissionPolicy
3
+ metadata :
4
+ name : " kubescape-c-0057-privileged-container-denied"
5
+ spec :
6
+ failurePolicy : Fail
7
+ matchConstraints :
8
+ resourceRules :
9
+ - apiGroups : [""]
10
+ apiVersions : ["v1"]
11
+ operations : ["CREATE", "UPDATE"]
12
+ resources : ["pods"]
13
+ - apiGroups : ["apps"]
14
+ apiVersions : ["v1"]
15
+ operations : ["CREATE", "UPDATE"]
16
+ resources : ["deployments","replicasets","daemonsets","statefulsets"]
17
+ - apiGroups : ["batch"]
18
+ apiVersions : ["v1"]
19
+ operations : ["CREATE", "UPDATE"]
20
+ resources : ["jobs","cronjobs"]
21
+ validations :
22
+ - expression : >
23
+ object.kind != 'Pod' || object.spec.containers.all(container,
24
+ !(has(container.securityContext)) ||
25
+ (
26
+ (!(has(container.securityContext.privileged)) || container.securityContext.privileged != true) &&
27
+ (!(has(container.securityContext.capabilities)) || !(has(container.securityContext.capabilities.add)) ||
28
+ container.securityContext.capabilities.add.all(cap, cap != 'SYS_ADM')))
29
+ )
30
+ message: "Pod has one or more privileged container.(see more at https://hub.armosec.io/docs/c-0057)"
31
+ - expression : >
32
+ ['Deployment','ReplicaSet','DaemonSet','StatefulSet', 'Job'].all(kind, object.kind != kind) || object.spec.template.spec.containers.all(container,
33
+ !(has(container.securityContext)) ||
34
+ (
35
+ (!(has(container.securityContext.priviliged)) || container.securityContext.privileged != true) &&
36
+ (!(has(container.securityContext.capabilities)) || !(has(container.securityContext.capabilities.add)) ||
37
+ container.securityContext.capabilities.add.all(cap, cap != 'SYS_ADM')))
38
+ )
39
+ message: "Workloads has one or more privileged container.(see more at https://hub.armosec.io/docs/c-0057)"
40
+ - expression : >
41
+ object.kind != 'CronJob' || object.spec.jobTemplate.spec.template.spec.containers.all(container,
42
+ !(has(container.securityContext)) ||
43
+ (
44
+ (!(has(container.securityContext.priviliged)) || container.securityContext.privileged != true) &&
45
+ (!(has(container.securityContext.capabilities)) || !(has(container.securityContext.capabilities.add)) ||
46
+ container.securityContext.capabilities.add.all(cap, cap != 'SYS_ADM')))
47
+ )
48
+ message: "CronJob has one or more privileged container.(see more at https://hub.armosec.io/docs/c-0057)"
0 commit comments