960просмотров
19.9%от подписчиков
18 марта 2026 г.
Score: 1.1K
«Прячем» секреты от cluster admin. Часть 1. Вопрос, который вам могут задать на собеседовании, чтобы почеленджить на тему понимания работы механизмов безопасности в k8s и в Linux. Представьте, что вам нужно обеспечить недоступность секретов приложения для cluster admin. Концептуально это невозможно, конечно, идеальной защиты не существует. На то он и cluster admin. Однако защита может быть не только техническая, но и юридическая, особенно в зарегулированных сферах типа банковской или медицинской. Для этого понадобятся аудит логи и алерты на них, который один человек без доп. апрувов просто поменять не сможет. Приступим к разбору.⬇️ Зашифрованный etcd и RBAC на доступ к секретам - это база. Не секрет, что секреты (такая тавтология) хранятся в base64 и cluster admin может заглянуть куда угодно. Наша задача - сделать процесс доступа сильно сложнее, так, чтобы по аудит логам (с настроенными алертами на службу безопасности) понять, что cluster admin целенаправленно полез туда, куда не надо. 🟠Проблема: Где текут секреты? Обычно всё ломается на двух этапах: 🟠1. API Server: Любой kubectl get secret -o yaml или describe pod вываливает всё содержимое.
🟠2. Runtime: Если админ может сделать kubectl exec, он просто посмотрит env или залезет в /proc/1/environ. Поэтому не давать exec - это база RBAC, но админ все равно сможет создать под, подменив либо образ, либо cmd, либо что-то еще, чтобы посмотреть env, даже без exec. Добавлям паранои: Vault Agent + execve() Забудьте про envFrom. Мы будем использовать Vault Agent Injector и фокус с подменой процесса через vault-env. При этом важно, чтобы либо в vault так же был настроен аудит, либо vault был недоступен для управления тем же самым админом. ➡️Секреты вообще не должны попадать в Kubernetes как объекты. Под аутентифицируется в Vault через свой ServiceAccount. Админ может обсмотреться на манифест пода - там будут только аннотации. 🐈Во второй части разберём, как через подмену процесса (execve) передать секреты в обход Kubernetes целиком, зачем выносить аудит Vault в изолированный SIEM и как добить защиту distroless-образами, сбросом capabilities и динамическими паролями с TTL в несколько секунд.