Contém o Docker Engine com o AppArmor

6

Em face dos lembretes que o Docker O mecanismo deve ser executado contido no AppArmor ou no SELinux, como executar o Docker no AppArmor no Ubuntu 14.04?

A documentação do Docker Security e o LXC menciona que o Ubuntu vem com modelos do AppArmor para o LXC. O que tem que ser feito para aproveitar isso?

Assumindo um host padrão do Ubuntu Server 14.04 e o Docker instalado com curl -s https://get.docker.io/ubuntu/ | sudo sh , o que deve ser feito a seguir para que, ao executar um contêiner, o mecanismo do Docker esteja contido no AppArmor?

    
por Fernando Correia 19.06.2014 / 17:10

2 respostas

4

Bem, isso é um problema com o uso de pacotes de fora dos repositórios do Ubuntu. Você precisará pedir ao Docker Engine Developers para escrever um perfil apparmor para você ou escrever o seu próprio perfil. O mesmo com um perfil de selinux.

Agora aqui é onde você começará a ter opções, caso use ou não use LXC, apparmor, selinux, etc.

Por exemplo, os desenvolvedores do Docker acham que você precisa atualizar o link e essa é certamente uma maneira de gerenciar a situação.

Apparmor e selinux protegem você (potencialmente) de explorações de dia zero, mas as explorações são corrigidas por meio de atualizações.

A vantagem do apparmor é que é mais fácil de aprender. A desvantagem é que você tem que escrever seu próprio perfil.

Veja a documentação do apparmor

link

link

ou, para um exemplo prático, usando um programa simples, consulte o link

Enquanto estivermos em opiniões ...

O RHEL e o Fedora estão um pouco à frente da curva em comparação ao Ubuntu em termos de virtualização. O RHEL está trabalhando com o Docker para fornecer suporte, incluindo o selinux

link

Não tenho certeza sobre o Fedora e o Docker, mas o Fedora usa o selinux e o virtmanager para gerenciar o LXC.

link

No final do dia, você terá que revisar as opiniões e seguir a solução que funciona melhor para você.

    
por Panther 19.06.2014 / 17:52
0

A versão atual do mecanismo de encaixe é 1.10.2-cs1, e aqui está o perfil padrão do AppArmor para executar contêineres que o Docker fornece em link

#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,
}

Para carregar um novo perfil no AppArmor: $ apparmor_parser -r -W /path/to/your_profile

Quando você executa um contêiner, ele usa a política padrão do docker, a menos que você a substitua pela opção de segurança-opt. Por exemplo, o seguinte especifica explicitamente a política de um docker diferente:

$ docker run --rm -it --security-opt apparmor:docker-different hello-world

    
por JamesCW 04.03.2016 / 16:22