O que é Segurança de Contêneires Docker?

O Docker® possui diversos componentes, e protegê-lo é mais complexo do que proteger tecnologias de implantação mais antigas Protegê-lo requer uma abordagem holística – desde firewalls de rede e aplicações, defesa de tempo de execução de contêineres até proteção de host.

Segurança de Contêiner Docker

Proteger um contêiner do Docker não é diferente de proteger outros contêineres. requer uma abordagem abrangente, protegendo todos os lugares, desde o host até a rede e tudo mais. Por causa de seus diversos componentes, garantir a segurança dos contêineres é difícil para muitas organizações e requer mais do que um nível rudimentar de vigilância. 

Coisas a se considerar

Aqui estão algumas coisas a se considerar ao proteger seus contêineres Docker:

  • Utilize as cotas de recurso
  • Os contêineres do Docker não devem ser executados como root
  • Garanta a segurança de seus registros de contêiner Docker
  • Use fontes confiáveis
  • Vá à fonte do código
  • Crie APIs e redes tendo segurança em mente

 

Utilizar as cotas de recurso

A utilização de cotas de recursos permite limitar o consumo de memória e CPU de um contêiner. A configuração de cotas de recursos em cada contêiner não apenas ajuda a aumentar a eficiência do ambiente, mas também pode impedir um desequilíbrio de recursos em todos os contêineres em seu ambiente.

Isso permitirá que seus contêineres rodem na velocidade que você espera e, o mais importante, aprimore a segurança. Se um contêiner fosse infectado com conteúdo mal-intencionado, ele não seria capaz de liberar uma quantidade enorme de recursos, pois a cota o impediria – minimizando o impacto dos ataques. Essa é uma tática de segurança simples para aproveitar e pode ser feita usando sinalizadores de linha de comando.

Não se deve rodar os contêineres Docker como root

Ao criar uma aplicação, é recomendável seguir o princípio do menor privilégio. Isso significa limitar o acesso da aplicação apenas aos recursos necessários para funcionar. Essa é uma das principais maneiras de proteger seus contêineres contra acesso inesperado.

Quando se trata da segurança de seus contêineres do Docker, isso é muito crucial e por que as configurações padrão do Docker não estão definidas para executar contêineres como root. Por exemplo, se sua aplicação em contêiner estiver vulnerável a um exploit e você estiver executando com o usuário root, ele expande a superfície de ataque e cria um caminho simples para os invasores obterem escalabilidade privilegiada.

Proteger um contêiner do Docker não é diferente da segurança de outros contêineres: requer uma abordagem abrangente, protegendo todos os lugares, desde o host até a rede e tudo mais. Por causa de seus diversos componentes, garantir a segurança dos contêineres é difícil para muitas organizações e requer mais do que um nível rudimentar de vigilância. 

Coisas a se considerar

Aqui estão algumas coisas a se considerar ao proteger seus contêineres Docker:

  • Utilize cotas de recursos
  • Os contêineres do Docker não devem ser executados como root
  • Garanta a segurança de seus registros de contêiner Docker
  • Use fontes confiáveis
  • Vá à fonte do código
  • Crie APIs e redes tendo segurança em mente

 

Utilize cotas de recursos

A utilização de cotas de recursos permite limitar o consumo de memória e CPU de um contêiner. A configuração de cotas de recursos em cada contêiner não apenas ajuda a aumentar a eficiência do ambiente, mas também pode impedir um desequilíbrio de recursos em todos os contêineres em seu ambiente.

Isso permitirá que seus contêineres rodem na velocidade que você espera e, o mais importante, aprimore a segurança. Se um contêiner fosse infectado com conteúdo mal-intencionado, ele não seria capaz de liberar uma quantidade enorme de recursos, pois a cota o impediria – minimizando o impacto dos ataques. Essa é uma tática de segurança simples para aproveitar e pode ser feita usando sinalizadores de linha de comando.

Não se deve rodar os contêineres Docker como root

Ao criar uma aplicação, é recomendável seguir o princípio do menor privilégio. Isso significa limitar o acesso da aplicação apenas aos recursos necessários para funcionar. Essa é uma das principais maneiras de proteger seus contêineres contra acesso inesperado.

Quando se trata da segurança de seus contêineres do Docker, isso é muito crucial e por que as configurações padrão do Docker não estão definidas para executar contêineres como root. Por exemplo, se sua aplicação em contêiner estiver vulnerável a um exploit e você estiver executando com o usuário root, ele expande a superfície de ataque e cria um caminho simples para os invasores obterem escalabilidade privilegiada.

Garanta a segurança de seus registros de contêiner do Docker

Os registros de contêineres, em particular aqueles em contêineres Docker, são o que torna os contêineres uma plataforma tão forte. Com os registros, você pode criar um repositório central de imagens que podem ser baixadas com facilidade e rapidez. No entanto, eles trazem muitos riscos à segurança se você não utilizar um registro confiável o qual você tenha analisado com cuidado, como o Docker Trusted Registry. Com o registro do Docker, você o instala atrás do firewall já implementado em sua infraestrutura de TI para aliviar os riscos que a Internet representa, mas mesmo assim, você ainda deve negar aos usuários o upload ou o download do registro.

Embora possa ser muito tentador evitar todo esse trabalho e oferecer acesso aberto, esse pequeno inconveniente pode impedir uma grande violação no registro. Uma tática útil para resolver essa tentação é implementar o controle de acesso baseado em função, oferecendo a capacidade de controlar exatamente quem pode acessar o quê, em termos de registros.

Use fontes confiáveis

Agora que você tem o registro de contêiner protegido, não deseja infectá-lo com imagens de contêiner obtidas de uma fonte não confiável. Pode parecer conveniente simplesmente baixar imagens de contêineres prontamente disponíveis ao público com um clique; no entanto, é extremamente importante garantir que a fonte do download seja confiável ou verificada.

No interesse da cautela e segurança, é realmente melhor evitar registros de contêineres públicos e seguir os que o Docker oferece, como o Docker Hub. Para dar um passo extra na proteção dos contêineres do Docker, você deve utilizar as ferramentas de varredura de imagem para dar luz às vulnerabilidades nas imagens do Docker e protegê-las. 

Vá à fonte do código

Conforme discutido acima, é importante obter imagens de contêineres confiáveis para os contêineres do Docker. No entanto, também é uma boa prática investigar o código na imagem para garantir que ela não contenha código infectado, mesmo se vier de um registro confiável. As imagens do Docker têm uma combinação de código originais e pacotes de fontes externas, que podem não ser derivados de fontes confiáveis.

Nesse cenário, é melhor usar ferramentas de análise de código-fonte. Depois de ter suas imagens, você pode verificar os pacotes para determinar de onde veio o código, baixando as fontes de todos os pacotes nas imagens do Docker. Isso permitirá que você revele se alguma das imagens tem vulnerabilidades de segurança conhecidas, mantendo você seguro desde a primeira build.

Criar APIs e redes pensando em segurança

Para que os contêineres do Docker se comuniquem, eles utilizam interfaces programáveis de aplicações (APIs) e redes. Essa comunicação é essencial para que os contêineres funcionem corretamente, mas requer segurança e monitoramento adequados. Mesmo que as APIs e a rede não façam parte do contêiner do Docker, mas dos recursos que você usa junto com o Docker, eles ainda representam um risco para a segurança do contêiner. Com isso em mente, para ter a capacidade de interromper rapidamente uma invasão, é necessário projetar suas APIs e rede para facilitar o monitoramento e ter em mente a segurança. 

Resumindo

Proteger os contêineres do Docker não é moleza, mas a recompensa vale a pena. É preciso uma abordagem holística e fortalecer o ambiente do contêiner em todos os níveis. E embora as práticas recomendadas acima pareçam excessivas, elas economizarão muito tempo no futuro e o aliviarão dos principais riscos de segurança. 

Conforme discutido acima, é importante obter imagens de contêineres confiáveis para os contêineres do Docker. No entanto, também é uma boa prática investigar o código na imagem para garantir que ela não contenha código infectado, mesmo se vier de um registro confiável. As imagens do Docker têm uma combinação de códigos originais e pacotes de fontes externas, que podem não ser derivados de fontes confiáveis.

Nesse cenário, é melhor usar ferramentas de análise de código-fonte. Depois de ter suas imagens, você pode verificar os pacotes para determinar de onde veio o código, baixando as fontes de todos os pacotes nas imagens do Docker. Isso permitirá que você revele se alguma das imagens tem vulnerabilidades de segurança conhecidas, mantendo você seguro desde a primeira build.

Criar APIs e redes pensando em segurança

Para que os contêineres do Docker se comuniquem, eles utilizam interfaces programáveis de aplicações (APIs) e redes. Essa comunicação é essencial para que os contêineres funcionem corretamente, mas requer segurança e monitoramento adequados. Mesmo que as APIs e a rede não sejam parte do contêiner Docker, e sim recursos que você usa junto com o Docker, elas ainda representam um risco para a segurança do contêiner. Com isso em mente, para ter a capacidade de interromper rapidamente uma invasão, é necessário projetar suas APIs e rede para facilitar o monitoramento e ter em mente a segurança.