Cómo enviar los datos de vulnerabilidades de Snyk a la plataforma de observabilidad New Relic
Harry Kimpel
21 de octubre de 2022
0 minutos de lecturaLos 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.

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:
API de seguridad de New Relic con webhooks de Snyk
API de eventos de New Relic con webhooks de Snyk
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:
NEW_RELIC_SECURITY_URL: URL de la API de seguridad de New Relic, por ejemplo, https://security-api.newrelic.com/security/v1
NEW_RELIC_LICENSE_KEY: clave de licencia de New Relic
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:
NEW_RELIC_INSIGHTS_URL: URL de la API de eventos de las cuentas de New Relic, por ejemplo, https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events

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.

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.
Como resultado, recibirás una respuesta como esta:
Luego, puedes usar la API de ping de Snyk para activar el webhook de forma proactiva y probar la integración:
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.

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.


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.

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:
NEW_RELIC_INSIGHTS_URL: URL de la API de eventos de la cuenta de New Relic, por ejemplo, https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events
NEW_RELIC_LICENSE_KEY: clave de licencia de New Relic

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

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

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

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.

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.

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.
