‫O que você acha das imagens sem distração?
‫É uma boa troca entre tamanho e segurança?
‫Eu diria que se você pode fazer imagens sem
‫distração, e o que queremos dizer com isso, o
‫termo está em fluxo.
‫Eu sinto que imagens sem distração
‫são complicadas. Sinto que apenas dizer imagens de rascunho
‫pode ser uma maneira mais fácil de dizer isso. Mas, é correto dizer imagem
‫sem distração, o que significa que não há sistema de pacotes
‫base. Não há apt. Não há Yum.
‫Não há todos os comandos diferentes que você
‫assumiria que estão em um contêiner se você usar
‫uma das imagens oficiais. O fato é que imagens
‫sem distração não são muito comuns por dois motivos.
‫Primeiro, a maioria dos programas
‫precisa de todo esse material para funcionar.
‫Eles precisam de dependências do pacote apt.
‫Eles precisam de
‫suas próprias bibliotecas SSL abertas. Eles precisam de todo tipo de coisa, além do
‫programa que está lá, certo.
‫Essa é a maioria das aplicações hoje.
‫Golang, C, algumas outras linguagens podem criar binários
‫únicos que basicamente têm tudo o que
‫precisam para executar, além
‫do kernel. Tecnicamente, essas coisas
‫são capazes de remover tudo abaixo dela.
‫Todas as camadas e sua imagem podem desaparecer.
‫Ainda não os vejo muito na natureza porque
‫não trabalho com Google, Netflix e grandes equipes
‫de pessoas que são super profissionais.
‫Os dois motivos aqui são: você precisa
‫ter um idioma que o suporte e uma equipe
‫que entenda como construí-los adequadamente.
‫Então, você precisa realmente ser bom na solução de problemas e em como os
‫contêineres nos espaços para nome funcionam.
‫Como o minuto em que a imagem sem distração é executada
‫em um contêiner e você tem um problema, você não
‫pode nem usá-lo.
‫Não há concha. Você não pode entrar nisso.
‫Você não pode olhar para isso. Portanto, agora suas ferramentas
‫são limitadas e você deve começar a procurar outras maneiras
‫de conectar suas ferramentas a esses contêineres.
‫Isso existe. Existem coisas por aí
‫que farão isso por você, mas isso depende muito do seu conjunto de habilidades
‫em termos de como você lida com namespaces.
‫Como você pode pular como side-car para um contêiner em
‫execução em seu espaço para nome a partir da linha de comando
‫sem usar o Docker?
‫Esses são os tipos de problemas que surgem quando você está
‫lidando com a solução de problemas ou com o monitoramento e
‫a manutenção do sistema quando possui imagens sem distração.
‫Para todos com quem trabalho que estão começando
‫com contêineres, seu primeiro par de
‫projetos em contêineres, não mencionei esse material porque tamanho é apenas tamanho.
‫Você sempre pode adicionar mais espaço em disco a um servidor, certo.
‫Não há razão para fazer com que uma equipe inteira aprenda todos
‫os tipos de novas ferramentas e outras coisas, apenas para que você tenha menos
‫espaço em disco usado em um servidor.
‫Eu, pessoalmente, não me importo com tamanho.
‫Segurança é uma coisa teórica.
‫Em teoria, todas essas coisas removidas de
‫uma imagem de contêiner podem torná-la
‫mais segura. Vamos falar sobre isso na natureza, no entanto.
‫Quantas oportunidades alguém tem para mexer com
‫outras ferramentas no seu contêiner fora
‫do seu aplicativo? Digamos que o cURL tenha uma vulnerabilidade, mas
‫seu aplicativo não usa o cURL.
‫Por acaso está na imagem.
‫Como alguém vai ter acesso a isso, certo?
‫Eles terão que interromper seu aplicativo.
‫Portanto, seu aplicativo precisa ter uma exploração.
‫Então, em teoria, eles poderiam executar o comando cURL
‫no contêiner, certo. Então, é
‫disso que realmente trata esse assunto indecoroso: os bônus
‫teóricos de segurança por não incluir outros aplicativos.
‫A realidade é que, depois de criar
‫um binário estático, você já inclui muitas dessas bibliotecas
‫que podem ser vulneráveis, como o SSL
‫aberto, que é uma maneira comum de conectar aplicativos com
‫segurança SSL.
‫Bem, se isso tem uma vulnerabilidade e você a constrói estaticamente no
‫seu aplicativo, ele ainda está lá.
‫Não é apenas um arquivo separado no contêiner.
‫Está no seu aplicativo em um único binário.
‫Na verdade, torna mais difícil a verificação de
‫segurança, porque agora, todos os scanners que eu conheço
‫não capturam esse binário SSL aberto se
‫ele estiver embutido. Então, muitas dessas coisas são teóricas.
‫Eu não costumo empurrar as equipes em direção aos
‫recursos teóricos de segurança. Eu olho mais para o
‫que está acontecendo na natureza, certo.
‫Os daemons do Docker estão sendo expostos.
‫O Kubernetes não possui autenticação adequada,
‫portanto é exposto. Esses são os problemas
‫reais que eu vejo, você sabe, as coisas que focam
‫são as que ouvimos nas notícias nas quais
‫as pessoas estão sendo invadidas, certo. Esse tipo de coisa com
‫segurança teórica na remoção de arquivos de imagens.
‫Isso é apenas mais no campo teórico.
‫Não é uma razão para não fazê-lo.
‫Assim como esta lista, tudo nesta lista, eu faria
‫primeiro antes de começar a seguir esse caminho
‫de coisas difíceis.
‫Considero imagens sem distração relativamente difíceis.
‫A menos que você já seja um programador Go e toda
‫a sua equipe seja realmente boa em namespaces e comandos
‫do Docker e coisas assim.
‫Não me refiro apenas a comandos regulares do Docker.
‫Quero dizer coisas complicadas que ajudam a solucionar problemas de
‫contêineres que não possuem conchas, por exemplo.
‫Então, é uma ótima pergunta.
‫Aparece o tempo todo.
‫Todo mundo me pergunta sobre isso quando temos discussões sobre segurança,
‫porque é um tópico popular. Mas, nem está no meu
‫top ten.
‫Espero que ajude.