Files
kyverno-2026-example/02-validation/02-security/require-run-as-non-root.yaml
2026-04-08 20:22:14 +07:00

59 lines
1.8 KiB
YAML

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-run-as-non-root
annotations:
policies.kyverno.io/title: "Запрет запуска от root"
policies.kyverno.io/category: Pod Security Standards (Restricted)
policies.kyverno.io/severity: high
policies.kyverno.io/subject: Pod
policies.kyverno.io/description: >-
Контейнеры не должны запускаться от пользователя root (UID 0).
Процесс от root может читать/писать файлы хоста через volume mounts
даже без привилегированного режима.
Установите runAsNonRoot: true или runAsUser >= 1000.
spec:
validationFailureAction: Enforce
background: true
rules:
- name: check-runasnonroot-pod-level
match:
resources:
kinds:
- Pod
exclude:
resources:
namespaces:
- kube-system
validate:
message: >-
Под '{{ request.object.metadata.name }}' должен иметь
spec.securityContext.runAsNonRoot: true.
Это гарантирует, что ни один контейнер не запустится от root.
pattern:
spec:
securityContext:
runAsNonRoot: true
- name: check-runasuser-not-root
match:
resources:
kinds:
- Pod
exclude:
resources:
namespaces:
- kube-system
validate:
message: >-
Контейнер '{{ element.name }}' использует runAsUser: 0 (root).
Установите runAsUser >= 1000.
foreach:
- list: "request.object.spec.containers"
deny:
conditions:
any:
- key: "{{ element.securityContext.runAsUser }}"
operator: Equals
value: 0