In this article
Segurança do Docker: desafios e práticas recomendadas
Segurança do Docker explicada
O que é segurança do Docker?
Segurança do Docker é a prática de proteger contêineres, aplicações, sistemas host e tudo mais relacionado ao Docker. Embora a conteinerização possa aumentar a segurança das aplicações, também há o risco de configurações incorretas que podem introduzir vulnerabilidades. Seguindo as práticas recomendadas de segurança do Docker e usando ferramentas automatizadas, as equipes de desenvolvimento podem reduzir os riscos associados aos contêineres Docker.
Por que a segurança do Docker é importante?
A segurança do Docker é essencial porque hoje a maioria das organizações usa contêineres para criar e implantar aplicações. Com tantos contêineres em produção, uma vulnerabilidade em qualquer um deles pode afetar a postura geral de segurança das aplicações e da infraestrutura de uma organização. Por isso, é importante verificar vulnerabilidades nas imagens (tanto nas imagens base iniciais quanto nos pacotes e softwares adicionados a elas), identificar possíveis configurações incorretas, implementar uma segurança eficaz em tempo de execução e seguir outras práticas recomendadas de segurança do Docker.
Segurança de contêineres para DevSecOps
Encontre e corrija vulnerabilidades em contêineres gratuitamente com a Snyk.
Desafios da segurança do Docker
A segurança do Docker envolve cinco áreas principais de atenção:
Capacidades do kernel
O kernel é o coração de qualquer sistema host — ele é responsável por gerenciar as interações entre hardware e software. Como o kernel tem tanto controle, o Docker busca limitar os recursos concedidos a cada contêiner ao mínimo necessário. Ainda assim, os recursos e as montagens de volume concedidos a um contêiner podem não garantir isolamento completo, aumentando consideravelmente a superfície de ataque.
Namespaces
Outro aspecto da segurança do Docker e do kernel é o uso de namespaces do kernel para isolar processos executados em contêineres Docker de outros contêineres e do host. Isso é essencial para evitar que um contêiner escape do isolamento e minimizar os danos que o comprometimento de um contêiner pode causar ao restante da infraestrutura.
Superfície de ataque do daemon do Docker
O daemon do Docker é um processo em segundo plano que gerencia todos os contêineres executados em um único host. Como ele precisa de privilégios de root (a menos que você opte pelo modo sem root), é importante restringir o controle do próprio daemon do Docker apenas a usuários confiáveis. Isso impede que agentes mal-intencionados iniciem contêineres arbitrários com privilégios elevados no sistema host.
Brechas na configuração de contêineres
As configurações de contêineres do Docker (como os Dockerfiles) estão entre as fontes mais comuns de vulnerabilidades de segurança, mas também representam uma das áreas de risco mais fáceis de melhorar. Com ferramentas de verificação automatizada, as equipes de desenvolvimento podem encontrar e corrigir problemas de segurança ou configurações incorretas do Docker antes que cheguem à produção.
Recursos de proteção do kernel
Além de configurar os recursos e namespaces do kernel, há outros recursos de segurança do kernel que podem ser usados para reforçar a proteção do host e melhorar a segurança do Docker. Por exemplo, é possível executar um kernel com grsecurity e PaX para adicionar uma camada extra de segurança. As verificações adicionais oferecidas por essas soluções podem proteger contra muitos exploits sem exigir mudanças na configuração do Docker.
Ferramentas para reforçar a segurança do Docker
Veja quatro ferramentas que você pode usar hoje para reforçar a segurança das implantações do Docker.
1. Snyk
Snyk é uma ferramenta de verificação que identifica automaticamente possíveis vulnerabilidades não apenas nas imagens de contêiner, mas também no código da aplicação e nas dependências dentro dos contêineres, além do código de infraestrutura (IaC) usado para implantá-los. Assim, as equipes de desenvolvimento podem implementar a segurança do Docker de ponta a ponta com uma única ferramenta.
2. AppArmor
AppArmor é um sistema de segurança de aplicações para Linux que protege o sistema operacional e as aplicações contra ameaças. Ao restringir processos vulneráveis, o AppArmor pode limitar os possíveis danos causados por um exploit.
3. SELinux
SELinux, ou Linux com segurança aprimorada, é uma arquitetura de segurança para o sistema operacional Linux que dá aos administradores mais controle sobre as permissões de acesso. Com um conjunto de políticas de segurança, o SELinux pode impedir o acesso não autorizado a aplicações, processos e arquivos em um sistema host.
4. grsecurity
grsecurity é um amplo conjunto de patches para o kernel do Linux que reforça a segurança contra ameaças com controle de acesso inteligente, defesas contra corrupção de memória e outras técnicas de proteção do sistema. Diferentemente de outras soluções para reforçar a segurança do kernel, o grsecurity é especializado em vulnerabilidades de dia zero.
Práticas recomendadas de segurança do Docker
As práticas recomendadas de segurança do Docker se dividem em quatro categorias principais:
Segurança do Dockerfile
Como os Dockerfiles usam uma imagem base, muitas vezes de repositórios públicos, escolher imagens base seguras desde o início é parte de antecipar a segurança do Docker no ciclo de desenvolvimento. Além de selecionar uma imagem base segura, é importante verificar continuamente todas as outras dependências de imagem em busca de vulnerabilidades. Confira nossas 3 etapas para a segurança de contêineres, criadas com o Docker.
Segurança do Docker em tempo de execução
Em tempo de execução, as principais considerações de segurança são garantir o isolamento adequado dos contêineres e reforçar a proteção do kernel do host contra possíveis ameaças. Isso evita que um contêiner escape do isolamento e que uma escalada de privilégios permita que agentes assumam o controle do host.
Segurança da cadeia de suprimentos
Como mencionado, muitas imagens vêm de fontes públicas, como o Docker Hub ou outros registros de contêineres. Essas imagens devem ser avaliadas quanto à segurança e à confiabilidade antes de serem usadas. Assinar e verificar imagens também é uma ótima forma de evitar ataques do tipo man-in-the-middle ao enviar e baixar imagens de registros.
Segurança da orquestração de contêineres
A maioria das aplicações em contêineres é executada em uma plataforma de orquestração, como o Kubernetes, que gerencia a implantação de cada contêiner. Também é importante verificar se há possíveis vulnerabilidades nos arquivos de configuração relacionados à orquestração de contêineres. Uma das principais APIs de configuração para Pods e contêineres é SecurityContext, que abordamos em detalhes neste guia rápido: 10 configurações de contexto de segurança do Kubernetes que você precisa conhecer.
Para ver dicas mais específicas, confira nosso guia rápido de segurança do Docker: 10 práticas recomendadas de segurança do Docker
Segurança de contêineres para DevSecOps
Encontre e corrija vulnerabilidades em contêineres gratuitamente com a Snyk.
Snyk para segurança do Docker
A plataforma abrangente de verificação de vulnerabilidades da Snyk protege todos os componentes de cargas de trabalho conteinerizadas com Docker, do código-fonte da aplicação e suas dependências aos contêineres e às configurações de IaC. Na verdade, o comando `docker scan` na CLI do Docker é desenvolvido pela Snyk, graças à expansão da parceria e das integrações entre os dois ecossistemas.
À medida que o setor de software adota cada vez mais aplicações em contêineres, a Snyk e o Docker trabalham juntos para tornar mais rápido e fácil criar e implantar contêineres seguros. Para começar a proteger suas imagens de contêiner, acesse: https://snyk.co/SignUp
Perguntas frequentes sobre segurança do Docker
O Docker representa um risco de segurança?
O Docker em si não representa um risco de segurança, mas as organizações devem tomar precauções para garantir que seus contêineres, hosts e tudo o que estiver relacionado ao Docker estejam configurados com segurança. Isso inclui proteger os Dockerfiles usados para criar imagens e garantir a segurança de tudo durante a execução, como portas de rede, privilégios de usuário, acesso a sistemas de arquivos montados e muito mais.
Como proteger o Docker?
Proteger o Docker exige uma abordagem abrangente que considere não apenas o contêiner, mas também seu conteúdo (código-fonte e dependências), as configurações usadas para executá-lo e muito mais. Ao implementar medidas de segurança robustas em cada uma dessas áreas de risco, as equipes de desenvolvimento podem usar o Docker com segurança para implantar aplicações essenciais para os negócios.