Policy Engines и subresources. Этим бы я и хотел сегодня с вами поделиться ;)Как вы знаете все в
Kubernetes это YAML и все YAML проходят через mutating и validating admission controllers, на которых и базируются Policy Engines. Но есть и исключения в виде subresources:- pods/exec
-
pods/attach
- pods/log
- pods/portforward
На просторах сети можно встретить информацию, что их нельзя обработать как другие ресурсы. И я тоже так думал....Но оказывается они идут через операцию
CONNECT (не CREATE, UPDATE) в виде ресурса PodExecOptions, дочерним для Pod, и это можно обработать! Посмотрите:1) Политика для
Kyverno (для Gatekeeper должно тоже работать)2) Статья "Using K8s Admission Controllers to Detect Container Drift at Runtime" с самописным
admission controller (исходный код)P.S. Ну и про корректный RBAC не забывайте!
P.S.S. Когда-то еще был DenyEscalatingExec ...