Всем привет.
Есть некоторое ПО с которым можно взаимодейстсовать в Docker контейнере.
Внутри самого контейнера развернута Ubuntu и собственно сам написанный софт.
Можно ли как то закрыть доступ в Docker контейнер.
Под доступом я имею в виду доступ к файловой системе внутри контейнера, вход в контейнер с помощью, например, docker exec -it containrname bash и т.д.
Т.е суть в том, чтобы пользователь не мог туда попасть, лишь передать информацию типа "выполни такой то скрипт" и все.
В самом контейнере запускаются .sh скрипты, но важно сохранить недоступность к их алгоритмам.
Если это с докером невозможно, кто может быть знает какие либо альтернативы.
Требование к этим самым альтернативам:
- Возможность внутри контейнера (назовем его абстрактно так) запустить полноценную Ubuntu
- Доступность этой самой альтернативы для Windows / Linux
- Очень желательно чтобы эта самая альтернатива была open source, но безопасной
Кто что мог бы рассказать?
Рад буду подискуссировать =)
Не понятен контекст. Этот контейнер продаёте кому-то, и хотите, чтобы он не залез под капот? Или Linux-машина ваша, root-доступом ни с кем делиться не обязательно?
Сергей Соколов, уточняю вопрос.
Да, контейнер передается третьим лицам (далее Заказчика).
Сам контейнер будет запускаться на машине Заказчика.
Заказчик не должен заходить внутрь контейнера и иметь какой либо доступ к файловой системе.
В самом контейнере будет подыматься веб-сервер (по сути он и будет для взаимодействия с контейнером), будет открыт только 1 порт для этого самого веб-сервера.
Т.е визуально это так:
- Запуск контейнера с помощью docker run...
- Отправка запросов на к примеру localhost:1111
sergeimvc, всё, что оказывается у Заказчика, ему доступно. Есть специфические шифрующие решения, как ionCube для PHP, или, послабее, shc для bash-скриптов.
Но все эти решения не про докер и упаковку сервиса, а про частности-внутренности.
Наверное, лучше держать сервис на своих серверах, продавая клиентам SAAS.
Сергей Соколов, но разве нет каких либо подходов или технологий?
shc можно декомпилировать, причем очень просто. php здесь вообще непричем, а если бы и был, то все равно не подошел бы, т.к ionic для это коммерческая либа.
ожидал какую то технологию с открытым исходным кодом, но одновременно с надежным алгоритмом.
Все что выполняется у клиента - априори может быть сдампано, декомптлировано, взломано. Единственный вариант избежать этого - разделить проект на клиентскую и серверную части. Все ноу-хау в серверной части на подконтрольным Вам и только Вам ресурсам. А клиент - он просто генерит запросы и получает ответы. Во всех остальных случаях - софт будет рано или поздно сломан.
Звучит как набор требований, которым докер и вообще любой контейнер плохо соответствует. Зашифрованная виртуалка подходит гораздо лучше, да и то с оговорками.
сергей кузьмин, оууу, на счет Вашего сообщения Вы точно ошибаетесь.
Как минимум сами подумайте, я никого не прошу что то сделать, просто спрашиваю возможно ли это средствами докера и ожидаю услышать совет более опытных ребят на этот счет.
А Вы тем временем можете и дальше продолжать так, как написали в ответе)
sergeimvc вы совершенно правы - можно через докер защитить;
Docker provides a simple yet powerful solution to change the container's privilege to a non-root user and thus thwart malicious root access to the Docker host. This change to the non-root user can be accomplished using the -u or –user option of the docker run subcommand or the USER instruction in the Dockerfile.
что я хотел передать моем первоначальный комменте это что защите это много разных твиков - не появляется "из коробки" - надеюсь с этим вы согласны
сергей кузьмин, ну и что вы процитировали? Что можно осложнить проникновение из контейнера наружу, в гипервизор. А ТСу-то нужно ровно обратное - чтобы внутрь контейнера не мог пролезть никто, даже с рутовыми на хосте правами.
ky0, верно. вы правы (уменя длинный рабочий день не удосужился прочитать сам )- я - то как раз считаю что это непростая задача из многих дейстий а вот автор вопроса помоему не согласился
Все что попало на машину пользователя по определению не защищено. Любой скрипт и даже бинарник можно проанализировать и вытащить оттуда логику (слои докера - тоже просто архив с файлами). Это только вопрос времени.
Разверните виртуалку (можно даже под каждого пользователя) где-нибудь в облаке и сделайте нормальный API.