Как запретить доступ к внутренностям контейнера Docker?


14

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

Можно ли запретить доступ к внутренним контейнерам? Можно ли проверить целостность изображения, из которого сделан контейнер?


2
Если вы не управляете докер-хостом, я думаю, вы не сможете. Какую проблему вы хотите решить, запретив этот доступ?
Тенсибай

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

Ответы:


11

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

Ваш вопрос связан со сторонней проблемой поддержки: клиенты, модифицирующие программное обеспечение, работают в своих собственных средах. Если вы предоставляете инструменты для работы с контейнерами, которые вы поставляете (например, для мониторинга и регистрации), клиенты должны согласиться (как часть лицензии на программное обеспечение) не вносить в них несанкционированные изменения. Это относится ко всем типам стороннего программного обеспечения, а не только к контейнерам.

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

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


6

Docker не предоставляет каких-либо средств, препятствующих доступу пользователя к контейнеру, однако в качестве разработчика изображений вы могли бы придерживаться нескольких стратегий

  • Запутать ваше программное обеспечение (ruby, python и т. Д.)
  • Создайте свое изображение из базового изображения, которое не имеет оболочки, и других двоичных файлов, которые пользователь может использовать для изменения изображения.

Конечно, они всегда могут вывезти контейнер и упаковать его, но это крайние меры ...


Почему Ruby и Python приводятся в качестве примеров для запутывания кода? Код на этих языках обычно хранится в виде исходных файлов с открытым текстом на исполняющей ОС. Не лучше ли использовать скомпилированный язык, такой как C ++, C #, Java или язык, который можно «минимизировать», например, JS?
AjaxLeung

5

Вы можете удалить пользователей из группы Docker и создать sudos для docker startи docker stop.


3
возможно / эффективно, только если вы владеете этими серверами ...
Дэн

5

Если ваш клиент готов вкладывать деньги, тогда вам следует воспользоваться версией Docker для предприятий. В Docker EE у вас есть один инструмент - UCP(Universal Control Plane) UCP . С помощью UCP вы можете создавать роли и права доступа и ограничивать пользователя в изменении / изменении контейнеров.

Если вы хотите протестировать UCP, чем DDC (Docker Data Center) с месячной пробной лицензией, которая поможет вам разработать все в соответствии с вашими требованиями.

Надеюсь, это поможет!

Спасибо!


1
Как решение для групп докеров, это работает, если вы управляете только хост-системой докера, OP больше похож на распространение образа ...
Tensibai

2

Дайте свою доставку с помощью скриптов. Сохраняйте все виды ограничений и проверок в скрипте ansible.


2
Как это предотвратит доступ к контейнеру? Постарайтесь объяснить, как ваше предложение действительно решит проблему ОП.
Михаэль Ле Барбье Грюневальд,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.