Запуск образа докера от имени пользователя root и службы от имени пользователя без полномочий root - PullRequest
0 голосов
/ 25 сентября 2019

С точки зрения безопасности я пытаюсь понять разницу между

  • Запуск самого образа как пользователя без полномочий root с директивой USER в dockerfile
  • Запускобраз от имени пользователя root и запуск службы в качестве пользователя без полномочий root
    user

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

Эти два эквивалента?Является ли второй вариант уязвимым, учитывая, что скрипт запуска работает от имени пользователя root?Имеет ли значение, если он выходит (или нет) после запуска службы?

Извините, если этот вопрос уже был задан и получен ответ.

1 Ответ

1 голос
/ 25 сентября 2019

Действительно важно то, что, как только ваша служба запущена и работает, она не запускается от имени пользователя root.(Это немного менее важно в Docker, чем нет, но «не будьте root» по-прежнему считается лучшей практикой.) Оба варианта, которые вы предлагаете, являются допустимыми.

Ваш второй вариант, «запускать какroot, а затем отбросить привилегии », в Docker это не распространено, но по духу оно совпадает с тем, что делают большинство демонов Unix. Официальное изображение Hashicorp Consul - единственное, что я знаю о том, что на самом деле это делает.В частности, он ожидает запуска с подключенным каталогом данных, поэтому он chown -R consul каталог данных от имени пользователя root до запуска самого демона.Я ожидаю, что это будет довольно типичное использование этого шаблона.

Если вам не нужно выполнять такую ​​настройку перед запуском, указав произвольный некорневой USER в концеваш Dockerfile механически проще и проверяет тот же флажок «не быть root».

Есть много вопросов SO, связанных с попыткой запустить контейнер в качестве текущего пользователя хоста или попыткой запустить упакованный инструментв Docker против файловой системы хоста.Это неудобно, так как основная цель Docker - изолировать контейнеры от этих деталей хоста.Если вам нужно выбрать пользователя, от имени которого запускается контейнерный процесс, вам нужна стандартная опция docker run -u и потребуется первая опция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...