Comment envoyer les données de vulnérabilité Snyk vers la plateforme d’observabilité New Relic
Harry Kimpel
21 octobre 2022
0 minutes de lectureLes données de sécurité et d’observabilité sont indissociables lorsqu’il s’agit de la santé des applications. En regroupant ces deux sources de données dans une interface unique, vous pouvez vous simplifier considérablement la tâche. Grâce aux différentes options proposées par la plateforme Snyk, vous pouvez envoyer directement vers votre plateforme d’observabilité New Relic toutes les vulnérabilités de sécurité des applications détectées par Snyk. Voyons comment faire !
Prérequis
Voici tous les liens nécessaires pour commencer :
Analyse des vulnérabilités avec Snyk
Les fonctionnalités de Snyk incluent l’analyse statique de la sécurité des applications (SAST) du code propriétaire, l’analyse de la composition logicielle (SCA) des dépendances open source, l’analyse des conteneurs et l’analyse de l’infrastructure cloud.
Idéalement, les résultats d’analyse doivent pouvoir être utilisés au moment et à l’endroit les plus adaptés au cas d’usage. Les intégrations CLI et IDE peuvent bien sûr afficher les résultats directement dans le terminal ou dans l’IDE (sous forme de lignes rouges ondulées dans votre éditeur de code). Vous pouvez également visualiser les données dans le portail ou l’interface utilisateur à partir d’analyses de dépôts ou d’analyses effectuées dans votre environnement CI/CD préféré.
Il est également très pratique de pouvoir exploiter les solutions natives des différents outils CI/CD. Vous pouvez, par exemple, envoyer les résultats d’analyse dans GitHub ou GitLab Security Center, ou les afficher dans les rapports Azure DevOps ou via d’autres types d’intégrations.

L’importance de l’observabilité
New Relic est un excellent outil d’observabilité qui vous permet d’intégrer et de corréler différents types de données de supervision, comme les métriques, les événements, les journaux et les traces (MELT), sur une seule plateforme dotée de fonctionnalités natives pour un large éventail d’environnements.
Avec New Relic, les clients savent exactement ce qui se passe dans leurs applications grâce à l’APM ou à la supervision de leurs clusters Kubernetes, qui leur indique quels Pods sont en cours d’exécution et l’état de santé de tous leurs conteneurs. Dans ce type de cas d’usage, il est également utile de savoir si certains déploiements présentent des problèmes de sécurité ou contiennent des vulnérabilités potentielles.
C’est le type de cas d’usage abordé dans cet article.
Intégrer Snyk à New Relic
Tout d’abord, réfléchissez à votre cas d’usage et à votre environnement cible, puis choisissez le type d’intégration le mieux adapté à vos besoins.
Voici les options possibles :
API Security de New Relic avec les webhooks Snyk
API Events de New Relic avec les webhooks Snyk
API Metrics de New Relic avec Snyk exporter
Par exemple, si toute votre architecture et votre infrastructure reposent sur Kubernetes et utilisent les métriques Prometheus, l’API Metrics peut convenir. En revanche, si Kubernetes ne couvre qu’une partie de votre environnement technologique et que vous souhaitez également prendre en charge d’autres environnements, les webhooks sont peut-être la solution.
Remarque : Les intégrations 1 et 2 reposent sur des Azure Functions écrites en C#. Elles servent uniquement à proposer des exemples de démarrage rapide et à vous donner une idée du processus et du format de la charge utile. Vous pouvez bien sûr aussi les adapter à d’autres langages de programmation et environnements d’exécution de votre choix (sans serveur, comme AWS Lambda, ou tout autre environnement adapté).
Option 1 : API Security de New Relic avec les webhooks Snyk
Il s’agit de la méthode la plus récente pour envoyer tout type d’information liée à la sécurité à la plateforme New Relic. Son avantage est que New Relic « comprend » le type de données ingérées et peut ainsi proposer une interface utilisateur adaptée à ces informations, ainsi qu’une méthode standardisée pour les corréler à d’autres types de données que New Relic peut exploiter.
Voici quelques exemples de corrélations :
Une application supervisée avec APM, le dépôt dans lequel elle se trouve et les problèmes connexes détectés par Snyk du point de vue de la sécurité des applications
Un conteneur exécuté dans un cluster Kubernetes, dont New Relic connaît le comportement à l’exécution et pour lequel Snyk fournit des informations détaillées sur les aspects de sécurité
Créer une application Azure Functions
Commencez par suivre la procédure habituelle pour créer et configurer une application Azure Functions (consultez la documentation Microsoft pour en savoir plus). Vous trouverez un exemple de code pour les Azure Functions dans ce dépôt.
Configurer les variables d’environnement d’Azure Functions
Accédez à la configuration de votre application Azure Functions (consultez la documentation Microsoft pour en savoir plus) et ajoutez les nouveaux paramètres d’application suivants :
NEW_RELIC_SECURITY_URL : URL de l’API Security de New Relic, par exemple https://security-api.newrelic.com/security/v1
NEW_RELIC_LICENSE_KEY : clé de licence New Relic
Si vous utilisez Azure DevOps Repos avec votre compte Snyk, vous pouvez également configurer ce paramètre d’application :
AZURE_DEVOPS_ORG : nom de votre organisation Azure DevOps
D’autres paramètres facultatifs sont disponibles pour le dépannage dans un événement New Relic distinct. Pour les utiliser, configurez également les deux paramètres d’application suivants :
NEW_RELIC_INSIGHTS_URL : URL de l’API Events des comptes New Relic, par exemple https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events

Récupérer l’URL d’Azure Functions
Sélectionnez l’Azure Function appropriée et cliquez sur Get Function Url. Vous aurez besoin de cette URL à l’étape suivante pour créer le webhook Snyk.

Créer un webhook Snyk
Vous pouvez facilement créer le webhook Snyk à l’aide de l’API fournie. L’API nécessite uniquement l’ID de l’organisation Snyk, le jeton d’authentification Snyk et l’URL cible du webhook. Voici un exemple de requête que vous pouvez envoyer avec l’outil de votre choix.
Vous obtiendrez alors une réponse semblable à celle-ci :
Vous pouvez ensuite utiliser l’API Ping de Snyk pour déclencher le webhook de manière proactive et tester votre intégration :
Interface utilisateur sélectionnée par Snyk et tableau de bord de démarrage rapide
Une fois l’Azure Function et le webhook Snyk créés, vous devriez voir arriver des données pour les projets Snyk configurés pour être retestés à une fréquence donnée, ou pour les projets que vous analysez manuellement et dans lesquels Snyk détecte de nouveaux problèmes.
Vous devriez pouvoir consulter le type d’événement Vulnerability pour vérifier que les données sont bien transmises à New Relic.

New Relic propose également une interface utilisateur adaptée, une application New Relic nommée Vulnerability management, qui vous permet de visualiser tous les problèmes envoyés.


De plus, l’équipe Snyk a créé un modèle de démarrage rapide comprenant un exemple de tableau de bord personnalisé. Il permet de présenter toutes les données selon les principes de Snyk, en mettant l’accent sur la priorisation et la réduction du bruit.

Option 2 : API Events de New Relic avec les webhooks Snyk
Ce type d’intégration s’appuie sur la méthode générique de New Relic pour ingérer tout type de données sous forme d’événements dans sa plateforme, à l’aide de l’API Events de New Relic.
Contrairement à l’option API Security de New Relic, la charge utile n’a pas besoin d’être formatée. New Relic accepte pratiquement toutes les charges utiles (sous réserve de certaines contraintes liées aux prérequis, aux limites de l’API Events et aux attributs restreints).
Vous trouverez un exemple de code Azure Function dans ce dépôt. Suivez les étapes indiquées pour l’API Security de New Relic afin de créer et de configurer l’application Azure Functions sur Microsoft Azure. Suivez ensuite également les étapes de création du webhook Snyk.
Configurer les variables d’environnement d’Azure Functions
Accédez à la configuration de votre application Azure Functions et ajoutez les nouveaux paramètres d’application suivants :
NEW_RELIC_INSIGHTS_URL : URL de l’API Events du compte New Relic, par exemple https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events
NEW_RELIC_LICENSE_KEY : clé de licence New Relic

Exemple de tableau de bord
Vous pouvez ensuite vérifier que les données sont bien ingérées dans New Relic en les interrogeant dans la section Events.

New Relic vous permet également de visualiser les données dans un tableau de bord clair.

Option 3 : API Metrics de New Relic avec Snyk exporter
Snyk exporter est un outil open source qui exporte les données d’analyse sous forme de métriques Prometheus en interrogeant l’API HTTP de Snyk. Cet exporter Prometheus se déploie facilement dans un cluster Kubernetes. C’est le scénario décrit dans cet article. L’exporter peut également fonctionner de manière autonome en dehors de Kubernetes.
Le cas d’usage de cet article porte sur Kubernetes. La principale raison est que je souhaite exploiter les intégrations Prometheus OpenMetrics de New Relic pour Docker et Kubernetes afin d’interroger les endpoints Prometheus et d’envoyer les données à New Relic. Nous pouvons ainsi stocker et visualiser les métriques essentielles sur une seule plateforme.
Suivez les étapes de déploiement suivantes :
Déployer Snyk exporter
Snyk exporter contient déjà des fichiers YAML de déploiement que vous pouvez adapter (secrets.yaml contient le jeton d’API de votre compte Snyk), puis déployer à l’aide de la commande suivante :
Déployer l’intégration New Relic pour Kubernetes
Vous pouvez utiliser l’installation guidée de New Relic depuis l’interface utilisateur pour configurer une installation personnalisée et un script de déploiement pour l’intégration Kubernetes. Veillez simplement à sélectionner l’option permettant d’interroger tous les endpoints Prometheus.

Visualiser ces métriques
Dès que vous déployez l’intégration New Relic pour Kubernetes, vous devriez voir arriver les métriques de Snyk exporter.

Vous n’avez pas besoin de créer votre propre tableau de bord pour visualiser ces métriques : vous pouvez importer dans votre compte New Relic un tableau de bord prédéfini disponible dans le dépôt playground de Snyk.
Consulter le tableau de bord
Une fois le démarrage rapide configuré, accédez à la section des tableaux de bord de New Relic pour consulter le tableau de bord Snyk que vous avez importé et visualiser toutes les métriques de Snyk exporter.

Superviser la sécurité
Et voilà : nous avons réuni deux aspects d’une même réalité dans une seule interface. Ce n’est peut-être pas la tournure habituelle, mais l’essentiel, c’est que vos journaux, métriques, événements, traces et données de vulnérabilité sont désormais accessibles au même endroit. Profitez-en !
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.
