Skip to main content

Cómo enviar los datos de vulnerabilidades de Snyk a la plataforma de observabilidad New Relic

Escrito por

Harry Kimpel

feature snyk new relic dash

21 de octubre de 2022

0 minutos de lectura

Los datos de seguridad y observabilidad van de la mano cuando se trata del estado de las aplicaciones. Si puedes reunir esas dos fuentes de datos en un solo panel, te facilitarás mucho la vida. Al aprovechar las distintas opciones que ofrece la plataforma Snyk, puedes enviar directamente a tu plataforma de observabilidad New Relic todas las vulnerabilidades de seguridad de aplicaciones que detecta Snyk. ¡Veamos cómo!

Requisitos previos

Estos son los enlaces que necesitas para empezar:

Análisis de vulnerabilidades con Snyk

Las capacidades de Snyk incluyen pruebas estáticas de seguridad de aplicaciones (SAST) para código propietario, análisis de composición de software (SCA) de dependencias de código abierto, análisis de contenedores y análisis de infraestructura en la nube.

Lo ideal es poder usar los resultados del análisis donde y cuando sean más adecuados para cada caso de uso. Las integraciones con la CLI y el IDE pueden mostrar los resultados directamente en la terminal o en el IDE (con líneas rojas onduladas en el editor de código). También puedes visualizar los datos en el portal o la interfaz de usuario a partir de análisis de repositorios o análisis dentro de tu entorno de CI/CD favorito.

También es muy útil que puedas aprovechar las soluciones nativas de distintas herramientas de CI/CD. Por ejemplo, puedes enviar los resultados del análisis al Centro de seguridad de GitHub o GitLab, o mostrarlos en informes de Azure DevOps y otras formas de integración.

Informe de Snyk Code en Azure DevOps que muestra 27 problemas de gravedad alta, 20 media y 157 baja, incluido un problema de secuencias de comandos entre sitios

La importancia de la observabilidad

New Relic es una excelente herramienta de observabilidad que permite integrar y correlacionar distintos tipos de datos de monitoreo, como métricas, eventos, registros y trazas (MELT), en una sola plataforma con capacidades nativas para una amplia variedad de entornos.

Con New Relic, los clientes saben exactamente qué ocurre con sus aplicaciones mediante APM o el monitoreo de sus clústeres de Kubernetes, que permite conocer qué pods se ejecutan e incluye información sobre el estado de todos sus contenedores. En este caso de uso, también querrías saber si alguna de estas implementaciones tiene problemas de seguridad o contiene posibles vulnerabilidades.

Este artículo aborda precisamente este tipo de caso de uso.

Integrar Snyk con New Relic

Primero, analiza tu caso de uso y el entorno de destino, y luego decide qué tipo de integración se adapta mejor a tus requisitos.

Estas son las opciones:

  1. API de seguridad de New Relic con webhooks de Snyk

  2. API de eventos de New Relic con webhooks de Snyk

  3. API de métricas de New Relic con Snyk exporter

Por ejemplo, si toda tu arquitectura e infraestructura se ejecutan en Kubernetes y aprovechan las métricas de Prometheus, la API de métricas podría ser una buena opción. Sin embargo, si Kubernetes abarca solo una parte de tu entorno tecnológico y también quieres cubrir otros entornos, quizá te convenga usar webhooks.

Nota: Las integraciones 1 y 2 se basan en Azure Functions, escritas en C#. Su único propósito es ofrecer ejemplos de inicio rápido y darte una idea del proceso y del formato de la carga útil. Por supuesto, también puedes adaptarlas a otros lenguajes de programación y entornos de ejecución que elijas (sin servidor, como AWS Lambda, u otro entorno adecuado).

Opción 1: API de seguridad de New Relic con webhooks de Snyk

Este es el enfoque más reciente para enviar cualquier tipo de información relacionada con la seguridad a la plataforma New Relic. La ventaja es que New Relic «entiende» el tipo de datos que recibe, por lo que puede ofrecer una interfaz de usuario seleccionada para mostrar la información y una forma estandarizada de correlacionarla con otros tipos de datos que puede consumir.

Algunos ejemplos de estas correlaciones son:

  • Una aplicación monitoreada con APM, el repositorio donde se encuentra y los problemas relacionados que Snyk identificó desde la perspectiva de la seguridad de aplicaciones

  • Un contenedor que se ejecuta dentro de un clúster de Kubernetes, donde New Relic conoce todos los detalles sobre el comportamiento en tiempo de ejecución y Snyk proporciona información detallada sobre los aspectos de seguridad del contenedor

Crear una aplicación de Azure Functions

Primero, sigue el proceso habitual para crear y configurar una aplicación de Azure Functions (consulta esta documentación de Microsoft para obtener más información). Puedes encontrar un ejemplo de código para las Azure Functions en este repositorio.

Configurar las variables de entorno de Azure Functions

Ve a la configuración de tu aplicación de Azure Functions (consulta esta documentación de Microsoft para obtener más información) y agrega los siguientes parámetros de configuración de la aplicación:

Si usas Azure DevOps Repos con tu cuenta de Snyk, también puedes configurar este parámetro de la aplicación:

  • AZURE_DEVOPS_ORG: nombre de tu organización de Azure DevOps

Hay algunos parámetros opcionales adicionales para la solución de problemas en un evento independiente de New Relic. Si quieres aprovecharlos, configura también los siguientes dos parámetros de la aplicación:

Pantalla de configuración de Azure Function App que muestra los ajustes de la aplicación New Relic filtrados por «relic», incluidas las claves de licencia y seguridad ocultas.

Obtener la URL de Azure Functions

Selecciona la Azure Function correspondiente y haz clic en Get Function Url. Necesitarás esta URL en el siguiente paso para crear el webhook de Snyk.

Portal de Microsoft Azure que muestra la función de New Relic con el botón Obtener URL de la función resaltado.

Crear un webhook de Snyk

Puedes crear fácilmente el webhook de Snyk con la API proporcionada. Solo necesitas indicar el ID de la organización de Snyk, el token de autenticación de Snyk y la URL de destino del webhook. Un ejemplo de solicitud sería el siguiente; puedes usar tu herramienta favorita para enviarla.

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"
}

Como resultado, recibirás una respuesta como esta:

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

Luego, puedes usar la API de ping de Snyk para activar el webhook de forma proactiva y probar la integración:

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

Interfaz seleccionada de Snyk y panel de inicio rápido

Una vez creados la Azure Function y el webhook de Snyk, deberías ver datos de los proyectos de Snyk con una frecuencia de repetición de análisis configurada o de los proyectos que analizas manualmente y en los que Snyk detecta problemas nuevos.

Puedes revisar el tipo de evento Vulnerability para confirmar que los datos lleguen a New Relic.

Panel de métricas y eventos de New Relic con una consulta sobre el recuento de vulnerabilidades y un gráfico de series temporales con un pico pronunciado

Además, New Relic ofrece una interfaz seleccionada: una aplicación de New Relic llamada Vulnerability management, que puedes usar para visualizar todos los problemas enviados.

Página de aplicaciones de New Relic que muestra una app favorita de «Administración de vulnerabilidades» y una lista de 24 apps
Panel de seguridad de New Relic que muestra resúmenes de vulnerabilidades, gráficos de vulnerabilidades sin resolver, integraciones y métricas de corrección.

Además, el equipo de Snyk creó una plantilla de inicio rápido que incluye un panel personalizado de ejemplo para garantizar que los datos se presenten de la forma preferida por Snyk, con énfasis en la priorización y la reducción del ruido.

Panel de resumen de problemas de Snyk en New Relic que muestra la cantidad de problemas por nivel de gravedad, gráficos de dona y gráficos de series temporales

Opción 2: API de eventos de New Relic con webhooks de Snyk

Este tipo de integración aprovecha el método genérico de New Relic para recibir cualquier tipo de datos en forma de eventos mediante la API de eventos de New Relic.

La diferencia con la opción de la API de seguridad de New Relic es que la carga útil no necesita ningún formato específico. New Relic acepta prácticamente cualquier carga útil (con algunas restricciones sobre los requisitos previos, ciertos límites de la API de eventos y atributos restringidos).

Puedes encontrar un ejemplo de código de Azure Function en este repositorio. Sigue los pasos de la opción de la API de seguridad de New Relic para crear y configurar la aplicación de Azure Functions en Microsoft Azure. Además, sigue los pasos para crear el webhook de Snyk.

Configurar las variables de entorno de Azure Functions

Ve a la configuración de tu aplicación de Azure Functions y agrega los siguientes parámetros de configuración de la aplicación:

Pantalla de configuración de Azure Function App que muestra los ajustes de la aplicación New Relic filtrados por «relic».

Panel de ejemplo

Luego, puedes confirmar que los datos se estén recibiendo en New Relic consultándolos en la sección Events.

El generador de consultas de New Relic muestra una consulta NRQL sobre la cantidad de vulnerabilidades en proyectos de Snyk y una tabla de resultados por nivel de gravedad.

New Relic también te permite visualizar los datos en un panel atractivo.

Panel de Snyk que muestra la cantidad de problemas por proyecto y repositorio, el origen de los proyectos y las puntuaciones de prioridad, junto con tablas de datos sin procesar de proyectos y problemas.

Opción 3: API de métricas de New Relic con Snyk exporter

Snyk exporter es una herramienta de código abierto que permite exportar datos de análisis como métricas de Prometheus mediante la consulta de la API HTTP de Snyk. Este exportador de Prometheus se puede implementar fácilmente en un clúster de Kubernetes. Este es el escenario que se describe en este artículo. El exportador también puede ejecutarse de forma independiente fuera de Kubernetes.

El caso de uso de este artículo se centra en Kubernetes. El motivo principal es que quiero aprovechar las integraciones de Prometheus OpenMetrics de New Relic para Docker y Kubernetes, que consultan endpoints de Prometheus y envían los datos a New Relic. Así podemos almacenar y visualizar métricas importantes en una sola plataforma.

Sigue estos pasos de implementación:

Implementar Snyk exporter

Snyk exporter ya incluye archivos YAML de implementación que puedes ajustar (secrets.yaml contiene el token de API de tu cuenta de Snyk) e implementar con:

kubectl apply -f examples/secrets.yaml

kubectl apply -f examples/deployment.yaml

Implementar la integración de New Relic con Kubernetes

Puedes usar la instalación guiada de New Relic desde la interfaz de usuario para configurar una instalación personalizada y un script de implementación para la integración con Kubernetes. Asegúrate de marcar la opción para consultar todos los endpoints de Prometheus.

Cuadro de configuración de la integración de Kubernetes de New Relic con opciones para recopilar puntos de conexión de Prometheus, obtener datos de registro y reducir los datos ingeridos.

Visualizar estas métricas

En cuanto implementes la integración de New Relic con Kubernetes, deberías ver que llegan métricas desde Snyk exporter.

Panel de métricas de New Relic que muestra la métrica snyk_vulnerabilities_total durante un período de 30 minutos, con un gráfico de líneas que alcanza un pico de 9.

No necesitas crear tu propio panel para visualizar estas métricas. Puedes importar a tu cuenta de New Relic un panel prediseñado del repositorio de playground de Snyk.

Consultar el panel

Cuando el inicio rápido esté listo, ve a la sección de paneles de New Relic y abre el panel de Snyk que importaste para visualizar todas las métricas de Snyk exporter.

Panel de seguridad que muestra tendencias de vulnerabilidades, totales por gravedad, tipos de problemas, hallazgos que se pueden actualizar o corregir con parches y datos sin procesar del análisis.

Observar la seguridad

Y así, reunimos dos caras de una misma moneda en una misma cara de la misma moneda. Puede que el dicho no sea exactamente así, pero lo importante es que ahora tienes tus registros, métricas, eventos, trazas y datos de vulnerabilidades disponibles en un solo panel. ¡Que lo disfrutes!

Empieza con Capture the Flag

Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.

Enlaces y referencias relacionados