Как ограничить использование сети docker?

#docker #docker-networking

#docker #docker-сеть

Вопрос:

Я ищу способ ограничить доступ к «хосту» в качестве сети для запуска образа Docker. Я искал пару дней, но не смог найти решение. Есть ли способ ограничить доступ к сети для пользователей Docker?

например, удаление параметра host и всегда использование bridge в качестве сети, поэтому при вызове sudo docker network ls выходные данные будут только bridge и none

Или любой другой способ предотвращения использования хоста.

Ответ №1:

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

В принципе, можно было бы написать какой-то HTTP-прокси, который проходил бы через HTTP API Docker, но ограничивал определенные параметры (например, возвращал код состояния HTTP 401 с ошибкой JSON в правильном формате, если HTTP POST-запрос «создать контейнер» включал запрещенное NetworkMode значение). Реализация этого была бы значительным проектом сама по себе и выходит за рамки ответа на переполнение стека.

Комментарии:

1. Спасибо за ваш ответ. Возможно ли, чтобы администратор ограничивал определенные команды для пользователей? С опцией сети хоста будет небезопасно запускать docker на серверах с пользователями, которые являются пользователями sudoers и входят в группу docker

2. Нет, нет способа ограничить то, что вы можете делать с docker помощью команды. (Вы можете очень легко использовать его для редактирования файла хоста /etc/sudoers , среди прочего.) Вероятно, вы не хотите предоставлять доступ к Docker в многопользовательской системе.

Ответ №2:

Итак, я нашел решение (альтернативу) на свой вопрос, я подумал, что это может помочь другим людям с той же проблемой. Если вы пытаетесь использовать docker на общедоступном сервере и не хотите давать людям возможность использовать сетевой хостинг (по сути, это то же самое, что быть пользователем root), вы можете использовать «Singularity». Я пробовал, и это работает как шарм. Единственное, что требует времени, это то, что вы не можете создавать свои файлы docker в среде singularity, поэтому вам приходится создавать их локально, отправлять их в свой docker-репозиторий и извлекать их через среду singularity на сервере. Это может помочь системным администраторам, которые хотят сохранить конфиденциальность сервера, предоставляя людям гибкость при работе с docker.