O que é Segurança de Contêineres?

Segurança de contêineres é o processo de implementação de ferramentas e políticas de segurança para garantir que tudo em seu contêiner esteja funcionando como pretendido, incluindo proteção de infraestrutura, cadeia de suprimentos de software, tempo de execução e tudo mais.

Segurança de Contêineres

O processo de proteção de contêineres é contínuo. Ele deve ser integrado ao seu processo de desenvolvimento, automatizado para reduzir a intervenção humana e estendido à manutenção e operação da infraestrutura subjacente. Isso significa proteger as imagens do contêiner do pipeline de construção e as camadas de host, plataforma e aplicação do tempo de execução. A implementação da segurança como parte do ciclo de vida de entrega contínua significa que sua empresa reduzirá os riscos e as vulnerabilidades em uma superfície de ataque cada vez maior.

Ao proteger contêineres, os principais focos devem ser:

  • A segurança do host do contêiner
  • Tráfego de rede do contêiner
  • A segurança da aplicação dentro do contêiner
  • Comportamento malicioso dentro da sua aplicação
  • Proteger sua stack de gestão do contêiner
  • As camadas fundamentais de sua aplicação
  • A integridade de seu pipeline de desenvolvimento

 

O objetivo da cibersegurança é garantir que tudo o que você criar funcione continuamente como planejado e somente como planejado.

Conheça alguns dos nomes que as empresas estão usando para as necessidades de contêiner: Docker®, Kubernetes®, Amazon Web Services™ (AWS), e Microsoft®.

Protegendo o Docker

Antes de começar a proteger seus contêineres, você precisa conhecer os principais participantes do setor. O Docker, líder no mercado de contêineres, fornece uma plataforma para criar, gerenciar e proteger aplicações. O Docker permite que os clientes implantem aplicações tradicionais e os microsserviços mais recentes em qualquer lugar. Como com qualquer outra plataforma de contêiner, você precisa garantir a proteção adequada. Saiba mais sobre a segurança de contêineres do Docker.

Protegendo Kubernetes

O Kubernetes é o próximo grande nome que se deve conhecer. O Kubernetes fornece uma plataforma portátil, extensível e de código aberto para lidar com workloads e serviços em contêiner. Embora o Kubernetes ofereça recursos de segurança, você precisa de uma solução de segurança dedicada que o mantenha seguro; houve um aumento nos ataques a clusters do Kubernetes. Saiba mais sobre como proteger o Kubernetes.

Amazon Web Services e segurança de contêiner

Em seguida, temos Amazon Web Services (AWS). A AWS entende a necessidade de contêineres para capacitar os desenvolvedores a entregar aplicações de forma mais rápida e consistente. É por isso que eles oferecem o Amazon Elastic Container Service (Amazon ECS), um serviço de orquestração de contêiner escalável e de alto desempenho que oferece suporte a contêineres Docker. Ele remove as dependências do gerenciamento de suas próprias máquinas virtuais e ambiente de contêiner e permite que você execute e dimensione aplicações AWS em contêineres com facilidade. No entanto, como o restante dos principais participantes acima, você precisa de segurança para obter todos os benefícios deste serviço. Saiba mais sobre a Segurança de Contêineres na AWS.

Protegendo o Microsoft Azure Container Instances

Por último, mas não menos importante, temos o Microsoft® Azure™ Container Instances (ACI). Esta solução permite que os desenvolvedores implantem contêineres na nuvem pública do Microsoft® Azure™ sem a necessidade de executar ou gerenciar uma infraestrutura subjacente. Você pode simplesmente criar um novo contêiner usando o portal Microsoft® Azure™, onde a Microsoft provisiona e dimensiona automaticamente os recursos de computador subjacentes. O Azure Container Instances permite grande velocidade e agilidade, mas precisa ser protegido para se colher adequadamente todos os benefícios. 

Agora que você conhece os principais players, vamos falar sobre como protegê-los ou acesse os links acima para mais detalhes de cada solução. Saiba mais sobre Proteger o Microsoft Azure Container Instances.

Proteção de Host

Proteção de host começa com a seleção do OS onde ele roda. Sempre que possível, você deve usar um sistema operacional distribuído que seja otimizado para executar contêineres. Se você estiver usando distribuições padrão do Linux® ou Microsoft® Windows®, desabilite ou remova serviços desnecessários e proteja o sistema operacional em geral. Em seguida, adicione uma camada de ferramentas de segurança e monitoramento para garantir que seu host esteja sendo executado conforme o esperado. Ferramentas como controle de aplicações ou um sistema de prevenção de intrusões (IPS) são muito úteis nessa situação.

Depois que o contêiner estiver em execução na produção, ele precisará interagir com outros contêineres e recursos. Este tráfego interno deve ser monitorado e protegido, garantindo que todo o tráfego de rede de seus contêineres passe por um IPS – isso altera a maneira como você implanta o controle de segurança.

Protegendo a aplicação no contêiner

Depois que o contêiner está em execução na produção, ele está constantemente processando dados para a sua aplicação, gerando arquivos de log, cache etc. Os controles de segurança podem ajudar a garantir que estas sejam atividades comuns e não maliciosas. Os controles antimalware em tempo real executados no conteúdo do contêiner são essenciais para o sucesso.

Um IPS também desempenha um papel aqui – em um tipo de uso chamado virtual patching. Se uma vulnerabilidade for exposta remotamente, o mecanismo IPS poderá detectar tentativas de explorá-la e enviar pacotes para proteger sua aplicação. Isso economiza o tempo necessário para solucionar a causa raiz na próxima versão desse contêiner, em vez de executar uma correção de emergência.

Monitorando sua aplicação

Ao implementar sua aplicação em um contêiner, um controle de segurança de autoproteção de aplicação em tempo de execução (RASP) pode ajudar. Esses controles de segurança são executados no código da aplicação e geralmente interceptam ou conectam chamadas-chave no seu código. Além de recursos de segurança como monitoramento de Linguagem de Consulta Estruturada (SQL), verificação e correção de dependências, verificação de URL e outros controles, o RASP também pode resolver um dos maiores desafios em segurança: identificação de causa raiz.

Ao serem posicionados no código da aplicação, esses controles de segurança podem ajudar a ligar os pontos entre um problema de segurança e a linha de código que o criou. É difícil competir com esse nível de consciência, o que dá uma grande força para sua postura de segurança.

Protegendo seu stack de gestão de contêineres

Do ponto de vista da segurança, o stack de gerenciamento que ajuda a coordenar seus contêineres geralmente é ignorado. Qualquer organização que leve a sério a implantação de contêineres inevitavelmente terá duas partes críticas de infraestrutura para ajudar a gerenciar o processo: um registro de contêiner de privacidade, como Amazon ECS e Kubernetes (para ajudar a orquestrar sua implantação).

A combinação de um registro de contêiner e o Kubernetes permite definir automaticamente um conjunto de padrões de qualidade e segurança para seus contêineres tanto antes quanto durante a reimplantação em seu ambiente.

Os registros simplificam o compartilhamento de contêineres e ajudam as equipes a desenvolver o trabalho umas das outras. No entanto, para garantir que cada contêiner atenda a seus padrões de desenvolvimento e segurança, você precisa de um scanner automatizado. A varredura de cada contêiner em busca de vulnerabilidades conhecidas, malware e segredos expostos antes que ele seja disponibilizado no registro ajuda a reduzir problemas posteriores.

Além disso, você vai querer garantir que o próprio registro esteja bem protegido. Ele deve ser executado em um sistema robusto ou em um serviço de nuvem de renome. Mesmo no cenário de serviço, você precisa entender o modelo de responsabilidade compartilhada e implementar uma forte abordagem hierarquizada para acessar o registro.

No lado da orquestração, uma vez que o Kubernetes esteja em execução e implantado em seu ambiente, ele oferece um número significativo de vantagens que ajudam a garantir que suas equipes tirem o máximo de seu ambiente. O Kubernetes também oferece a capacidade de implementar vários controles operacionais e de segurança, como políticas de segurança de rede e de Pods (recursos em nível de cluster), permitindo impor várias opções para atender a seu perfil de riscos.

Criando sua aplicação em uma base segura: varredura de contêineres

Você precisa de um workflow de verificação de imagem de contêiner para garantir que os contêineres usados como blocos de desenvolvimento sejam confiáveis e seguros contra ameaças comuns. Essa classe de ferramentas vai verificar o conteúdo de um contêiner, procurando problemas antes que eles sejam usados como um bloco de construção para sua aplicação, bem como um conjunto final de verificações antes de um contêiner ser enviado para produção.

Quando implementada corretamente, a varredura se torna uma parte natural do seu processo de codificação. É um processo totalmente automatizado que pode identificar rápida e facilmente quaisquer problemas causados ao desenvolver sua aplicação e seus contêineres. 

Garantindo a integridade de seu pipeline de produção

Os invasores começaram a mudar seus ataques para estágios anteriores do seu pipeline de integração/entrega contínuas (CI/CD). Se um invasor comprometer com sucesso seu servidor de compilação, repositório de código ou estações de trabalho de desenvolvedor, eles podem residir em seu ambiente por muito mais tempo. Você precisa de um conjunto sólido de controles de segurança atualizados.

Implementar uma forte estratégia de controle de acesso em todo o pipeline, iniciando no repositório de códigos e na estratégia de ramificação, estendendo-se até o repositório de contêineres. Você precisa garantir a implementação do princípio do menor privilégio (fornecendo apenas o acesso necessário para realizar as tarefas necessárias) e auditar esse acesso regularmente.

Amarrando tudo

Proteger seus contêineres requer uma abordagem abrangente de segurança. Você deve garantir que está atendendo às necessidades de todas as equipes de sua organização. Certifique-se de que sua abordagem possa ser automatizada para se adequar a seus processos de DevOps e que você possa cumprir prazos e entregar aplicações rapidamente, protegendo cada grupo. A segurança não pode mais ser deixada de fora ou aparecer no último minuto com demandas para mudar seu workflow. Construir controles de segurança confiáveis e processos automatizados desde o início aborda questões de segurança e torna mais fácil preencher a lacuna entre as equipes.