リマインダー に直面して、DockerエンジンはAppArmorまたはSELinuxに含まれて実行する必要がありますが、Ubuntu 14.04でAppArmorの下でDockerを実行するにはどうすればよいですか?
Docker Securityのドキュメント および LXCのドキュメント には、UbuntuにLXC用のAppArmorテンプレートが付属していることが記載されています。それを利用するには何をしなければなりませんか?
デフォルトのUbuntu Server 14.04ホスト、およびcurl -s https://get.docker.io/ubuntu/ | Sudo sh
とともにインストールされたDockerを想定すると、コンテナを実行するときにDocker Engine自体がAppArmorに含まれるように、次に何をする必要がありますか?
さて、これはUbuntuリポジトリの外部からパッケージを使用する場合の問題です。 Docker Engine開発者に依頼して、あなたのためにapparmorプロファイルを作成するか、独自のプロファイルを作成する必要があります。 selinuxプロファイルでも同じです。
ここで、LXC、apparmor、selinuxなどを使用するかどうかに関係なく、オプションの取得を開始します。
たとえば、Docker開発者は、更新する必要があると感じています- http://blog.docker.com/ これは、状況を管理する1つの方法です。
Apparmorおよびselinuxは、ゼロデイエクスプロイトから(潜在的に)保護しますが、アップデートによりエクスプロイトは修正されます。
防具の利点は、習得しやすいことです。欠点は、独自のプロファイルを作成する必要があることです。
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はDockerと協力して、selinuxを含むサポートを提供しています
http://www.redhat.com/about/news/press-archive/2014/4/red-hat-docker-expand-collaboration
FedoraとDockerについてはわかりませんが、Fedoraはselinuxとvirtmanagerを使用してLXCを管理します- http://major.io/2014/04/21/launch-secure-lxc-containers-on-Fedora-20 -using-selinux-and-svirt /
一日の終わりには、意見を確認し、最適なソリューションを選択する必要があります。
Docker-engineの現在のバージョンは1.10.2-cs1です。これは、Dockerが https://docs.docker.com/engine/security/apparmor/ で提供するコンテナを実行するためのデフォルトの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
コンテナーを実行すると、security-optオプションでオーバーライドしない限り、docker-defaultポリシーが使用されます。たとえば、次の例では、異なるdockerポリシーを明示的に指定しています。
$ docker run --rm -it --security-opt apparmor:docker-different hello-world