Подтвердить что ты не робот

Безопасность Docker при запуске как пользователь root

Доккер сообщение в блоге указывает:

Контейнеры-докеры по умолчанию довольно безопасны; особенно если вы позаботьтесь о выполнении процессов внутри контейнеров, как не привилегированные пользователи (т.е. не root). "

Итак, что такое проблема безопасности, если я запускаю как root под докером? Я имею в виду, что это очень безопасно, если я позабочусь о своих процессах как о не привилегированных пользователях, поэтому как я могу быть вреден для размещения в контейнере в качестве пользователя root? Я просто прошу его понять это, как он может быть изолирован, если он не безопасен при запуске с правами root? Какие системные вызовы могут выставить хост-систему?

4b9b3361

Ответ 1

При запуске от имени пользователя root вы можете получить доступ к более широкому спектру сервисов ядра. Например, вы можете:

  • управлять сетевыми интерфейсами, таблицами маршрутизации, правилами netfilter;
  • создавать сырые сокеты (и, вообще говоря, "экзотические" сокеты, реализующие код, который получил меньше контроля, чем старые старые TCP и UDP);
  • файловые системы mount/unmount/remount;
  • изменить права собственности на файлы, разрешения, расширенные атрибуты, переопределить обычные разрешения (т.е. использовать несколько разные коды кода);
  • и др.

(Интересно отметить, что все эти примеры защищены capabilities.)

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

Кроме того, если кто-то найдет способ вырваться из контейнера, если вы вырвёте его как root, вы можете нанести гораздо больший урон, чем обычный пользователь.

Ответ 2

Вы можете перезагрузить хост-компьютер, нажав на /proc/sysrq-trigger на докере. Процессы, выполняемые как root в докере, могут это сделать.

Это, пожалуй, хорошая причина не запускать процессы как root в docker;)