AppArmor представляет в Докере/LXC

Не уверенный, почему использование третья сторона repo, когда Vbox обеспечивает способ сделать это.

Но:

  • VBox скомпилирует модуль для соответствия рабочему ядру, в случае Fedora, ядро обновляет Вас, просто должен повторно выполнить сервис для конфигурации: установка/etc/init.t/vboxadd
  • Установка VBox потребует дополнительного pkg's как ядро-devel, заголовок ядрa, glibc-devel, gcc и 3 или еще 4, когда сбои компиляции можно будет проверить журнал для знания то, что это недостающий файл и выполняет конфетку whatprovides; вкусная установка

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

  • Используя сплав repo, Вам, возможно, на самом деле придется установить дополнительные pkgs, которые являются базирующимся сплавом (дополнительное пространство на HDD, которого Вы могли бы избежать, если у Вас нет другого материала от них),

Для меня и что я на самом деле, я устанавливаю Fedora, действительно выполняют конфетку-y обновление и будучи обновлением, я просто выполняю гостевые дополнения установки (разрешение один зависимостей). Когда новое ядро выходит и после обновления системы, я просто выполняю установку/etc/init.t/vboxadd.

11
02.05.2014, 20:20
2 ответа
[1120182]Во-первых, cgroups не используются для изоляции приложения от других в системе. Они используются для управления использованием ресурсов и доступа к устройствам. Именно различные пространства имен (PID, UTS, mount, user...) обеспечивают некоторую (ограниченную) изоляцию.

Более того, процесс, запущенный внутри контейнера Docker, вероятно, не сможет управлять профилем AppArmor, под которым он запущен. В настоящее время подход заключается в настройке конкретного профиля AppArmor перед запуском контейнера.

Похоже, что драйвер выполнения libcontainer в Docker поддерживает [1120749]настройку профилей AppArmor для контейнеров[1120750], но я не могу найти ни одного примера или ссылки в документации.

Очевидно, что AppArmor также поддерживается с помощью [1120751]LXC в Ubuntu[1120752].

Вы должны написать профиль AppArmor для вашего приложения и убедиться, что LXC/libcontainer/Docker/... загружает его перед запуском процессов внутри контейнера.

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

В этом случае нет никакой связи между бинарным и реально принудительным профилем. Вы должны явно сказать Docker/LXC, чтобы он использовал этот профиль для вашего контейнера. Написание профиля для бинарного файла MySQL приведет к его принудительному использованию только на хосте, а не в контейнере[1120195].
8
27.01.2020, 19:59
[1120238] Ответ весьма вероятен: нет.

В [1120801]Ubuntu Server guide topic LXC[1120802] обсуждается практически ваш точный вопрос и делается следующее утверждение:

Программы в контейнере не могут быть далее ограничены - например, MySQL запускается под профилем контейнера (защищает хост), но будет Невозможно войти в профиль MySQL (для защиты контейнера).

Лучшая возможность избежать эксплойтов с нежелательными эффектами - это ограничить пользователя, работающего с контейнером, и использовать контейнеры LXC в пользовательском пространстве, которые используют функцию [1120805]usersns[1120806] в ядре. Однако, [1120807]docker[1120808] в настоящее время - насколько мне известно - не поддерживает [1120809]usersns[1120810].

В таком случае MySQL будет - с точки зрения хостов - работать как непривилегированный пользователь, в то время как внутри контейнера он может быть запущен как [1120811]root[1120812]. Затем вы можете использовать [1120813]iptables[1120814] для привязки MySQL к внешнему порту хоста, если это необходимо.[1120247].

3
27.01.2020, 19:59

Теги

Похожие вопросы