O que é Segurança de Contêineres?

Segurança de Contêineres é:

Segurança de contêineres é o processo de implementar ferramentas de segurança e políticas que assegurem que todos seus contêineres estão rodando conforme o esperado, incluindo proteção de infraestrutura, supply chain de software, execução e tudo que há neste processo.

Segurança de Contêineres

Segurança de Contêineres é o processo de implementação de políticas e ferramentas de segurança que fornecerão a garantia de que tudo no seu contêiner está rodando conforme o planejado – e somente como o planejado. Isso inclui proteger a infraestrutura, a cadeia de suprimentos de software, o tempo de execução e tudo o mais.

Com isso em mente, o processo de se proteger 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 seu stack de gestão do contêiner
  • As camadas fundamentais de sua aplicação
  • A integridade de seu pipeline de produção

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 em 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 players da área. O Docker, líder no mercado de contêineres, fornece uma plataforma para criar, gerenciar e proteger aplicações. Desde aplicações tradicionais até os microsserviços mais recentes, o Docker permite que os clientes os implantem em qualquer lugar. Como qualquer outra plataforma de contêiner, você precisa garantir a proteção adequada. Saiba mais sobre a segurança de contêineres 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, já que houve um aumento nos ataques aos clusters do Kubernetes. Saiba mais sobre Proteção de Kubernetes.

Amazon Web Services (AWS) e segurança de contêiner

Em seguida, temos a AWS. A AWS entende a necessidade de contêineres e sua capacidade de empoderar os desenvolvedores a entregar aplicações de maneira 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 suporta contêineres Docker, remove as dependências na gestão de suas próprias máquinas virtuais e ambiente de contêiner, e permite executar e dimensionar aplicações contêinerizadas na AWS com facilidade. No entanto, como os demais players acima, é necessário segurança para usufruir de todos os benefícios deste serviço. 

Protegendo instâncias de container do Microsoft Azure

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 computação subjacentes. O Azure Container Instances permite grande velocidade e agilidade, mas precisam ser protegidas 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 as instâncias do Microsoft Azure Container.

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. 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 escanear 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 do restante das equipes da sua organização e que sua abordagem pode ser automatizada para se ajustar aos processos do DevOps, garantindo o cumprimento dos prazos e o fornecimento rápido de aplicações, sem abrir mão da proteção. A segurança não pode mais ficar só olhando do lado de fora ou aparecendo por último na lista de prioridades com demandas que mudam seu jeito de trabalhar. A criação de controles de segurança confiáveis e processos automatizados desde o início aborda suas preocupações e aproxima as equipes. 

Tópicos de Segurança de Contêineres