0Pricing
Docker & DevOps Fundamentals · Aula

Segurança de contêineres em execução

Implemente boas práticas para proteger contêineres durante a execução, incluindo privilégios de usuário e limites de recursos.

Segurança de contêineres em execução é uma aula grátis de Docker & DevOps Fundamentals no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Docker & DevOps Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Docker & DevOps Fundamentals inclui 4 aulas no total.

Fundamentos da segurança em tempo de execução

Boas-vindas à segurança de contêineres em tempo de execução! Criar imagens seguras é essencial, mas o que acontece quando o contêiner está em execução?

Esta lição se concentra nas melhores práticas para proteger suas aplicações enquanto estão ativas, limitando possíveis danos causados por vulnerabilidades ou ataques.

Segurança de contêineres em execução — ilustração 1

Princípio do menor privilégio

Um conceito fundamental de segurança é o Princípio do Menor Privilégio. Ele consiste em conceder a uma entidade, como um contêiner ou usuário, somente as permissões absolutamente necessárias para executar sua função, e nada além disso.

A aplicação desse princípio reduz a superfície de ataque e limita o impacto caso um contêiner seja comprometido.

Evite executar como root

Por padrão, os processos dentro de um contêiner Docker são executados como o usuário root, que tem privilégios administrativos completos dentro do contêiner.

  • Risco: Se um invasor assumir o controle de um contêiner com privilégios de root, poderá explorar vulnerabilidades no daemon do Docker ou no kernel para obter acesso root ao sistema hospedeiro.
  • Melhor prática: Execute sempre os processos do contêiner como um usuário não root.

Execute como um usuário não root

Você pode especificar um usuário, pelo nome ou pelo UID, para o processo do contêiner usando a opção --user com docker run. Aqui, executamos o comando id em um contêiner Alpine como o usuário 1000.

Se o usuário 1000 não existir, o Docker ainda usará esse UID.

docker run --rm -it --user 1000 alpine id

Entendendo os recursos do Linux

Os sistemas Linux tradicionais têm um usuário root com privilégios de “tudo ou nada”. Os recursos do Linux dividem os poderosos privilégios de root em unidades menores e distintas.

Isso permite que um processo tenha somente os poderes específicos semelhantes aos de root de que precisa, como associar-se a portas baixas ou acessar a rede em modo bruto, sem ter acesso root completo.

Remova recursos desnecessários

Por padrão, os contêineres Docker são executados com um conjunto amplo de recursos. Você pode remover recursos desnecessários usando --cap-drop para restringir ainda mais as ações que um contêiner pode realizar.

Aqui, removemos o recurso NET_RAW. O comando ping, que exige NET_RAW, falhará, demonstrando a restrição.

docker run --rm -it --cap-drop=NET_RAW alpine ping -c 1 localhost || echo "Ping failed: NET_RAW capability dropped!"

Controle os recursos dos contêineres

Os contêineres compartilham o kernel e os recursos do hospedeiro. O uso descontrolado de recursos por um contêiner pode causar uma Negação de Serviço (DoS) em outros contêineres ou até mesmo no próprio hospedeiro.

  • Limites de CPU: Impedem que um contêiner monopolize os ciclos de CPU.
  • Limites de memória: Impedem que um contêiner consuma toda a RAM disponível, evitando a instabilidade do sistema.

Implemente limites de recursos

Você pode definir limites de CPU e memória diretamente com docker run. Este exemplo limita a memória a 128 MB e o uso da CPU a 0,5, metade de um núcleo de CPU.

Isso garante que o contêiner se comporte adequadamente e não prive outros processos de recursos.

docker run --rm -it --memory="128m" --cpus="0.5" alpine sh -c "echo 'Container running with limited resources.' && free -h"

Sistemas de arquivos somente leitura

Muitas aplicações não precisam gravar no sistema de arquivos raiz após a inicialização. Ao tornar o sistema de arquivos somente leitura, você obtém importantes benefícios de segurança:

  • Impede adulterações: Um invasor não pode modificar arquivos existentes nem gravar novos arquivos maliciosos.
  • Limita a persistência: Todas as alterações feitas são temporárias e se perdem quando o contêiner é reiniciado.
  • Impõe a imutabilidade: Promove um design no qual os contêineres são descartáveis e a configuração é externa.

Implante contêineres somente leitura

Use a opção --read-only ao executar um contêiner. Qualquer tentativa de gravar no sistema de arquivos do contêiner, fora dos volumes montados explicitamente, falhará.

Experimente criar um arquivo neste contêiner somente leitura:

docker run --rm -it --read-only alpine sh -c "touch /test.txt || echo 'Error: Cannot write to read-only filesystem!'"

Verificação da segurança em tempo de execução

Quais das opções a seguir são boas práticas para proteger contêineres em tempo de execução?

Recapitulação da segurança em tempo de execução

Parabéns! Você aprendeu a aprimorar a segurança dos contêineres enquanto eles estão em execução:

  • Menor privilégio: Conceda somente as permissões necessárias.
  • Usuários não root: Evite executar processos como root.
  • Recursos: Remova os recursos desnecessários do Linux.
  • Limites de recursos: Controle o uso de CPU e memória.
  • Somente leitura: Torne os sistemas de arquivos imutáveis para impedir gravações.

Essas práticas reduzem significativamente a superfície de ataque e o impacto de possíveis comprometimentos. Continue praticando!

Perguntas Frequentes

A aula “Segurança de contêineres em execução” é grátis?

Sim — o texto completo de “Segurança de contêineres em execução” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Docker & DevOps Fundamentals, atualize para CoddyKit PRO. O curso de Docker & DevOps Fundamentals inclui 4 aulas no total.

O que vou aprender em “Segurança de contêineres em execução”?

Implemente boas práticas para proteger contêineres durante a execução, incluindo privilégios de usuário e limites de recursos. Você pratica Docker & DevOps Fundamentals com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Docker & DevOps Fundamentals?

Nenhuma experiência prévia é necessária. Docker & DevOps Fundamentals no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Segurança de contêineres em execução”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Docker & DevOps Fundamentals?

Sim. Cada aula de Docker & DevOps Fundamentals inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Verificação de segurança de imagens de contêiner
  2. Segurança de contêineres em execução
  3. Gerenciamento de Secrets e RBAC
  4. Políticas de rede e rede com privilégio mínimo
← Voltar para Docker & DevOps Fundamentals