Найти в Дзене
НеХитрый DevOps

От кого по умолчанию запускается Docker контейнер? Почему это плохо?

Оглавление

Продолжаем разбирать самые популярные вопросы с собеседований на DevOps. Именно этот стоит в нашем рейтинге на 5 месте, и скорее всего на интервью у вас его спросят поэтому давайте разбираться!

От кого по умолчанию запускается контейнер?

По умолчанию Docker-контейнеры запускаются от пользователя с правами суперпользователя (root) внутри контейнера. Это может быть проблемой по нескольким причинам.

1.Безопасность.

Если контейнер скомпрометирован (например, из-за уязвимости в приложении), злоумышленник может получить доступ к контейнеру с привилегиями root внутри контейнера. Хотя контейнеры изолированы от основной системы, это не полноценная изоляция как в виртуальных машинах. Если существуют уязвимости в Docker, ядре или других компонентах системы, атакующий может попытаться выйти за пределы контейнера и получить привилегии root на хосте.

2. Ошибки конфигурации.

Иногда контейнеры запускаются с флагом `--privileged`, что дает им доступ ко многим ресурсам хоста. В таком случае root внутри контейнера может выполнять опасные действия с системой хоста, такие как изменение сетевых настроек или монтирование файловых систем.

3. Принцип наименьших привилегий.

Запуск приложений с правами root нарушает этот принцип. Обычно приложениям не требуется доступ к системным ресурсам на уровне суперпользователя, и работа от имени root может привести к случайным ошибкам или злоупотреблениям.

4. Права на хосте при монтировании файловых систем.

Если контейнер монтирует директории с хостовой файловой системы, пользователи внутри контейнера с правами root могут модифицировать файлы с правами суперпользователя на хосте, что также является угрозой безопасности.

Если ты готовишься к собеседованию на devops junior или middle, то мы собрали для тебя топ из 100 вопросов с реальных интервью, которые спрашивают "железно". Для удобства каждый вопрос имеет рейтинг от 1 до 10 баллов, начиная с самых популярный переходи по этой ссылке 100 вопросов.
Выучи их и у тебя обязательно получиться успешно пройти собеседование на девопса и получить крутую работу!

Как решить эту проблему с контейнерами в Docker.

Для повышения безопасности рекомендуется использовать флаг `--user`, чтобы запускать процессы внутри контейнера от имени непривилегированного пользователя. Также можно настроить Dockerfile, используя команду `USER`, чтобы изменить пользователя по умолчанию для контейнера.