безопасно ли использовать docker-py/dockerpy?

#docker #dockerpy

Вопрос:

Я читал о проблемах безопасности при создании образов docker в контейнере docker путем установки сокета docker.

В моем случае я получаю доступ к docker через API, docker-py.

Теперь мне интересно, есть ли проблемы с безопасностью при создании образов с помощью docker-py на обычном хосте ubuntu (не в контейнере docker), поскольку он также взаимодействует с сокетом docker?

Я также не понимаю, почему существуют различия в безопасности между запуском docker из командной строки и этим sdk, поскольку они оба проходят через сокет?

Любая помощь приветствуется.

Ответ №1:

Нет никакой разницы, если у вас есть доступ к сокету, вы можете отправить запрос на запуск контейнера с доступом, соответствующим доступу механизма dockerd. Этот механизм обычно запускается непосредственно на хосте как корневой, поэтому вы можете использовать API для получения корневого доступа непосредственно на хосте.

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

Лучшие варианты, которые я видел, включают запуск движка без корней, и выход из контейнера даст вам доступ только к пользователю, от имени которого работает демон. Однако поймите, что у rootless есть свои недостатки, в том числе необходимость предварительной настройки хоста для поддержки этого, а также настройка сети и файловой системы выполняется на уровне пользователя, что влияет на функциональность и производительность. И второй хороший вариант-запустить сборку вообще без среды выполнения контейнера, однако у этого есть свои недостатки, такие как отсутствие замены синтаксиса Dockerfile 1 на 1 RUN , поэтому ваш образ строится в основном из эквивалента COPY шагов плюс команд, выполняемых на хосте вне любого контейнера.