Agora que a ferramenta de segurança em tempo de execução nativa de nuvem de código aberto se tornou um projeto CNCF graduado, será o momento ideal para implementá-la em suas aplicações Kubernetes?

Falco é uma ferramenta de segurança de código aberto, compatível com nuvem, recém-saída do programa de incubação da Cloud Native Computing Foundation. Sua estabilidade e prontidão para uso em ambientes de produção, como o Azure, são confirmadas. Ele se integra a diversos componentes essenciais de uma plataforma baseada em nuvem, como Helm, Envoy, etcd, KEDA e Cloud Events.
Recentemente, dialoguei com Loris Degioanni, que é o CTO e criador da Falco, uma empresa de segurança nativa na nuvem Sysdig, sobre a ideologia que embasa o projeto e sua aplicação em ambientes Kubernetes.
Por que escolher o Falco?
Há uma necessidade crescente de ferramentas de segurança adaptadas para funcionar em ambientes Kubernetes e em contêineres. Os ambientes de microsserviços, que se ajustam à demanda de forma dinâmica, representam uma mudança significativa em relação às aplicações monolíticas do passado, assim como em relação a arquiteturas mais recentes, como as de múltiplos níveis ou orientadas a serviços. É crucial identificar e monitorar novas instâncias assim que surgirem, garantindo que, à medida que nossas malhas de serviço se expandem e se tornam mais complexas, tenhamos a visibilidade necessária para garantir sua segurança.
A segurança nativa da nuvem pode ser comparada à importância da observabilidade no devops. Em vez de focar em incidentes isolados, busca-se identificar padrões anômalos nos dados de telemetria. Enquanto as ferramentas de segurança convencionais podem proteger o código em containers, elas não são eficazes em lidar com ambientes sem servidor ou infraestrutura em constante mudança.
Patrocinado pela empresa de segurança em nuvem Sysdig, Falco é uma ferramenta de segurança em tempo de execução que foi criada para operar em um nível muito baixo nos seus contêineres e aplicativos, com acesso direto às funções de rede do kernel. Isso resulta na capacidade de detectar intrusões e comprometimentos em tempo real em toda a sua infraestrutura de aplicativos. Os dados de eventos são coletados e um mecanismo de regras é utilizado para identificar problemas de segurança. Você pode criar suas próprias regras ou colaborar com regras desenvolvidas pela comunidade.
O Falco possui regras que podem ser comparadas a políticas, de acordo com Degioanni. Ele descreve o Falco como tendo uma linguagem de políticas que pode ser utilizada para estabelecer regras, semelhante ao início de uma concha interativa em um recipiente Redis. Quando uma regra é aplicada, um evento é criado e enviado a um serviço de monitoramento central para determinar a resposta correta.
Uma ferramenta essencial para Falco é a utilização de sondas e eBPF. São scripts isolados que operam dentro do kernel Linux, permitindo a monitorização direta das chamadas de sistema em alta velocidade. Essa funcionalidade auxilia na detecção rápida de invasões, possibilitando a automatização de respostas por meio de integrações com aplicativos externos, como acionar eventos na nuvem e desencadear ações sem a necessidade de um servidor para proteger os dados.
Defendendo o Kubernetes da camada do kernel do Linux.
Falco foi desenvolvido para operar em diversos clusters de Kubernetes, como o Azure Kubernetes Service, e enviar eventos para suas ferramentas de segurança atuais. Essa estratégia possibilita integrar os dados do Falco no Azure Sentinel e colaborar com agentes de inteligência artificial para detectar questões que talvez não sejam abordadas pelas regras originais do Falco.
Paráfrase: Devido ao fato de Falco operar em um nível de serviço escalonado e de rastreamento mais baixo, é considerado mais uma ferramenta de observação do que um monitor de segurança convencional. Degioanni vê Falco como um questionamento sobre como garantir algo tão dinâmico e mutável.
Trabalhar com Kubernetes como um gerenciador de microsserviços também traz dificuldades, como explica Degioanni.
Os usuários enfrentam dificuldades ao lidar com 500 recipientes em uma máquina com 96 núcleos, pois torna-se impraticável gerenciar todos eles individualmente. Para contornar isso, a sonda Falco opera no núcleo do sistema operacional, permitindo que a instrumentação seja centralizada, independentemente da quantidade de recipientes na máquina. Dessa forma, não é necessário aguardar a ativação da instrumentação em cada recipiente, uma vez que ela já está ativa no kernel subjacente.
Uma forma simples de instalar o software no Azure Kubernetes Service é através do uso do Helm. A comunidade Falco disponibiliza um gráfico Helm que instala o Falco como um DaemonSet a partir do repositório Falco no GitHub. Esse método possibilita a automatização da implantação, podendo ser realizada por meio do Azure DevOps ou GitHub Actions. Não há necessidade de considerar instalações manuais, já que o Falco será utilizado como parte de uma infraestrutura idempotente, onde cada nova implantação substituirá a anterior.
Instalar o Falco no Cluster é simples. Basta baixar o gráfico do repositório, estabelecer um espaço de nomes Falco e configurar instâncias nos nós. Se estiver usando o Falco como um DaemonSet, cada nó deve ter uma cápsula Falco utilizando o contêiner de tempo de execução atual.
Falco executando em hosts Kubernetes.
Caso esteja montando seu próprio ambiente Kubernetes no Azure em vez de utilizar o Azure Kubernetes Service, é possível instalar o Falco no sistema host, separando-o da instância de Kubernetes que está sendo monitorada. Embora os alertas ainda sejam gerenciados dentro do Kubernetes, a instalação baseada no host oferece uma vantagem em caso de uma violação grave. A equipe Falco fornece orientações de instalação para várias versões do Linux, incluindo distribuições baseadas no Debian, Ubuntu e Red Hat. O suporte é oferecido tanto para ARM quanto para x64, permitindo a utilização dos novos servidores Azure de alta densidade baseados em ARM da Microsoft.
Este documento contém uma tabela com os valores que são uma lista de arquivos yaml, os quais representam os parâmetros configuráveis do Falco. Esses parâmetros são utilizados para regular o funcionamento do serviço, como a gestão dos drivers empregados para suportar sondas e as interfaces de programação de aplicativos utilizadas para enviar informações para serviços externos.
Outra particularidade do gráfico Falco Helm é a sua coleção de diretrizes padrão. Inicialmente, estas serão aplicadas, porém à medida que suas aplicações Kubernetes se expandem e você ganha mais experiência em segurança nativa na nuvem, é possível incluir suas próprias diretrizes personalizadas em um arquivo próprio que é referenciado a partir do gráfico de instalação.
As regras Falco são definidas em YAML e podem incluir conjuntos de regras extras. Por exemplo, é possível assegurar que a aplicação utilize apenas portas específicas ou que crie apenas processos conhecidos e específicos. Qualquer atividade fora das regras predefinidas ou personalizadas resultará em um alerta sendo acionado.
Nutrindo o sistema de vigilância.
Se você já está utilizando uma ferramenta de segurança do Azure como o Sentinel, é recomendável incorporar o Falcosidekick ao seu sistema. Trata-se de uma extensão oficial que auxilia no gerenciamento de alertas, enviando-os para o Azure Event Hub e seu SIEM. Em geral, o sidekick permite a inclusão de campos personalizados nos alertas, o que facilita a adição de detalhes do cluster Kubernetes ao enviar o alerta. Isso é particularmente útil ao monitorar vários clusters, seja para diferentes aplicativos em cada um ou para aplicativos de georreplicação em diversas regiões do Azure.
Outras opções possibilitam a integração do serviço de monitoramento do Azure com o Prometheus, o que viabiliza a utilização do Grafana para criar e exibir painéis que oferecem dados de segurança para a equipe de operações de segurança (secops).
Por que optar pelo uso do Falco em vez de outras ferramentas de segurança para o Kubernetes? A resposta é simples: o Falco tem a capacidade de detectar padrões de ataque novos que podem passar despercebidos por outras ferramentas. Identificar uma intrusão possibilita uma resposta ágil, seja bloqueando o acesso imediatamente ou iniciando procedimentos forenses mais avançados para conter esses comportamentos inesperados.
Interrompendo a execução de aplicativos nativos na nuvem.
Utilizando sondas eBPF para detectar atividades desconhecidas no nível do kernel, o Falco ajuda a identificar possíveis exploits de dia zero no seu código. Regras podem ser criadas para sinalizar atividades que não estão presentes na sua configuração padrão de aplicativos e que não são abrangidas por conjuntos de regras atuais. Dessa forma, o Falco oferece uma abordagem abrangente que abrange ações anteriormente não visíveis, o que pode sinalizar falhas no código ou atividades de um agente mal-intencionado.
Porém, não é necessário implementar o Falco isoladamente. O Azure possui suas próprias medidas de segurança que se integram ao Falco, proporcionando uma abordagem em camadas para assegurar o ambiente de Kubernetes. O Falco não é adequado para ser usado com aplicações .NET, nem para monitorar Redis ou PostgreSQL, sendo fundamental utilizar todas as ferramentas disponíveis para proteger os serviços.
É essencial alimentar um SIEM com todos os sinais do ambiente de aplicação e ser capaz de utilizar Falco e outras ferramentas de monitoramento para distinguir entre um ataque e uma falha, ajustando as respostas de acordo. Com Falco agora fazendo parte do CNCF como um projeto completo e integrado no Kubernetes, podemos começar a reunir essas peças e desenvolver aplicações nativas de nuvem seguras e confiáveis, seja em ambientes locais ou na nuvem.