Segurança do Kubernetes

A segurança do Kubernetes é um sistema de código aberto para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres. É mais fácil gerenciar, proteger e descobrir contêineres quando eles são agrupados em unidades lógicas, e o Kubernetes é o principal sistema de gerenciamento de contêineres do mercado atualmente. Proteger seus sistemas com o Kubernetes exige entender como o sistema funciona e quando e como vulnerabilidades de diferentes tipos podem entrar em seu sistema ao criar, implantar ou executar aplicativos usando o Kubernetes.

Em termos gerais, a segurança do Kubernetes aborda a segurança nativa na nuvem, em seus clusters de aplicativos, em contêineres e em seu código. Envolve muitos sistemas e processos interligados e sobrepostos, como seguir as melhores práticas importantes de segurança física, garantindo clusters e segurança de aplicativos, gerenciando a segurança de microsserviços, seguindo padrões inteligentes de design de contêineres e gerenciando o controle de acesso. Isso também envolve a verificação de vulnerabilidades em tempo de construção, criptografia de código, apertos de mão TLS quando necessário, proteção de portas não utilizadas e varredura regular de todo o sistema em busca de vulnerabilidades que podem surgir em um ambiente de produção.

Riscos e desafios

Os aplicativos são executados por meio de ciclos de criação, implantação e tempo de execução, e o Kubernetes oferece vantagens de segurança intrínsecas em cada estágio do ciclo de vida do aplicativo. No entanto, isso ainda pode representar muitos desafios.

Maior superfície de ataque

Seu sistema provavelmente usará ou criará inúmeros contêineres, e os contêineres estão por toda parte. Embora o uso de contêineres ofereça a capacidade de aproveitar arquiteturas de microsserviços e operar com maior velocidade e maior portabilidade, usá-los também pode criar pontos cegos de segurança que expõem seu sistema a vulnerabilidades.

Manter a visibilidade das operações e da segurança do sistema à medida que você implanta mais e mais contêineres se torna cada vez mais difícil. Além disso, há também as tarefas de investigar problemas individuais, responder a eles ou reconfigurar contêineres mal configurados.

Registros e imagens mal utilizados

Quão seguras são as imagens que você cria e os registros nos quais você as armazena? Você os escaneia regularmente? Não fazer isso pode prejudicar a segurança de seus aplicativos e sistemas em suas redes, não apenas no ambiente Kubernetes.

Efeitos de rede

Como os contêineres se comunicam com outros contêineres e outros terminais de rede, uma violação na segurança de contêineres pode se espalhar por toda a rede, dependendo do nível de acesso ao sistema que o contêiner violado tem com o resto da rede.

Enfrentar com sucesso esses desafios e outros que você possa enfrentar exigirá que você integre a segurança em seus ciclos de criação, implantação e execução. Em um nível muito alto, suas imagens devem estar livres de vulnerabilidades perigosas, as implantações devem seguir as melhores práticas de segurança e suas cargas de trabalho de contêiner devem estar protegidas contra ameaças de tempo de execução.

Melhores práticas de contêineres

Nas seções abaixo, descrevemos com mais detalhes algumas das melhores práticas do Kubernetes que você deve seguir em todos os três estágios do ciclo de vida do contêiner.

Fase de construção

Em primeiro lugar, você deve proteger as imagens do contêiner. Isso envolve primeiro a criação de imagens seguras e, em seguida, a verificação de vulnerabilidades.

As melhores práticas são usar o mínimo de imagens básicas e evitar o uso de imagens com shells ou gerenciadores de pacotes do sistema operacional — elas podem trazer vulnerabilidades desconhecidas ao seu sistema. Além disso, evite adicionar componentes desnecessários e use apenas imagens atualizadas. Você deve garantir que todas as ferramentas, aplicativos e todas as imagens estejam atualizadas.

A verificação regular é uma parte importante da segurança do Kubernetes, portanto, use um scanner que possa identificar vulnerabilidades de imagem, bem como vulnerabilidades de pacotes do sistema operacional e de tempo de execução de terceiros. Essas verificações e verificações de segurança devem ser incorporadas e automatizadas como parte de seu pipeline de integração contínua/implantação contínua (CI/CD). Por exemplo, o Validating Admission Controller no Kubernetes permite que você rejeite a criação da implantação se as imagens não forem digitalizadas antes da implantação ou se as imagens tiverem mais de 90 dias.

Lembre-se de que a melhor política de segurança é a defesa em profundidade. Portanto, uma vulnerabilidade em uma área, como em um contêiner, um cluster, na nuvem ou em seu código, pode ser resolvida antes que tenha impacto na produção e antes que alcance outras partes da sua rede.

Fase de implantação

Você deve configurar com segurança sua infraestrutura Kubernetes antes que as cargas de trabalho sejam implantadas. Você precisa saber o que está implantando e como e, a partir daí, identificar e responder a possíveis ameaças ou violações de segurança.

Saber exatamente o que você está implantando exige uma compreensão de:

  • Componentes
  • Vulnerabilidades conhecidas
  • Pods que serão implantados
  • Todos os clusters, namespaces e nós envolvidos
  • Se será executado com privilégios
  • Com quais implantações ele se comunicará

Você também precisa saber o que ele pode acessar e se a implantação já está em conformidade com — ou violando — quaisquer requisitos de segurança ou política.

A partir daí, você pode implementar as recomendações da fase de implantação. Isso inclui o uso de namespaces para isolar cargas de trabalho confidenciais para conter possíveis ataques, limitar o impacto de quaisquer erros ou ações maliciosas tomadas por usuários autorizados e controlar o tráfego entre pods e clusters por meio de segmentação de rede para evitar movimentos laterais não autorizados entre contêineres.

Como regra geral, você deve sempre avaliar os privilégios de acesso de qualquer pessoa e qualquer coisa em seu sistema, incluindo as permissões de acesso de seus contêineres. Dê aos seus contêineres apenas os privilégios e os recursos necessários para executar as funções necessárias.

Além disso, nunca implante código de uma fonte desconhecida, o que no Kubernetes significa usar apenas imagens de registros conhecidos ou com acesso autorizado. Recursos comerciais relevantes, como desenvolvedores e programadores, devem saber como rotular as implantações com o nome ou alias corretos para que as equipes relevantes possam resolver os problemas de segurança pelos quais são responsáveis, caso surjam.

Fase de execução

Você pode gerenciar os desafios de segurança do Kubernetes obtendo visibilidade do ambiente de execução e detectando e respondendo às ameaças de tempo de execução à medida que elas surgem.

Isso envolve monitorar a atividade do processo, as comunicações de rede entre diferentes contêineres e serviços em contêineres e as comunicações entre contêineres, serviços em contêineres e terceiros, clientes ou servidores externos.

Ao comparar a atividade observada com a esperada, você pode identificar e interromper atividades suspeitas. Estender a verificação de vulnerabilidades às implantações em execução ajudará você a detectar vulnerabilidades de tempo de execução que não apareciam antes. Muitos controles integrados do Kubernetes, como sistemas de arquivos raiz somente para leitura, podem evitar ataques que exijam instalação de software, e você deve monitorar o tráfego da rede para limitar comunicações desnecessárias ou inseguras.

Características integradas

Embora a segurança do Kubernetes durante as fases de construção, implantação e tempo de execução seja importante, os problemas de segurança devem ser abordados de forma holística. Isso significa que você deve começar com a segurança da infraestrutura e depois aumentar ou diminuir sua rede, primeiro tendo uma visão mais ampla e depois uma visão mais granular de cluster/contêiner/código de seus sistemas.

Sempre atualize seu Kubernetes para a versão mais recente, se possível, e proteja o etcd, que é um armazenamento de valores-chave usado pelo Kubernetes para acesso aos dados. Garanta que todas as conexões do cliente sejam atendidas somente por TLS e incorpore ativamente a segurança o mais cedo possível no ciclo de vida do contêiner. Além disso, familiarize-se com os controles nativos do Kubernetes.

Veja a seguir exemplos de recursos integrados do Kubernetes que podem turbinar sua orquestração de contêineres:

  • Agente de política aberta (OPA): A OPA unifica a aplicação de políticas por meio de uma linguagem declarativa de alto nível por meio da qual você pode especificar a política como código. Isso remove a carga da tomada de decisões políticas do seu software. Use o OPA para aplicar as políticas personalizadas que você quiser nos objetos do Kubernetes sem precisar recompilar ou reconfigurar seu servidor de API do Kubernetes.
  • Política de segurança do pod (PSP): Use o PSP para definir as condições com as quais os pods específicos devem ser executados para serem aceitos no sistema. As configurações de segurança do PSP, aplicadas usando contextos de segurança, também permitem definir controles de privilégios e acesso para pods específicos.
  • Controle de acesso baseado em funções (BRACO): O RBAC gerencia as decisões de autorização. Isso permite que os administradores configurem dinamicamente as políticas de acesso por meio de associações de funções e permissões para usuários ou conjuntos de usuários específicos.
  • Política de rede: políticas de comunicação que regem como grupos de pods podem se comunicar entre si e com outros endpoints da rede.

Pode levar algum tempo para aprender quando, onde e como usar essas e outras ferramentas integradas para aproveitar o Kubernetes da maneira certa. O mesmo se aplica a obter uma defesa aprofundada, identificar e solucionar vulnerabilidades de segurança quando elas aparecerem, proteger seus clusters, garantir a segurança do pod e reduzir sua superfície de ataquee gerenciando o tráfego de rede. No entanto, garantir a segurança do Kubernetes é fundamental se você quiser aproveitar a escalabilidade, a replicabilidade, o gerenciamento simplificado e a rápida implantação de contêineres para os quais o Kubernetes foi projetado.

Conclusão

Se você está fazendo suas incursões iniciais no Kubernetes, um especialista terceirizado em Kubernetes pode ajudá-lo a começar a trabalhar rapidamente com a orquestração de clusters com base nos tipos de aplicativos que sua organização cria e nos tipos de implantações de que você precisa.

Saiba mais

Descubra como Segmentação Zero Trust protege implantações de contêineres, incluindo as plataformas Kubernetes e RedHat OpenShift.

Assume Breach.
Minimize Impact.
Increase Resilience.

Ready to learn more about Zero Trust Segmentation?