Вот почему Подман более защищен, чем Docker — Devsecops
Мы все знаем, что Docker является одним из популярных инструментов для контейнерирования приложения в мире DevOps.
Но в этой статье мы увидим о Podman и о том, почему это более обеспеченный способ запуска контейнера.
Podman — это контейнерный двигатель без демонов для разработки, управления и запуска контейнера в системе Linux.
Регистрация аудита
System Linux хранит информацию об учетной записи пользователя в файле с именем /и т.п./тень . Это общий файл безопасности для наблюдения в системах Linux.
Ядро Linux позволяет администраторам наблюдать за процессами, которые изменяют файл, и ведут его запись в Audit.log Анкет
Администраторы хотят знать, изменяет ли какой -либо процесс файл из журнала.
auditctl -w /etc/shadow
Эта команда добавит /и т. Д./Тень файл в систему аудита.
Давайте изменим /и т. Д./Тень файл и посмотрите, что произойдет
touch /etc/shadow
ausearch -f /etc/shadow -i -ts recent
Аудиторская запись покажет много информации о процессе и владельце процесса Аудит UID (AUID), который изменил /и т. Д./Тень файл
Логин uid в ядре Linux
есть файл с именем loginuid, хранящийся в /proc/self/loginuid Анкет Этот файл является частью структуры Proc в Linux. Этот файл может быть установлен только Однажды Анкет
После того, как он будет установлен, ядро не позволит ни одному процессу сбросить его.
Когда я вхожу в систему, программа входа в систему устанавливает поле Loginuid для моего процесса входа в систему.
Мой uid был 1000 Анкет
Даже если я перейду на root, мой логин будет таким же. 1000
Важно отметить, что каждый процесс, который Вилка и выполнить Из первоначального процесса будет то же самое, что ясно знал о информации пользователя.
Как это работает в контейнерах
Давайте попробуем запустить тот же процесс в контейнерах Podman и Docker
Теперь мы проверим это с Docker
Хм, интересно … почему логин отличается для Docker и то же самое для Podman.
Причина
Итак, если вы внимательно помните. Я сказал какое -то важное ключевое слово под названием Вилка и выполнить Анкет Давайте обсудим об этом здесь.
Podman использует модель вилки/EXEC для контейнера, поэтому процесс контейнера является дочерним процессом Podman. Принимая во внимание, что Docker использует модель клиента/сервера.
Docker использует CLI, который связывается с Docker Daemon через работу клиента/сервера.
Затем демон Docker создает контейнер и обрабатывает связь stdin/stdou T обратно в клиентские инструменты Docker.
Таким образом, логин по умолчанию контейнера Podman по -прежнему одинаковым ( 1000 ), тогда как логинид процессов Docker по умолчанию (до установки их логина) является 4294967295 Анкет
Поскольку контейнер является ребенком Docker Daemon, а Docker Daemon является ребенком иминской системой.
Что может пойти не так?
Давайте посмотрим, что произойдет, если процесс контейнера, созданный Docker, изменяет /и т. Д./Тень файл.
Вы можете увидеть UID как unset В случае докера. Это означает, что администратор будет знать, что /и т. Д./Шадо W модифицируется. Но администратор никогда не узнает, кто изменил этот файл.
Если этот хакер удаляет контейнер Docker, то в системе, который изменил файл/etc/теневой, не будет следить.
Теперь давайте посмотрим на тот же сценарий для Podman.
sudo podman run --privileged -v /:/host fedora touch /host/etc/shadow
sudo ausearch -f /etc/shadow -i
Podman записывает процесс, который правильно изменяет файл, поскольку он использует традиционную модель Fork/Exec.
Вот почему Podman более защищен, чем Docker — Devsecops. Использование Podman для запуска контейнеров позволяет вам поддерживать лучшую безопасность, хотя регистрация аудита.
Система аудита очень мощная для просмотра того, что процессы делают в системе.
Ссылка: https://opensource.com/article/18/10/podman-more-secure-way-run-containers
Оригинал: «https://dev.to/ganeshmani/here-s-why-podman-is-more-secured-than-docker-devsecops-2bpk»