De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rafael Gomes
Data de Publicação: 13 de outubro de 2015
Tenho visto ultimamente muitas pessoas preocupadas com questões de segurança do Docker. Isso é algo muito louvável e até mesmo esperado para uma tecnologia que parece se consolidar rapidamente em nosso mercado, mas como todo processo de consolidação, acho que temos alguns equívocos em como esse cuidado de segurança é aplicado.
Caso discorde da minha opinião, por favor comente. Vamos iniciar um debate franco sobre esse assunto.
O modelo de disponibilização do Docker tem como prerrogativa ser ágil, ou seja, evitar que seu tempo seja consumido por detalhes de baixa importância. Perceba que isso não quer dizer que segurança não é importante, como muitas pessoas infelizmente ainda insistem em dizer. Eu quero dizer que a segurança precisa ser algo a serviço da infraestrutura e se o modelo proporcionar métodos ágeis para viabilizar essa segurança, devemos usar sem medo.
Cada processo executado dentro de um container Docker não pode visualizar processos, disco, espaço de memória e pilha de rede fora desse ambiente isolado.É esperado que cada container execute apenas um processo, ou seja, naquele ambiente segregado não existirá qualquer compartilhamento de informações com outra instância.
Com base nessas premissas, qual real necessidade de se executar um processo de um container com um usuário diferente de root? Qual ganho teríamos ao evitar que uma falha de segurança viabilize o uso do root dentro de um container que teria apenas um processo em execução?
Na situação de um container executando com usuário "não-root", tudo importante do container deveria ser acessível pelo usuário do processo, que por sua vez a exploração de uma falha teria o mesmo impacto, pois o invasor teria acesso aos mesmos dados importantes e controle da instância.
Pelo fato do Docker compartilhar o uso do mesmo kernel para todos os containers, existem algumas suspeitas que ao utilizar o root dentro do container seria possível que alguma falha proporcione a manipulação de recursos exteriores ao container. Perceba que esse é o mesmo risco que se corre ao utilizar o usuário convencional, pois com posse de uma falha de kernel é possível a escalada de privilégio.
É importante atentar que segurança é como uma balança, que é usada para medir a melhor proporção entre praticidade e controle de riscos, pois quanto maior o rigor ao tratar os riscos, pior ficará sua praticidade e vice-versa. Levando em consideração que o maior ganho do Docker é sua praticidade, não vejo motivos para pânico na gerência de usuários root dentro do container.
Minha opinião até o presente momento é: Use usuário root dentro dos containers sem problema. Lembre-se de tomar as precauções convencionais com o host, ou seja, mantenha-o sempre atualizado, realize hardening e afins.
Texto publicado originalmente no blog do autor
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários