Como enviar dados de vulnerabilidades do Snyk para a plataforma de observabilidade New Relic
Harry Kimpel
21 de outubro de 2022
0 minutos de leituraDados 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.

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:
New Relic Security API usando webhooks do Snyk
New Relic Events API usando webhooks do Snyk
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:
NEW_RELIC_SECURITY_URL: URL da New Relic Security API, por exemplo: https://security-api.newrelic.com/security/v1
NEW_RELIC_LICENSE_KEY: chave de licença do New Relic
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:
NEW_RELIC_INSIGHTS_URL: URL da API de eventos das contas New Relic, por exemplo: https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events

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.

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.
O resultado será uma resposta como esta:
Em seguida, você pode usar a Snyk Ping API para acionar o webhook de forma proativa e testar a integração:
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.

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


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.

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:
NEW_RELIC_INSIGHTS_URL: URL da API de eventos da conta New Relic, por exemplo: https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events
NEW_RELIC_LICENSE_KEY: chave de licença do New 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 New Relic também permite visualizar os dados em um painel intuitivo.

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:
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.

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.

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.

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.
