Quais são os benefícios e as desvantagens de contêineres sem privilégios?
16
A explicação técnica do que é contêiner não privilegiado é bastante boa. No entanto, não é para usuários comuns de PC. Existe uma resposta simples quando e por que as pessoas devem usar contêineres não privilegiados e quais são seus benefícios e desvantagens?
A execução de contêineres sem privilégios é a maneira mais segura de executar contêineres em um ambiente de produção. Os contêineres recebem publicidade ruim quando se trata de segurança e um dos motivos é que alguns usuários descobriram que, se um usuário obtém raiz em um contêiner, também existe a possibilidade de obter raiz no host. Basicamente, o que um contêiner não privilegiado faz é mascarar o ID do usuário do host. Com contêineres sem privilégios, usuários não raiz podem criar contêineres e terão e aparecerão no contêiner como raiz, mas aparecerão como ID do usuário 10000, por exemplo, no host (seja qual for o mapeamento dos IDs do usuário). Recentemente, escrevi um post sobre isso com base na série de blogs de Stephane Graber sobre LXC (um dos brilhantes desenvolvedores de mentes / líderes do LXC e alguém para seguir definitivamente). Eu digo novamente, extremamente brilhante.
Como você pode ver, os processos estão sendo executados dentro do contêiner como raiz, mas não aparecem como raiz, mas como 100000 do host.
Para resumir: Benefícios - segurança adicional e isolamento adicional para segurança. Desvantagem - Um pouco confuso para envolver sua cabeça primeiro e não para o usuário iniciante.
Portanto, se eu entendi direito, os contêineres não são 100% seguros por si mesmos. Não importa qual contêiner você execute, há uma chance de que o animal possa escapar. E é só aqui, quando o tipo de contêiner se torna importante. Para contêineres privilegiados, o animal será executado na raiz, plantando rootkits e consumindo valiosas chaves SSL. Para os sem privilégios, será limitado apenas à conta de usuário que criou o contêiner, certo? Roubar suas chaves SSH, etc. Isso é realmente mais seguro? Pode ser explicado com uma figura de quatro caixas aninhadas?
anatoly techtonik
2
Em resumo, os próprios contêineres prontos para uso não são seguros para uso na produção. Trate seu ambiente LXC como faria com qualquer outro ambiente Linux. Você não deixaria sua caixa Linux aberta, certo ?! Sim, seu contêiner seria limitado apenas ao qual a conta do usuário está mapeada. Confira a publicação de Graber em empresas não produtoras: Acho que o maior problema é poder explorar o kernel e os syscalls porque cada contêiner compartilha o mesmo kernel. Existem várias maneiras de aprimorar a segurança por meio de cgroups e outros aplicativos como selinux, apparmor e seccomp e muito mais.
Portanto, crie um usuário limitado separado para executar contêineres. Parece justo. Eu aceito isso como a resposta. Obrigado.
precisa saber é o seguinte
4
São ferramentas muito valiosas para testes, sandboxing e encapsulamento. Deseja que um servidor da Web seja bloqueado com segurança em seu próprio ambiente de trabalho, incapaz de acessar arquivos privados sensíveis? Use um recipiente. Você tem um aplicativo que requer versões antigas de bibliotecas e arquivos de configuração específicos, incompatíveis com outros aplicativos? Também um contêiner. É basicamente chroot feito da maneira certa. Ele permite que você mantenha os serviços separados o suficiente para manter cada um deles muito mais fácil, e eles podem ser movidos ou copiados para outra máquina sem precisar perturbar o sistema existente.
A desvantagem é que você precisa se lembrar do espaço para nome, pois quase tudo é local no contêiner. Você deve estar ciente de onde está e a comunicação entre os contêineres não é trivial. É uma boa ideia quando você precisa de modularidade, mas não deseja a sobrecarga das máquinas virtuais, e as coisas que você mantém nos contêineres não são muito relacionadas.
Para um usuário "comum", você pode usar contêineres para usar uma única máquina para duas pessoas, mantendo-os como se estivessem em máquinas completamente diferentes. Colegas de quarto, por exemplo.
Embora uma boa descrição humana de para que servem os contêineres, isso ainda não explique a diferença entre os privilegiados e os não privilegiados.
anatoly techtonik
1
Bem, com um kernel compartilhado, apesar de aumentar os requisitos do adversário para se libertar de algumas maneiras (ou melhor; ajuda a limitar a superfície de ataque), contêineres sem privilégios ainda não são completamente isolados de hacks diretos que ganham raiz do host, apesar disso .
Por esse motivo, é um pouco de suposição / reivindicação errada. Dito isto, o nível de aptidão técnica em muitos usuários da Internet ainda executará serviços inet, de várias maneiras das quais eles não são realmente tecnicamente capazes, então, ei. :)
São ferramentas muito valiosas para testes, sandboxing e encapsulamento. Deseja que um servidor da Web seja bloqueado com segurança em seu próprio ambiente de trabalho, incapaz de acessar arquivos privados sensíveis? Use um recipiente. Você tem um aplicativo que requer versões antigas de bibliotecas e arquivos de configuração específicos, incompatíveis com outros aplicativos? Também um contêiner. É basicamente chroot feito da maneira certa. Ele permite que você mantenha os serviços separados o suficiente para manter cada um deles muito mais fácil, e eles podem ser movidos ou copiados para outra máquina sem precisar perturbar o sistema existente.
A desvantagem é que você precisa se lembrar do espaço para nome, pois quase tudo é local no contêiner. Você deve estar ciente de onde está e a comunicação entre os contêineres não é trivial. É uma boa ideia quando você precisa de modularidade, mas não deseja a sobrecarga das máquinas virtuais, e as coisas que você mantém nos contêineres não são muito relacionadas.
Para um usuário "comum", você pode usar contêineres para usar uma única máquina para duas pessoas, mantendo-os como se estivessem em máquinas completamente diferentes. Colegas de quarto, por exemplo.
fonte
Bem, com um kernel compartilhado, apesar de aumentar os requisitos do adversário para se libertar de algumas maneiras (ou melhor; ajuda a limitar a superfície de ataque), contêineres sem privilégios ainda não são completamente isolados de hacks diretos que ganham raiz do host, apesar disso .
Por esse motivo, é um pouco de suposição / reivindicação errada. Dito isto, o nível de aptidão técnica em muitos usuários da Internet ainda executará serviços inet, de várias maneiras das quais eles não são realmente tecnicamente capazes, então, ei. :)
fonte