Segurança de Aplicação

Dockers e Containers

Containers são soluções cada vez mais populares na indústria de desenvolvimento de software. Eles fornecem uma maneira eficiente de empacotar e distribuir aplicativos, e ainda permitem a execução deles de maneira consistente em diferentes ambientes. Contudo, com a crescente utilização de Containers, a segurança em aplicações com estas tecnologias também se faz necessária. 

Neste artigo, abordarei alguns dos desafios de segurança em aplicações “containerizadas”, bem como algumas práticas recomendadas para proteger essas aplicações. Levantarei questões relacionadas à segurança durante o processo de desenvolvimento de aplicativos em Containers e, da mesma forma, estratégias de segurança para garantir que esses aplicativos sejam executados de maneira mais segura em um ambiente de produção.

Leia também: Segurança de containers: como a OWASP pode ajudar desenvolvedores!

Desafios de segurança em aplicações em Containers

Embora os Containers forneçam uma maneira conveniente de empacotar e distribuir aplicativos, eles também apresentam desafios de segurança únicos, tais como:

Vulnerabilidades do próprio container

Como compartilham recursos do sistema hospedeiro, uma vulnerabilidade em um Container pode permitir que um invasor comprometa todo o host; além disso, os Containers são frequentemente construídos a partir de imagens-base (golden images) que podem conter vulnerabilidades de segurança. Se essas imagens-base estiverem comprometidas, todas as instâncias de Containers construídos a partir delas serão vulneráveis;

Comunicação insegura entre Containers

Estes geralmente se comunicam por meio de uma rede interna, o que pode ser um ponto fraco se não for configurado corretamente. Se a comunicação entre Containers não for criptografada ou autenticada corretamente, um invasor pode interceptar ou mesmo manipular os dados entre eles;

Falta de controle de acesso

Se as permissões e os controles de acesso não forem configurados corretamente, os usuários ou processos dentro do Container podem ter acesso não autorizado a recursos fora do container, permitindo assim que um invasor comprometa o host ou outros Containers;

Falta de monitoramento

Como os Containers são frequentemente usados para executar serviços em grande escala, pode ser difícil monitorar todas as instâncias de Containers na identificação de atividades maliciosas. Além disso, muitos dos recursos do sistema operacional hospedeiro podem não estar disponíveis dentro do container, dificultando tal detecção.

Práticas recomendadas de segurança em aplicações em Docker e Containers

Para atenuar os riscos de segurança associados às aplicações em Docker e Containers, algumas práticas são recomendadas e podem ajudar que as aplicações em Containers sejam executadas de maneira mais segura:

Mantenha as golden images atualizadas

As golden images podem conter vulnerabilidades de segurança, portanto, é importante mantê-las atualizadas. Isso pode ser feito periodicamente ou automatizado para que seja executado periodicamente. É importante analisar regularmente as bibliotecas utilizadas nos Containers para identificar itens desnecessários ou obsoletos. Existem várias ferramentas de análise de dependências de software disponíveis que podem ajudar a identificá-las;

Limite as permissões do Container

É importante adotar a prática do privilégio mínimo, para que ele tenha acesso apenas aos recursos necessários para sua execução. Isso pode ser feito por meio de controles de acesso, como a configuração de usuários e grupos dentro do Container;

Isole os Containers uns dos outros

Este é um dos alicerces da segurança de Containers; para evitar a comunicação insegura entre eles, é importante isolá-los em seu próprio ambiente de execução, ou seja, apartado de outros Containers e do próprio sistema operacional hospedeiro, garantindo que tenha sua própria rede e range de IPs. 

Desta forma, cada Container poderá ter seu próprio sistema de arquivos, cópia do sistema operacional e bibliotecas, com seus respectivos usuários e permissionamentos distintos. Além disso, a comunicação entre eles deve ser criptografada e autenticada corretamente, garantindo que cada um, atue como uma instância apartada da outra;

Use uma ferramenta de orquestração de Containers segura

Ferramentas de orquestração, como Kubernetes, Docker Swarm, Apache Mesos, ECS (Amazon), podem automatizar a implantação, dimensionamento e gerenciamento das instâncias de Containers em ambientes de produção de uma maneira mais eficiente, cada uma com sua complexidade e flexibilidade. No entanto, é importante garantir que essas ferramentas sejam devidamente configuradas para evitar vulnerabilidades;

Implemente monitoramento e logging

Monitorar e registrar atividades dentro e entre os Containers é fundamental, uma vez que suas aplicações são altamente dinâmicas e escaláveis, além do que pode ajudar a detectar atividades maliciosas e depois, a implementação de alertas para eventos de segurança críticos, que poderá ajudar a identificar rapidamente as possíveis ameaças.

Tal monitoramento, envolve a coleta e análise da métricas relacionadas a sua infraestrutura, como uso de CPU, memória, armazenamento, etc e podem ser realizadas através de ferramentas como Grafana, Prometheus e Datadog, entre outras, armazenando também as informações coletadas;

Implemente políticas de segurança para desenvolvimento de aplicações em Containers

Incluir práticas seguras de desenvolvimento de software, revisões de código, testes de segurança e auditorias regulares de segurança na implementação;

Implemente testes de segurança

É importante implementar testes regulares de segurança para as bibliotecas utilizadas nos Containers. Isso pode incluir testes de vulnerabilidade, análise estática de código e revisões de código e

Ter um processo de backup dos dados dos Containers de forma regular

Isto irá garantir que eles possam ser restaurados em caso de perda de dados ou destruição do container.

Embora sua utilização integre muitos benefícios em termos de escalabilidade, eficiência e portabilidade, conforme já apresentado, existem muitos desafios associados à sua utilização, que de uma maneira bastante eficaz, podem ser reduzidos seguindo as boas práticas recomendadas sempre visando melhorias e correções em suas estruturas.

Um monitoramento constante dos Containers verificando os processos em execução com o intuito de encontrar atividades suspeitas, implementando testes de segurança regulares e aplicando patches de correções de forma periódica, podem mitigar as principais vulnerabilidades. Associado a isto, a integração de ferramentas de segurança, como já mencionadas de orquestração e ainda testes de vulnerabilidade, garantem ainda mais a integridade das aplicações.

Ainda que essa estrutura possa parecer ameaçadora à primeira vista, tais práticas podem apoiar a segurança dos Containers e aplicações que embarcam. Por este motivo, é sempre bom ter em mente que a segurança destes ambientes tem sua responsabilidade compartilhada entre as equipes de desenvolvimento, de operações, de infraestrutura e claro de segurança da informação, trabalhando de forma alinhada, tendo seus processos devidamente documentados, garantindo a correta implantação e maior confiabilidade do ambiente.

Conclusão sobre Dockers e Containers

Contudo, mesmo com tais cuidados, mesmo com a conscientização dos riscos envolvidos, por ser uma tecnologia em constante expansão e considerável crescimento, novos desafios estão sempre surgindo e por isto, uma constante revisão dos procedimentos e práticas de segurança dos Containers em todas as etapas de desenvolvimento, empacotamento e implantação, deve ser um processo contínuo e mandatório em cada uma das camadas de seu processo.

Nova call to action
About author

Articles

Formado em Tecnologia de Segurança da Informação pela FIAP. Atua como Analista de Segurança da Informação, prestando consultoria em diversos ambiente diferentes. Tem uma longa estrada em diferentes segmentos na área TI.
Related posts
Segurança de Aplicação

Secure by Design em ASPM - Entenda como as ferramentas se integram nesse processo

Em um momento onde continuamos a ver problemas de vazamentos de dados e vulnerabilidades em…
Read more
Segurança de Aplicação

Nova CVE-2023-4314 identificada em plugin do WordPress

Neste artigo, vamos analisar um estudo de caso de uma CVE encontrada em um plugin do WordPress…
Read more
Segurança de Aplicação

Mitigação de Vulnerabilidades: Elevando a Segurança no Desenvolvimento de Software

No cenário digital em constante evolução, a importância da segurança de software não pode ser…
Read more

Deixe um comentário