Ввиду напоминаний о том, что Docker Engine должен запускаться вместе с AppArmor или SELinux, как запустить Docker под AppArmor в Ubuntu 14.04?
Документация Docker Security и документация LXC упоминают, что Ubuntu поставляется с шаблонами AppArmor для LXC. Что нужно сделать, чтобы воспользоваться этим преимуществом?
Предполагая, что по умолчанию хост Ubuntu Server 14.04 и Docker установлены с curl -s https://get.docker.io/ubuntu/ | sudo sh
, что нужно сделать дальше, чтобы при запуске контейнера сам Docker Engine будет содержаться в AppArmor?
Ну, это - проблема с использованием пакетов снаружи репозиториев Ubuntu. Вы должны будете или попросить, чтобы Разработчики Механизма Докера записали профиль apparmor для Вас или записали Ваше собственное. То же с профилем selinux.
Теперь вот то, где Вы начнете получать опции, должны Вы использовать или не использовать LXC, apparmor, selinux, и т.д.
, Например, разработчики Докера чувствуют, что необходимо обновить - http://blog.docker.com/ , и это - конечно, один способ управлять ситуацией.
Apparmor и selinux защищают Вас (потенциально) от использования нулевого дня, но использование фиксируется через обновления.
преимущество apparmor состоит в том, что легче учиться. Недостаток - то, что необходимо записать владение профилем.
Видят apparmor документацию
https://help.ubuntu.com/community/AppArmor#Profile_customization
https://wiki.ubuntu.com/AppArmor
или, для практического примера, с помощью довольно простой программы, видят http://blog.bodhizazen.com/linux/apparmor-privoxy-profile/
, пока мы находимся на мнениях...
RHEL и Fedora немного опережают события по сравнению с Ubuntu с точки зрения Виртуализации. RHEL работает с Докером для оказания поддержки, включая selinux
http://www.redhat.com/about/news/press-archive/2014/4/red-hat-docker-expand-collaboration
, я не уверен в Fedora и Докере, но Fedora использует selinux и virtmanager для управления LXC - http://major.io/2014/04/21/launch-secure-lxc-containers-on-fedora-20-using-selinux-and-svirt/
В конце дня, необходимо будет рассмотреть мнения и пойти с решением, которое работает лучше всего на Вас.
Текущая версия механизма докера 1.10.2-cs1, и здесь является Профилем AppArmor по умолчанию для рабочих контейнеров, которые Докер обеспечивает в https://docs.docker.com/engine/security/apparmor /
#include <tunables/global>
profile docker-default flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
network,
capability,
file,
umount,
deny @{PROC}/{*,**^[0-9*],sys/kernel/shm*} wkx,
deny @{PROC}/sysrq-trigger rwklx,
deny @{PROC}/mem rwklx,
deny @{PROC}/kmem rwklx,
deny @{PROC}/kcore rwklx,
deny mount,
deny /sys/[^f]*/** wklx,
deny /sys/f[^s]*/** wklx,
deny /sys/fs/[^c]*/** wklx,
deny /sys/fs/c[^g]*/** wklx,
deny /sys/fs/cg[^r]*/** wklx,
deny /sys/firmware/efi/efivars/** rwklx,
deny /sys/kernel/security/** rwklx,
}
Для загрузки нового профиля в AppArmor: $ apparmor_parser -r -W /path/to/your_profile
при выполнении контейнера он использует политику по умолчанию докером, если Вы не переопределяете его с безопасностью - выбирают опция. Например, следующее явно указывает другую политику докера:
$ docker run --rm -it --security-opt apparmor:docker-different hello-world