Desenvolvimento para Kubernetes: Funciona localmente, mas não em produção – Um estudo de caso com Tetragon e eBPF

Desenvolvimento para Kubernetes: Funciona localmente, mas não em produção – Um estudo de caso com Tetragon e eBPF

Um relato detalhado sobre os desafios de integrar o Tetragon, uma ferramenta de segurança em tempo de execução, em ambientes Kubernetes. O artigo aborda problemas como perda de eventos, duplicação e erros de deduplicação, fornecendo soluções e lições aprendidas.

MundiX News·11 de maio de 2026·10 min de leitura·👁 5 views

Desenvolvimento para Kubernetes: Funciona localmente, mas não em produção – Um estudo de caso com Tetragon e eBPF

Introdução

Olá a todos, sou o Sasha, arquiteto de segurança da informação (SI) em um projeto de proteção de ambientes de contêineres. Resumidamente, realizamos a varredura de imagens, protegemos os clusters contra a execução de imagens "ruins" e protegemos os pods em tempo real.

Ao desenvolver segurança em tempo de execução para Kubernetes, é fácil cair em uma armadilha: tudo funciona perfeitamente localmente, mas começa a se comportar de forma imprevisível no cluster real. Neste artigo, analisarei três problemas reais que encontramos ao integrar o Tetragon: perda de eventos, duplicações e erros de deduplicação.

Para esse tipo de proteção, é necessário assinar as chamadas de sistema Linux. Não quisemos reinventar a roda e pegamos uma solução de código aberto (Tetragon) para rastrear e gerenciar eventos no nível do kernel Linux.

O que é Tetragon?

[Imagem: Diagrama geral do Tetragon]

Tetragon reside no kernel Linux no nível eBPF, escuta chamadas de sistema e eventos (como abertura de arquivos, inicialização de processos, conexões de rede), compara-os com as políticas definidas e registra ou bloqueia. Essencialmente, é como um guarda invisível dentro do kernel que vê tudo e decide o que fazer com isso.

Brevemente sobre a estrutura do sistema

Em nosso caso, uma arquitetura específica é usada. Existem serviços de kernel e serviços de agente. Os serviços de kernel são o cérebro do sistema, os agentes estão envolvidos na proteção de clusters/nós específicos. A especificidade reside no fato de que um serviço proxy é usado entre o lado do agente e o kernel. Isso é feito para interação de rede unidirecional, para que o cliente se preocupe menos com as configurações de acesso à rede.

Quase toda a comunicação entre os serviços é realizada usando o broker de mensagens Nats (no lado do kernel e dos agentes).

[Imagem: Diagrama arquitetônico simplificado]

A principal tarefa é criar uma política, detectar violações de políticas e mostrar ao usuário. Parece que não há nada de complicado - conectamos via gRPC ao Tetragon, ouvimos seus logs, encaminhamos do agente e salvamos no ClickHouse.

A tarefa é clara, as políticas foram feitas, as violações foram detectadas. Para preparar o recurso para lançamento, testamos em ambientes de desenvolvimento - tudo funciona.

Problemas em Produção

Infelizmente, durante os testes de carga em um cluster com vários nós, descobriu-se que a maior parte dos logs do Tetragon não chega ao ClickHouse.

Primeiro problema - um kernel que governa todos.

Encontramos o problema. O fato é que o Tetragon carrega programas eBPF no kernel Linux, escuta eventos e decide o que fazer com eles.

Durante o desenvolvimento local, usamos o minikube, que levanta um cluster Kubernetes leve em um único nó (uma única máquina virtual com uma instância do kernel Linux). Consequentemente, não foi possível verificar o trabalho em vários nós. E localmente, conectamo-nos a um pod Tetragon e ouvimos seus logs.

No ambiente de desenvolvimento, tínhamos não um K8s completo, mas seu irmão mais novo, K3s. Na compilação padrão, ele usa um banco de dados SQLite compartilhado, e não um etcd distribuído. Em um nó, o problema de perda de logs não pôde ser reproduzido - por mais que tentássemos. E quando implantamos um K8s multi-cluster real com etcd - ele apareceu imediatamente.

Existe um problema - começamos a corrigi-lo. A solução é bastante simples. Conectar a todas as instâncias do Tetragon em cada nó.

Tetragon funciona como um DaemonSet: um pod em cada nó. Fazemos list pods por seletor, obtemos a lista e conectamos a cada um separadamente.

Novo nó? DaemonSet levantou o pod, o agente o viu no próximo sync, adicionado ao pool.

Conectamos a todos os nós do cluster k8s.

Como resultado, obtivemos um código de trabalho que ajuda a detectar violações de políticas. Os testes de carga confirmaram isso.

Agora estamos realmente concluindo o artigo, obrigado pela atenção.

Spam de violações de políticas

Tudo bem, sou forçado a continuar, porque nem tudo é tão bom. Começamos a testar outros tipos de políticas. Se antes um log chegava para uma ação, agora - dois, três eventos idênticos. Inaceitável. Cavamos mais fundo.

Para entender por que as duplicatas apareceram, você precisa olhar sob o capô das políticas do Tetragon. Pegamos o comando mais simples touch file. Para nós, esta é uma ação. Para o kernel - duas chamadas de sistema: primeiro openat (criar arquivo), depois utimensat (definir o tempo). Na saída, obtemos dois logs. E dois logs não são o limite, pode haver muito.

Mostrar duplicatas como uma potencial ameaça à segurança é uma má abordagem. Você pode criar políticas que, em questão de minutos, em um cluster ativo, gerarão milhões de duplicatas por minuto.

[Imagem: Aparência de eventos duplicados]

Entendemos o problema - é hora de consertar. Fizemos a deduplicação por três sinais:

PID, tempo de recebimento e campos-chave dos logs do Tetragon.

[Imagem: Deduplicação]

Novamente testes de carga, políticas diferentes, nós diferentes - tudo ótimo, obrigado a todos.

Deduplicação quebrada

Novamente, o testador veio e começou a dar carga. Ele mudou a abordagem. Antes, ele fazia spam de violações de diferentes PIDs. Agora ele decidiu fazer tudo dentro de um script python. E que azar - a deduplicação quebrou. Ele faz cem violações diferentes para políticas diferentes - nós as colamos em um. Problema. Novamente, vamos consertar, desta vez removemos o PID das chaves de deduplicação.

Tudo bem, mas agora dois processos diferentes no mesmo carimbo de data/hora fazem a mesma violação - e nós os colamos em um único evento. Em um cluster carregado, isso é normal.

Como resultado, depois de gastar muita energia, inventando muitos cenários de teste diferentes, alcançamos nosso objetivo. As políticas funcionam, o tempo de execução nos pods é rastreado, os infratores estão tristes, o usuário vê as violações em tempo real.

Conclusão

A principal dificuldade de desenvolvimento para Kubernetes não está na API nem no YAML, mas no fato de que o sistema é originalmente distribuído e isso deve ser sempre lembrado.

eBPF fornece eventos de baixo nível - na verdade, chamadas de sistema (por exemplo, open, execve, connect).

Mas as políticas de segurança são descritas em um nível mais alto:

"o processo dentro do contêiner não deve criar arquivos em /etc" ou "não deve executar o shell".

O problema é que uma dessas "ações" do usuário quase sempre se decompõe em várias chamadas de sistema. Por exemplo, um simples touch file se transforma em open e utimensat. Como resultado, há uma lacuna entre o nível da política e o nível do evento, que precisa ser colada de alguma forma.

Na verdade, ainda existem pontos interessantes relacionados à integração de políticas (que compartilharei em artigos futuros). Planejamos aumentar o rps em cerca de 8 vezes. Também resolvemos vários problemas de largura de banda devido à arquitetura incomum. Há uma compreensão do que e como fazer. Algum dia vou descrever essa história também.

Trabalhamos com segurança de contêineres há vários anos, na maioria das vezes olhamos para k8s. E assim que começa a parecer que chegamos ao fundo do poço, no bom sentido, alguém sempre bate de baixo. Temos que testar melhor, encontrar mais casos de canto, organizar brainstorms conjuntos. Mas nós gostamos disso!

Qualquer sistema que pareça simples em um ambiente único se transforma em um sistema distribuído no Kubernetes. O que significa que seu comportamento precisa ser verificado não no nível "funciona/não funciona", mas no nível "como ele se comporta com escalabilidade e concorrência".

🛡️⚡

Pare de pesquisar. Comece a hackear.

O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.

Testar grátis por 7 dias →

Sem cartão para começar · Planos a partir de R$49/mês

📤 Compartilhar & Baixar

🧰 Ferramentas recomendadas

Divulgação: alguns links são patrocinados. Podemos receber comissão se você comprar — sem custo extra para você. Só indicamos o que faz sentido para a comunidade.

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Com centenas de ferramentas pré-instaladas, a distribuição Kali Linux facilita o trabalho de os profissionais de segurança começarem a fazer testes de segurança rapidamente. No entanto, com mais de 600 ferramentas em seu arsenal, o Kali Linux também pode ser desafiador. A nova edição deste prático livro abrange as atualizações nas ferramentas e inclui uma melhor abordagem da análise forense e da engenharia reversa. Ric Messier, autor, não fica apenas no teste de segurança, mas também faz uma abordagem sobre a execução de análise forense, incluindo a análise em disco e na memória, assim como alguma análise básica de malware. • Explore as diversas ferramentas disponíveis no Kali Linux • Entenda o valor do teste de segurança e examine os tipos de teste disponíveis • Aprenda os aspectos básicos do pentest em todo o ciclo de vida do ataque • Instale o Kali Linux em vários sistemas, tanto físicos quanto virtuais • Descubra como usar diferentes ferramentas destinadas à segurança • Estruture um teste de segurança baseado nas ferramentas do Kali Linux • Estenda as ferramentas do Kali para criar técnicas de ataque avançadas • Use o Kali Linux para ajudar a criar relatórios quando o teste terminar “A abordagem concisa, clara e baseada na experiência adotada por Ric Messier para a introdução do Kali Linux e dos testes de cibersegurança é incomparável. Este livro é uma leitura excelente e acessível para iniciantes e um recurso valioso para qualquer pessoa.” —Alexander Arlt, Consultor sênior de segurança, Google

Ver na Amazon
Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Compatível com portas USB-C e USB-A, ideal para ampliar a conectividade de dispositivos como MacBook Pro e outros com portas USB-C. Inclui um adaptador USB-A extra, proporcionando uma conexão Ethernet estável e veloz de até 1 Gbps, perfeita para filmes, jogos online e videoconferências. Oferece três portas USB 3.0 com velocidades de transferência de até 5 Gbps, permitindo conectar mouse, teclado, discos rígidos e outros periféricos. Fabricado em alumínio durável, garantindo longa vida útil e resistência ao uso diário. Design compacto e leve, ideal para viagens de negócios e uso diário, facilitando o transporte e armazenamento. Funciona com Windows 10/8.1/8, Mac OS e Chrome OS, oferecendo versatilidade incomparável para diversas necessidades de conectividade. Assegura uma conectividade estável e rápida, perfeita para tarefas exigentes como transferência de dados, streaming e mais.

Ver na Amazon
Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs is a crash course on web API security testing that will prepare you to penetration-test APIs, reap high rewards on bug bounty programs, and make your own APIs more secure. You'll learn how REST and GraphQL APIs work in the wild and set up a streamlined API testing lab with Burp Suite and Postman. Then you'll master tools useful for reconnaissance, endpoint analysis, and fuzzing, such as Kiterunner and OWASP Amass. Next, you'll learn to perform common attacks, like those targeting an API's authentication mechanisms and the injection vulnerabilities commonly found in web applications. You'll also learn techniques for bypassing protections against these attacks. In the book's nine guided labs, which target intentionally vulnerable APIs, you'll practice: Enumerating APIs users and endpoints using fuzzing techniques Using Postman to discover an excessive data exposure vulnerability Performing a JSON Web Token attack against an API authentication process Combining multiple API attack techniques to perform a NoSQL injection Attacking a GraphQL API to uncover a broken object level authorization vulnerability

Ver oferta
Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Up-to-date strategies for thwarting the latest, most insidious network attacks This fully updated, industry-standard security resource shows, step by step, how to fortify computer networks by learning and applying effective ethical hacking techniques. Based on curricula developed by the authors at major security conferences and colleges, the book features actionable planning and analysis methods as well as practical steps for identifying and combating both targeted and opportunistic attacks. Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition clearly explains the enemy's devious weapons, skills, and tactics and offers field-tested remedies, case studies, and testing labs. You will get complete coverage of Internet of Things, mobile, and Cloud security along with penetration testing, malware analysis, and reverse engineering techniques. State-of-the-art malware, ransomware, and system exploits are thoroughly explained. Fully revised content includes 7 new chapters covering the latest threats Includes proof-of-concept code stored on the GitHub repository Authors train attendees at major security conferences, including RSA, Black Hat, Defcon, and B-Sides

Ver na Amazon
Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Proteção de privacidade aprimorada: protege o link de transmissão de dados para evitar roubo de informações, fornecendo proteção de segurança robusta que protege a privacidade do usuário durante transferências de arquivos e garante uma conexão segura para interações de dispositivos sem preocupações em vários ambientes Uso a longo prazo: a camada protetora resistente ao desgaste, combinada com um corpo de metal resistente, oferece gerenciamento de calor confiável e qualidade duradoura durante o uso diário Entrega eficiente de energia: a tecnologia de chip inteligente garante a identificação automática dos requisitos de energia, fornecendo carregamento eficiente alinhando-se com vários protocolos de carregamento rápido para maior conveniência Proteção contra sobrecarga: evitando riscos de sobrecarga, este bloqueador de dados USB protege a vida útil da bateria e garante um desempenho estável, mantendo um fluxo estável de energia para melhorar a longevidade do dispositivo de forma eficaz Prático de transportar: com atenção à portabilidade, este bloqueador de dados USB oferece um design compacto que é leve e fácil de transportar, melhorando a conveniência do usuário e operação eficiente

Ver na Amazon

📩 Newsletter MundiX

Receba novidades de cibersegurança + um checklist de pentest grátis. Sem spam.

Ao assinar você concorda em receber e-mails. Cancele quando quiser.