web-dev-qa-db-ja.com

AppArmorでDocker Engineを含む

リマインダー に直面して、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に含まれるように、次に何をする必要がありますか?

6

さて、これは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 /

一日の終わりには、意見を確認し、最適なソリューションを選択する必要があります。

4
Panther

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

0
JamesCW