Os problemas de segurança mais comuns do Kubernetes e como você pode mitigá-los

Publicados: 2021-03-30

Kubernetes e containers prometem três coisas:

  • Desenvolvimento e lançamento de aplicativos mais rápidos.
  • Correções de bugs mais rápidas.
  • Maior velocidade do recurso.

No entanto, muitas vezes tem o custo de comprometer a segurança e isso é algo inaceitável em qualquer tecnologia de desenvolvimento web.

Para perceber o estado da segurança do Kubernetes, aqui estão dois fatores de uma pesquisa realizada pela StackRox no final de 2020:

  • 90% dos participantes da pesquisa relataram ter enfrentado um incidente de segurança relacionado a contêineres e Kubernetes nos últimos 12 meses.
  • 44% dos participantes tiveram que adiar o lançamento de seus aplicativos devido a preocupações de segurança em relação ao Kubernetes.

Quais são os motivos mais comuns por trás dessas preocupações de segurança?

Os problemas de segurança mais comuns relacionados ao Kubernetes
1. Configurações incorretas

Pesquisas revelaram que as exposições causadas por configurações incorretas são o risco mais prevalente na segurança de ambientes de contêiner e Kubernetes.

Ao usar o Kubernetes para criar aplicativos em contêiner, o gerenciamento de configuração é o maior risco para os profissionais de segurança.

Isso ocorre principalmente porque o mercado está cheio de ferramentas de verificação de vulnerabilidades, mas o gerenciamento de configuração ainda depende em grande parte da consideração humana.

Aqui estão alguns conselhos sobre como configurar alguns dos componentes comuns de um aplicativo em contêiner para garantir que a segurança não seja comprometida.

Imagens:

Evite usar qualquer software que não seja absolutamente necessário. Isso inclui gerenciadores de pacotes, ferramentas de rede e clientes como curl ou shells Unix.

Lembre-se, o uso de qualquer software aumenta o risco de segurança. Além disso, use apenas imagens de fontes confiáveis.

Segredos:

Evite colocar segredos nas imagens ou expô-los desnecessariamente.

Como prática segura, use ferramentas confiáveis ​​de gerenciamento de segredos para garantir que as implantações montem os segredos apenas se e quando forem necessários.

Espaços de nomes:

Use namespaces generosamente. Eles atuam como um limite para o Kubernetes e as políticas de rede. O uso de namespaces pode limitar os efeitos de um ataque e pode conter erros e ataques para que eles não possam se espalhar e causar mais destruição.

Privilégios de tempo de execução:

Existe apenas uma regra de privilégios: permitir que o menor número deles torne o software o mais seguro.

Políticas de rede

De acordo com as configurações padrão, os pods podem se comunicar de forma independente no Kubernetes. No entanto, é uma boa prática implementar políticas de rede para limitar a interação de pods. Isso pode impedir que qualquer ameaça se espalhe pelo contêiner e por todo o aplicativo.

Armazenamento persistente

Você precisa ter visibilidade adequada da configuração e uso do armazenamento persistente. Isso ocorre porque esse é o único vetor persistente em uma configuração de contêiner efêmera.

Plano de Controle

Se você estiver gerenciando os clusters do Kubernetes sozinho, é muito importante configurar o plano de controle. Isso ocorre porque alguns clusters podem tomar decisões globais e se um cluster estiver infectado isso pode comprometer todo o ecossistema.

A melhor abordagem para mitigar esses e vários outros problemas de segurança relacionados à configuração é usar uma combinação de esforços manuais e automatizados para garantir que a configuração seja feita de forma a garantir a segurança do Kubernetes e, consequentemente, do software do qual fazem parte do.

2. Vulnerabilidades

Várias vulnerabilidades diferentes foram encontradas e exploradas no Kubernetes e em outros contêineres nos últimos anos.

As explorações mais comuns de vulnerabilidades incluem:

  • Mineração de criptografia.
  • Instalação de malware.
  • Escalada de privilégios.
  • Acesso ao hospedeiro.

A abordagem eficaz para gerenciar a vulnerabilidade é algo que precisa continuar durante o ciclo de vida do contêiner e deve incluir o seguinte:

  • Identificar e resolver vulnerabilidades em imagens, incluindo as do sistema operacional instalado.
  • Detectando e mitigando toda e qualquer vulnerabilidade nas bibliotecas de tempo de execução das linguagens de programação que você está usando.
  • Tomar medidas para evitar que imagens com vulnerabilidades de risco cheguem ao registro de contêiner acessível à produção.
  • Tomar medidas para conter as ameaças que apresentam um risco de segurança acima de um determinado nível.
  • Usando controladores de admissão de terceiros em clusters do Kubernetes para evitar que componentes de contêiner vulneráveis ​​sejam agendados.
3. Ameaças em tempo de execução

Depois de mitigar todos os problemas de segurança do Kubernetes, a fase de tempo de execução tem seu próprio conjunto exclusivo de ameaças à segurança.

Mesmo que você tenha enfatizado a segurança e minimizado os riscos de todas as maneiras possíveis, pode haver várias ameaças de adversários em tempo de execução.

Aqui estão algumas coisas que você pode fazer para mitigar essas ameaças:

Monitoramento de atividade de tempo de execução:

Inicie o processo de monitoramento com as atividades de contêiner mais relevantes para a segurança. Isso inclui atividades de processo, comunicações de rede dentro e entre serviços em contêiner e comunicação de e para servidores e clientes externos.

Aproveite os dados declarativos

Faça uso das informações de tempo de compilação e implantação para avaliar a diferença entre a atividade observada e a esperada para saber se há alguma atividade suspeita.

Mantenha a comunicação de rede limitada

O tempo de execução é o momento em que você pode ver a diferença entre o tipo de tráfego de rede permitido e o necessário para executar o sistema. Esta é a oportunidade que pode ser usada para remover qualquer comunicação desnecessária que possa representar uma ameaça à segurança do Kubernetes.

Observe os processos de perto

Observe o aplicativo por um período de tempo para conhecer todos os processos que são executados para o bom funcionamento do aplicativo. Faça uma lista de todos os processos essenciais e verifique a aplicação aleatoriamente para ver se está sendo executado algum processo que não seja o usual.

4. Falha na auditoria de conformidade

Uma das principais coisas que garantem a segurança do Kubernetes e do contêiner é a conformidade. Se a segurança não for devidamente enfatizada no Ciclo de Vida de Desenvolvimento de Software, isso pode levar a uma falha na auditoria de conformidade.

Existem vários padrões de conformidade que podem ser usados ​​para Kubernetes e segurança de contêiner.

PCI-DSS, HIPAA e SOC 2 são padrões de conformidade específicos do setor.

Um dos principais erros cometidos a esse respeito é não fazer das auditorias de conformidade parte do SDLC desde o início ou apenas considerá-lo em tempo de execução. Para garantir que tudo no software esteja em conformidade:

  • Faça da conformidade uma parte do SDLC desde o início.
  • Use os padrões da indústria para tornar os componentes do software compatíveis.