Se você está começando a ler esta série agora, talvez seja melhor começar do começo:
Noções básicas de segurança de contêineres: Introdução
Noções básicas de segurança de contêineres: Gasoduto
De acordo com o relatório State of Container Security de 2019 da Tripwire , apenas uma em cada três (32%) organizações opera atualmente mais de 100 contêineres em produção. Uma porcentagem menor (13%) opera mais de 500. E 6% dos adotantes realmente ansiosos estão atualmente gerenciando mais de 1.000. Existem poucas organizações operando contêineres em escala sem um sistema de orquestração para auxiliá-las.
A camada de orquestração da segurança de contêineres se concentra no ambiente responsável pela operação diária dos contêineres. Pelos dados disponíveis hoje, se você estiver usando contêineres, é quase certo que esteja aproveitando o Kubernetes como orquestrador.
É importante observar que existem outros orquestradores, mas a maioria deles também aproveita componentes e conceitos derivados do Kubernetes. Portanto, vamos nos concentrar na segurança do Kubernetes e seus componentes.
Há várias partes móveis que compõem o Kubernetes. Isso torna a proteção mais desafiadora não apenas devido ao número de componentes envolvidos, mas também à maneira como esses componentes interagem. Alguns se comunicam via API. Outros via sistema de arquivos host. Todos são pontos potenciais de entrada no ambiente de orquestração que devem ser abordados.
Ambiente básico do Kubernetes
Uma rápida visão geral dos principais componentes que requerem atenção:
Isso significa que você deve pegar uma xícara de café, pois esta vai levar um pouco mais de tempo para terminar.
1. A autenticação não é opcional
Leitores atentos perceberão que isso soa familiar. Você pode ter ouvido falar dela como Regra de Segurança Dois, também conhecida como Tranque a porta. É um tema comum que continuaremos a repetir porque muitas vezes é ignorado. Uma autenticação forte é essencial. Observamos que o número de incidentes de segurança devido a práticas de segurança precárias em relação a contêineres continua aumentando. E uma das fontes comuns é a falha no uso da autenticação, geralmente quando implantada na nuvem pública.
Exija credenciais fortes e faça rodízio com frequência. O acesso ao servidor de API (por meio de consoles não seguros) pode levar a uma situação de “fim de jogo” porque todo o ambiente de orquestração pode ser controlado por meio dele. Isso significa implantar pods, alterar configurações e parar/iniciar contêineres. Em um ambiente Kubernetes, o servidor de API é a “única API para governar todos” que você deseja manter fora das mãos de malfeitores.
Como proteger o servidor de API e o Kubelet
É importante observar que essas recomendações são baseadas no modelo de autorização atual do Kubernetes. Consulte sempre a documentação mais recente da versão que você está usando.
É importante observar que essas recomendações são baseadas no modelo de autorização atual do Kubernetes. Consulte sempre a documentação mais recente para a versão que você está usando.
2. Pods e Privilégios
Pods são uma coleção de contêineres. Eles são o menor componente do Kubernetes e, dependendo do plugin Container Network Interface (CNI), todos os pods podem se comunicar por padrão. Existem plugins CNI que podem usar “Políticas de Rede” para implementar restrições a esse comportamento padrão. É importante observar isso porque os pods podem ser agendados em diferentes nós do Kubernetes (que são análogos a um servidor físico). Os pods também costumam montar segredos, que podem ser chaves privadas, tokens de autenticação e outras informações confidenciais. Daí a razão pela qual são chamados de "segredos".
Isso significa que há diversas preocupações com pods e segurança. Na F5, sempre presumimos um pod comprometido quando iniciamos a modelagem de ameaças. Isso ocorre porque os pods são onde as cargas de trabalho dos aplicativos são implantadas. Como as cargas de trabalho de aplicativos são as mais propensas a serem expostas a acesso não confiável, elas são o ponto mais provável de comprometimento. Essa suposição leva a quatro perguntas básicas a serem feitas para planejar como mitigar ameaças potenciais.
As respostas a essas perguntas expõem riscos que podem ser explorados se um invasor obtiver acesso a um pod dentro do cluster. Mitigar as ameaças de comprometimento de pods requer uma abordagem multifacetada envolvendo opções de configuração, controle de privilégios e restrições em nível de sistema. Lembre-se de que vários pods podem ser implantados no mesmo nó (físico ou virtual) e, portanto, compartilhar o acesso ao sistema operacional – geralmente um sistema operacional Linux.
Como mitigar ameaças de Pod
O Kubernetes inclui um recurso de Política de Segurança de Pod que controla aspectos confidenciais de um pod. Ele permite que os operadores definam as condições sob as quais um pod deve operar para ser permitido no sistema e impõe uma linha de base para o contexto de segurança do pod. Nunca assuma que os padrões são seguros. Implemente linhas de base seguras e verifique as expectativas para se proteger contra ameaças de pod.
Opções específicas para uma Política de Segurança de Pod devem abordar o seguinte:
3. etc.
Etcd é o armazenamento para configuração e segredos. O comprometimento aqui pode permitir a extração de dados confidenciais ou a injeção de dados maliciosos. Nenhuma das duas é boa. Mitigar ameaças ao etcd significa controlar o acesso. Isso é melhor conseguido aplicando o mTLS . Os segredos são armazenados pelo Kubernetes no etcd como codificados em base64. Considere o uso de um recurso alfa, “provedor de criptografia” , para opções mais fortes ao armazenar segredos confidenciais ou considere usar o HashiCorp Vault.
Leia o próximo blog da série:
Noções básicas de segurança de contêineres: Carga de trabalho