Всем привет!
В статье Автор предлагает рассмотреть возможный способ обхода Admission Controller (на примере OPA/Gatekeeper) с использованием
Ephemeral Containers.Алгоритм весьма простой:
🍭 Создание политик, которые запрещают устанавливать
privileged: true для containers и initContainers, создание pod🍭 Попытки модификации спецификации созданного
pod для добавления ephemeralContainer. Безуспешные patch, edit, т.к. большинство спецификации pod является неизменяемым🍭 Однако,
kubectl debug сработает, а при более детальном рассмотрении окажется, что он использует тот же самый patch🍭 Формирование запроса определенного вида и реализовать его с использованием
curl. К pod будет добавлен ephemeralContainer, обладающий флагом privileged: true (при работающих политиках)В чем же разница? Ответ прост – иной
api endpoint, который как раз и позволит модифицировать спецификацию контейнера через curl запрос. В завершении статьи Автор рассказывает, что необходимо добавить в политике Gatekeeper, чтобы вышеописанное не получилось.