1. Отключение привелигированного режима.
spec:
containers:
- name: my-secure-container
image: myrepo/myapp:latest
securityContext:
privileged: false
2. Отключение host namespace.
spec:
hostPID: false
hostNetwork: false
hostIPC: false
3. Отключение монтирование /proc.
spec:
containers:
- name: exploit-container
image: mymaliciousimage
procMount: “Default”
4. Не запускать от root пользователя.
spec:
containers:
- name: exploit-container
image: mymaliciousimage
securityContext:
runAsUser: 65534
runAsNonRoot: true
5. Не использовать wildcard verbs в roles.
6. Корневая файловая система контейнера только для чтения.
spec:
containers:
- name: exploit-container
image: mymaliciousimage
securityContext:
readOnlyRootFilesystem: true
7. Запрещать пуллинг образов из публичных репозиториев.
8. Не использовать в role потенциально опасные verbs
verbs: [‘ímpersonate’, ‘bind’, ‘escalate’]
9. Отключение монтирования sa токена.
spec:
automountServiceAccountToken: false
10. Отключение использования latest тега.
11. Отключение эскалации привелегий.
securityContext:
allowPrivilegeEscalation: false
12. Отключение использования CAP.
securityContext:
capabilities:
drop:
- ALL
13. Отключение использования nginx.ingress.kubernetes.io/server-snippet в ingress.
Все это относительно просто контролировать с помощью kyverno.
#k8s