Skip to main content

Como enviar dados de vulnerabilidades do Snyk para a plataforma de observabilidade New Relic

Escrito por

Harry Kimpel

feature snyk new relic dash

21 de outubro de 2022

0 minutos de leitura

Dados de segurança e observabilidade caminham lado a lado quando o assunto é a integridade das aplicações. Se você reunir essas duas fontes de dados em um único painel, sua vida fica muito mais fácil. Aproveitando as diferentes opções oferecidas pela plataforma Snyk, você pode enviar todas as vulnerabilidades de segurança de aplicações encontradas pelo Snyk diretamente para sua plataforma de observabilidade New Relic. Vamos ver como!

Pré-requisitos

Confira os links necessários para começar:

Análise de vulnerabilidades com o Snyk

Os recursos do Snyk incluem testes estáticos de segurança de aplicações (SAST) em código proprietário, análise de composição de software (SCA) de dependências de código aberto, análise de contêineres e análise da infraestrutura em nuvem.

O ideal é poder usar os resultados da análise onde e quando forem mais apropriados para cada caso. As integrações com CLI e IDE, por exemplo, podem exibir os resultados diretamente no terminal ou na IDE (com linhas onduladas vermelhas no editor de código). Você também pode visualizar os dados no portal ou na interface do usuário, a partir de análises de repositórios ou de análises executadas no seu ambiente de CI/CD favorito.

Outra vantagem é poder aproveitar soluções nativas para diversas ferramentas de CI/CD. Por exemplo, você pode enviar os resultados da análise para o GitHub ou o GitLab Security Center, exibi-los nos relatórios do Azure DevOps ou usar outras formas de integração.

Relatório do Snyk Code no Azure DevOps mostrando 27 problemas de gravidade alta, 20 média e 157 baixa, incluindo uma vulnerabilidade de cross-site scripting

A importância da observabilidade

O New Relic é uma excelente ferramenta de observabilidade que permite integrar e correlacionar diferentes tipos de dados de monitoramento, como métricas, eventos, logs e traces (MELT), em uma única plataforma, com recursos nativos para uma ampla variedade de ambientes.

Com o New Relic, os clientes sabem exatamente o que está acontecendo com suas aplicações usando APM ou monitorando os clusters Kubernetes para identificar quais Pods estão em execução, incluindo o estado de integridade de todos os contêineres. Nesse cenário, também é importante entender se alguma dessas implantações apresenta problemas de segurança ou contém possíveis vulnerabilidades.

Este artigo aborda justamente esse caso de uso.

Integração do Snyk com o New Relic

Antes de tudo, avalie seu caso de uso e o ambiente de destino para decidir qual tipo de integração atende melhor às suas necessidades.

Estas são as opções:

  1. New Relic Security API usando webhooks do Snyk

  2. New Relic Events API usando webhooks do Snyk

  3. New Relic Metrics API usando o Snyk exporter

Por exemplo, se toda a sua arquitetura e seu ambiente estiverem em Kubernetes e você usar métricas do Prometheus, a Metrics API pode ser uma boa opção. Mas, se o Kubernetes abranger apenas parte do seu ambiente tecnológico e você também quiser incluir outros ambientes, talvez os webhooks sejam a melhor escolha.

Observação: as integrações 1 e 2 são baseadas em Azure Functions escritas em C#. Elas servem apenas como exemplos de início rápido para mostrar o processo e o formato do payload. Você também pode adaptá-las a outras linguagens de programação e ambientes de execução de sua preferência, como soluções serverless (por exemplo, AWS Lambda) ou qualquer outro ambiente adequado.

Opção 1: New Relic Security API usando webhooks do Snyk

Esta é a abordagem mais recente para enviar qualquer tipo de informação relacionada à segurança para a plataforma New Relic. A vantagem é que o New Relic “entende” o tipo de dado recebido e pode oferecer uma interface personalizada para essas informações, além de um método padronizado para correlacioná-las com outros tipos de dados que a plataforma consegue consumir.

Veja alguns exemplos dessas correlações:

  • Uma aplicação monitorada com APM, o repositório onde ela está hospedada e os problemas correlacionados que o Snyk identificou do ponto de vista da segurança da aplicação

  • Um contêiner em execução em um cluster Kubernetes, com informações do New Relic sobre todo o comportamento em tempo de execução e dados detalhados do Snyk sobre os aspectos de segurança do contêiner

Criar um app do Azure Functions

Primeiro, siga o processo habitual para criar e configurar um app do Azure Functions (consulte a documentação da Microsoft para saber mais). Você encontra um exemplo de código para a implementação do Azure Functions neste repositório.

Configurar as variáveis de ambiente do Azure Functions

Acesse a configuração do app do Azure Functions (consulte a documentação da Microsoft para saber mais) e adicione as seguintes configurações de aplicativo:

Se você usa Azure DevOps Repos com sua conta Snyk, também pode configurar esta opção de aplicativo:

  • AZURE_DEVOPS_ORG: nome da sua organização do Azure DevOps

Há alguns parâmetros opcionais adicionais para solucionar problemas em um evento separado do New Relic. Se quiser usá-los, configure também as duas opções de aplicativo a seguir:

Tela de configuração do Azure Function App mostrando as configurações do aplicativo New Relic filtradas por “relic”, incluindo chaves de licença e segurança ocultas.

Obter a URL do Azure Functions

Selecione a Azure Function apropriada e clique em Get Function Url. Você precisará dessa URL na próxima etapa, para criar o webhook do Snyk.

Portal do Microsoft Azure exibindo a função new-relic, com o botão Get Function Url em destaque.

Criar um webhook do Snyk

É fácil criar o webhook do Snyk usando a API fornecida. Para isso, basta informar o ID da organização Snyk, o token de autenticação do Snyk e a URL de destino do webhook. A solicitação pode ser semelhante a esta. Você pode usar a ferramenta de sua preferência para enviá-la.

POST https://snyk.io/api/v1/org/{SNYK-ORG-ID}/webhooks HTTP/2
Host: snyk.io
Authorization: token {SNYK-TOKEN}
Content-Type: application/json

{
    "url": "https://{URL}",
    "secret": "my-secret-string"
}

O resultado será uma resposta como esta:

{
  "id": "{SNYK-WEBHOOK-ID}",
  "url": "https://{URL}",
}

Em seguida, você pode usar a Snyk Ping API para acionar o webhook de forma proativa e testar a integração:

POST https://snyk.io/api/v1/org/{SNYK-ORG-ID}/webhooks/{SNYK-WEBHOOK-ID}/ping HTTP/2
Host: snyk.io
Authorization: token {SNYK-TOKEN}
Content-Type: application/json

Interface personalizada do Snyk e painel de início rápido

Depois de criar a Azure Function e o webhook do Snyk, os dados dos projetos Snyk com uma frequência de nova análise configurada deverão começar a chegar. O mesmo vale para projetos que você analisa manualmente e nos quais o Snyk identifica novos problemas.

Você pode verificar o tipo de evento Vulnerability para confirmar que os dados estão chegando ao New Relic.

Painel de métricas e eventos do New Relic exibindo uma consulta sobre a quantidade de vulnerabilidades e um gráfico de série temporal com um pico acentuado

Além disso, o New Relic oferece uma interface personalizada: o app New Relic chamado Vulnerability management, que permite visualizar todos os problemas enviados.

Página de aplicativos do New Relic mostrando o app “Gerenciamento de vulnerabilidades” marcado como favorito e uma lista com 24 apps
Painel de segurança do New Relic mostrando resumos de vulnerabilidades, gráficos de vulnerabilidades não resolvidas, integrações e métricas de correção.

A equipe do Snyk também criou um modelo de início rápido com um painel personalizado de exemplo, para apresentar os dados da forma recomendada pelo Snyk, com foco na priorização e na redução de ruído.

Painel de resumo de problemas do Snyk no New Relic, com contagens por gravidade, gráficos de rosca e gráficos de séries temporais

Opção 2: New Relic Events API usando webhooks do Snyk

Este tipo de integração aproveita o método genérico do New Relic para receber qualquer tipo de dado como evento na plataforma, usando a New Relic Events API.

A diferença em relação à opção New Relic Security API é que o payload não precisa ser formatado. O New Relic aceita praticamente qualquer payload, com algumas restrições relacionadas aos pré-requisitos, aos limites da Events API e aos atributos restritos.

Você encontra um exemplo de código do Azure Functions neste repositório. Siga as etapas da opção New Relic Security API para criar e configurar o app do Azure Functions no Microsoft Azure. Depois, siga também as etapas para criar o webhook do Snyk.

Configurar as variáveis de ambiente do Azure Functions

Acesse a configuração do app do Azure Functions e adicione as seguintes configurações de aplicativo:

Tela de configuração do Azure Function App exibindo as configurações do aplicativo New Relic filtradas por “relic”.

Painel de exemplo

Em seguida, você pode confirmar se os dados estão realmente chegando ao New Relic consultando-os na seção Events.

O Query Builder do New Relic exibe uma consulta NRQL com a contagem de vulnerabilidades em projetos do Snyk e uma tabela de resultados por gravidade.

O New Relic também permite visualizar os dados em um painel intuitivo.

Painel do Snyk com a quantidade de problemas por projeto e repositório, origens dos projetos e níveis de prioridade, além de tabelas com dados brutos de projetos e problemas.

Opção 3: New Relic Metrics API usando o Snyk exporter

O Snyk exporter é uma ferramenta de código aberto que coleta dados de análises pela API HTTP do Snyk e os exporta como métricas do Prometheus. Esse exporter do Prometheus pode ser facilmente implantado em um cluster Kubernetes. Este é o cenário descrito neste artigo. O exporter também pode ser executado fora do Kubernetes, de forma independente.

O caso de uso deste artigo tem foco em Kubernetes. O principal motivo é aproveitar as integrações Prometheus OpenMetrics do New Relic para Docker e Kubernetes, que coletam dados dos endpoints do Prometheus e os enviam ao New Relic. Assim, podemos armazenar e visualizar métricas essenciais em uma única plataforma.

Siga estas etapas de implantação:

Implantar o Snyk exporter

O Snyk exporter já inclui arquivos YAML de implantação que você pode ajustar (secrets.yaml contém o token de API da sua conta Snyk) e implantar usando:

kubectl apply -f examples/secrets.yaml

kubectl apply -f examples/deployment.yaml

Implantar a integração do New Relic com Kubernetes

Você pode usar a instalação guiada do New Relic pela interface do usuário para configurar uma instalação personalizada e um script de implantação para a integração com Kubernetes. Não se esqueça de marcar a opção para coletar dados de todos os endpoints do Prometheus.

Caixa de diálogo de configuração da integração do New Relic com Kubernetes, com opções para coletar endpoints do Prometheus, reunir dados de log e reduzir os dados ingeridos.

Visualizar essas métricas

Assim que a integração do New Relic com Kubernetes for implantada, você deverá ver as métricas do Snyk exporter chegando.

Painel de métricas do New Relic exibindo a métrica snyk_vulnerabilities_total ao longo de 30 minutos, com um gráfico de linhas que atinge o pico de 9.

Não é necessário criar um painel do zero para visualizar essas métricas. Você pode importar para sua conta New Relic um painel pronto do repositório playground do Snyk.

Conferir o painel

Quando o guia de início rápido estiver pronto, acesse a seção de painéis do New Relic e confira o painel do Snyk que você importou, com todas as métricas do Snyk exporter.

Painel de segurança que mostra tendências de vulnerabilidades, totais por gravidade, tipos de problemas, descobertas que podem ser atualizadas ou corrigidas e dados brutos da verificação.

Observabilidade de segurança

E pronto: juntamos dois lados da mesma moeda em um só lugar. Talvez o ditado não seja bem assim, mas o que importa é que agora você tem seus logs, métricas, eventos, traces e dados de vulnerabilidades disponíveis em um único painel. Aproveite!

Comece a participar de desafios de Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.

Publicado em: