All Policies

Deny Commands in Exec Probe

Developers may feel compelled to use simple shell commands as a workaround to creating "proper" liveness or readiness probes for a Pod. Such a practice can be discouraged via detection of those commands. This policy prevents the use of certain commands `jcmd`, `ps`, or `ls` if found in a Pod's liveness exec probe.

Policy Definition

/other/deny-commands-in-exec-probe/deny-commands-in-exec-probe.yaml

1apiVersion: kyverno.io/v2beta1 2kind: ClusterPolicy 3metadata: 4 name: deny-commands-in-exec-probe 5 annotations: 6 policies.kyverno.io/title: Deny Commands in Exec Probe 7 policies.kyverno.io/category: Other 8 policies.kyverno.io/subject: Pod 9 kyverno.io/kyverno-version: 1.1.0 10 policies.kyverno.io/minversion: 1.9.0 11 kyverno.io/kubernetes-version: "1.26" 12 policies.kyverno.io/description: >- 13 Developers may feel compelled to use simple shell commands as a workaround to 14 creating "proper" liveness or readiness probes for a Pod. Such a practice can be discouraged 15 via detection of those commands. This policy prevents the use of certain commands 16 `jcmd`, `ps`, or `ls` if found in a Pod's liveness exec probe. 17spec: 18 validationFailureAction: Audit 19 background: false 20 rules: 21 - name: check-commands 22 match: 23 any: 24 - resources: 25 kinds: 26 - Pod 27 preconditions: 28 all: 29 - key: "{{ length(request.object.spec.containers[].livenessProbe.exec.command[] || `[]`) }}" 30 operator: GreaterThan 31 value: 0 32 - key: "{{ request.operation }}" 33 operator: NotEquals 34 value: DELETE 35 validate: 36 message: Cannot use commands `jcmd`, `ps`, or `ls` in liveness probes. 37 deny: 38 conditions: 39 any: 40 - key: 41 - true 42 operator: AnyIn 43 value: "{{ request.object.spec.containers[].livenessProbe.exec.command[].regex_match('\\bjcmd\\b',@) }}" 44 - key: 45 - true 46 operator: AnyIn 47 value: "{{ request.object.spec.containers[].livenessProbe.exec.command[].regex_match('\\bps\\b',@) }}" 48 - key: 49 - true 50 operator: AnyIn 51 value: "{{ request.object.spec.containers[].livenessProbe.exec.command[].regex_match('\\bls\\b',@) }}"
yaml