Усиление защиты: не-root и минимальная база
Образ, который работает, — не обязательно образ, который безопасно развёртывать. В этом уроке мы сосредоточимся на одной теме: сократить то, что можно атаковать. Мы запускаем контейнер от имени пользователя, не являющегося root: по умолчанию в контейнере используется root, а инструкция USER понижает
Дайте работнику только те ключи, которые ему нужны (не-root), и держите ящик с инструментами маленьким (минимальная база) — чтобы даже если кто-то проникнет внутрь, у него было меньше ключей и меньше инструментов, с которыми можно играть.
- пользователь, не являющийся root (USER)
- Запуск процесса контейнера от имени пользователя с ограниченными привилегиями вместо root. Инструкция USER в Dockerfile задаёт его и ограничивает ущерб (blast radius), если атакующий получит возможность выполнения кода.
- минимальный базовый образ
- Небольшая база вроде alpine или distroless с малым числом пакетов и инструментов. Чем меньше установлено в образе, тем меньше возможных уязвимостей и тем меньше поверхность атаки (attack surface).
- сканирование образа (CVE)
- Автоматическая проверка образа по базе данных известных уязвимостей (CVE) в его библиотеках и базе. Сканирование помечает уязвимые пакеты, поэтому вы фиксируете версии и обновляете их.