Назад | Перейти на главную страницу

«Docker-compose up» как пользователь root или пользователь без полномочий root?

После прочтения некоторых статей я все еще не уверен, какого пользователя использовать для запуска контейнера докеров. Есть ли проблемы с безопасностью при запуске контейнера докеров от имени пользователя root? Можно ли запускать контейнеры докеров от имени пользователя root ИЛИ следует использовать своего обычного пользователя, добавить его в группу «докеров», а затем запускать мои контейнеры ИЛИ я должен создать дополнительного пользователя только для управления / создания контейнеров докеров?

корень @ myDockerHost: / opt / myDockerContainer # docker-compose up -d

VS

Крис @ myDockerHost: / opt / myDockerContainer # docker-compose up -d

VS

dockerusr @ myDockerHost: / opt / myDockerContainer # docker-compose up -d

(Я говорю о пользователях на моем хосте докеров, а не о пользователях внутри контейнера!)

r00tusr!

Я голосую за то, чтобы контейнеры всегда запускались как обычные пользователи.

В производственной системе ваши контейнеры не будут запускаться с правами root. Даже в непроизводственных системах пользователям, которые запускают ваш контейнер, может быть запрещено запускать программы от имени пользователя root.

Поэтому мне нравится заставлять их работать должным образом как непривилегированный пользователь, даже когда это сложно.

Также есть соображения безопасности. Общее правило, которому следуют профессиональные системные администраторы, - никогда не запускать что-либо от имени пользователя root, если это действительно не требуется. Как только программа запущена от имени root, она получает полный контроль над компьютером и может делать с этим компьютером все, что ей велят. Будь то добрые работы, задуманные автором, или гнусные произведения бездельника, который взламывает программу автора через уязвимость, которую автор не думал закрывать.

Поскольку мы, наконец, узнали, что на самом деле не можем предсказать, в каких программах есть недостатки, мы больше не рискуем.

Спасибо! Майк

Это не имеет большого значения. В docker-compose команда подключается к docker.sock, также известному как API докеров, для выполнения всех команд контейнера. По умолчанию этот API доступен только пользователю root в Linux, поэтому вы часто видите людей, выполняющих команды с помощью sudo.

Вы можете настроить докер, чтобы разрешить пользователям без полномочий root доступ к этому API, просто убедитесь, что вы доверяете этим пользователям root-доступ на своем хосте, поскольку API предоставляет такой уровень доступа. Видеть этот ответ для получения подробной информации о том, как предоставить пользователям этот доступ. Демон dockerd обычно настраивается для работы с правами root, пользователь, обращающийся к этому API, не имеет большого значения (в настоящее время экспериментальный режим без root-доступа).

Важная деталь - запускать приложения внутри вашего контейнера от имени пользователя без полномочий root. Это эквивалент systemd, запущенного от имени пользователя root и запуска программы от имени пользователя без полномочий root. Вы настраиваете этого пользователя в Dockerfile, docker-compose.yml или в вашем docker run -u CLI.

Причина, по которой я говорю «небольшая разница», заключается в том, что файл компоновки может конфигурировать монтирование хоста с относительным путем. Если ты бежишь docker-compose в качестве пользователя root или другого пользователя, эти подключения к хосту могут иметь другой путь, а файлы могут принадлежать другому UID, который может или не может отображаться на UID вашего приложения внутри контейнера. Кроме того, я не могу придумать никакой разницы между бегом docker-compose как пользователь или root.