2017-02-17 8 views
0

У меня есть 2 компьютера, один использует Fedora. Когда я использую эту команду в Fedora:Запретить контейнер докеров для записи файловой системы хоста

docker run -ti -v /tmp/test:/host/tmp/test ubuntu /bin/bash 

Я не могу писать/читать файлы с моего хоста. Это поведение, которое я хочу.

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

Я думаю, что Fedora SELINUX защищает мою систему. Как я могу сделать это с помощью AppArmor?

Я сделал много исследований в Интернете, но я нашел только темы о том, как разрешить запись на файловой системе хоста ... /:

Спасибо заранее.

С наилучшими пожеланиями,

EDIT

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

+1

У вас есть профиль AppArmor, который будет запрещать запись в файловой системе? Если это так, вы можете использовать [this:] (https://docs.docker.com/engine/security/apparmor/) 'docker run --rm -it --security-opt apparmor = your_profile hello-world' – jrbeverly

+0

Как в стороне, этот [проект] (https://github.com/jessfraz/bane) может быть вам полезен. В частности [this] (https://github.com/jessfraz/bane/blob/master/docker-nginx-sample) профиль apparmor для отказа в доступе к файлу и специальных командных инструментов – jrbeverly

+0

Я забыл написать его. Но эти компьютеры открыты, поэтому я не могу контролировать, как пользователь выполнит запуск докеров. –

ответ

1

Одним из вариантов является пометка привязка монтирования, как только для чтения:

docker run -ti -v /tmp/test:/host/tmp/test:ro ubuntu /bin/bash 
+1

Это также имеет то преимущество, что оно переносится в другие среды Docker (где selinux/apparmor могут быть недоступны при заданной настройке). –

+0

или ... Не запускайте процессы контейнера как root и контролируйте доступ к хосту с помощью традиционных методов. Опираясь на контейнер, чтобы вести себя правильно с корневым доступом, хлопотно. – user2105103

+1

Консолирование только для чтения не является особенностью контейнера, это особенность ядра. При этом, для действительно безопасной системы, вы сделали бы все три: 1. смонтируйте ее только для чтения, 2. запустите контейнер как не root и запретите доступ через разрешения файлов * и * 3. используйте SELinux/AppArmor для предотвращать несанкционированные действия. – mwp