Como proteger um host do docker para não permitir o enraizamento

6

Estou tentando tornar o Docker em um servidor mais seguro. O principal problema é que a maioria das pessoas diz "se uma pessoa tem acesso ao docker, eles podem ser root também" para um ponto de administração de poucos, isso não é algo que você gostaria.

Para elaborar, eles podem usar -v e montar /etc em /mnt no contêiner e alterar o arquivo de sombra e obter acesso ao host. Eles podem usar -d ou opção privilegiada para fazer mais também.

Então, basicamente, há algumas coisas que eu quero "experimentar" e restringir.

  1. Montagens de vinculação de volume
  2. Privilegiada
  3. --add-cap
  4. -d (certos itens?)

Minhas ideias até agora:

  • Alias para um script bash para o docker, use o sudo nele e regexe tudo o que eles não devem fazer.
  • Ligue a API remota, proteja-a e talvez inverta o proxy com nginx e regex em nginx as coisas que eles não devem fazer.
  • Use outras ferramentas? Mesos / Maratona / Enxame / Estaleiro / Qualquer que seja

Os itens opcionais seriam fazer com que os contêineres se comprometam com o código git e permitir que um "verificador" verifique o conteúdo do Dockerfile e crie a imagem para eles. Em seguida, assine essa imagem e implemente-a automaticamente. (mas isso não lhes daria muita liberdade)

Além disso, remover o volume de ligação não é o mais bonito. Seria muito mais simples se tivéssemos um plug-in para o docker que diz "você só pode montar em /data , como usuário X", em que USER no Dockerfile é esse usuário X.

Algo como docker-novolume-plugin já é um bom começo para os volumes, não restringe o vínculo volumes embora.

No final, a pergunta seria: como posso deixar os usuários criar / extrair / executar imagens do docker como seu próprio usuário / docker e não conseguir enraizar o sistema. Não precisa ser perfeito, desde que funcione.

    
por Erik-Jan Riemers 26.05.2016 / 16:30

1 resposta

5

Proteger um mecanismo docker requer prestar atenção a muitos aspectos diferentes e a defesa em profundidade é sempre sobre camadas de segurança.

Um dos requisitos listados, restringindo o que os usuários podem comandar o mecanismo docker , provavelmente é um dos mais importantes, pois, a partir de agora, o mecanismo docker não implementa um controle de autorização.

Suas alternativas incluem:

Também sugeriria examinar os diferentes sistemas operacionais nos quais um docker engine pode ser implementado, e aconselharia a não usar um sistema operacional de finalidade geral, mas um sistema especializado, como Atomic . Ambos, Atomic e OpenShift juntos, garantirão que você também possa:

por 27.05.2016 / 20:40