Skip to main content

Comment envoyer les données de vulnérabilité Snyk vers la plateforme d’observabilité New Relic

Écrit par

Harry Kimpel

feature snyk new relic dash

21 octobre 2022

0 minutes de lecture

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

Rapport Azure DevOps Snyk Code affichant 27 problèmes de gravité élevée, 20 moyenne et 157 faible, dont une vulnérabilité de type cross-site scripting

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 :

  1. API Security de New Relic avec les webhooks Snyk

  2. API Events de New Relic avec les webhooks Snyk

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

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 :

Écran de configuration d’Azure Function App affichant les paramètres d’application New Relic filtrés par « relic », notamment les clés de licence et de sécurité masquées.

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.

Portail Microsoft Azure affichant la fonction new-relic, avec le bouton « Obtenir l’URL de la fonction » mis en évidence.

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.

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

Vous obtiendrez alors une réponse semblable à celle-ci :

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

Vous pouvez ensuite utiliser l’API Ping de Snyk pour déclencher le webhook de manière proactive et tester votre intégration :

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

Tableau de bord des métriques et événements New Relic affichant une requête sur le nombre de vulnérabilités et un graphique de série temporelle avec un pic marqué

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.

Page des applications New Relic affichant l’application « Gestion des vulnérabilités » dans les favoris et une liste de 24 applications
Tableau de bord de sécurité New Relic affichant des synthèses des vulnérabilités, des graphiques sur les vulnérabilités non résolues, des intégrations et des indicateurs de correction.

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.

Tableau de bord récapitulatif des problèmes Snyk dans New Relic, avec le nombre de problèmes par niveau de gravité, des diagrammes en anneau et des graphiques chronologiques

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 :

Écran de configuration d’Azure Function App affichant les paramètres de l’application New Relic filtrés par « 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.

Le générateur de requêtes New Relic affiche une requête NRQL indiquant le nombre de vulnérabilités dans les projets Snyk et un tableau des résultats par gravité.

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

Tableau de bord Snyk affichant le nombre de problèmes par projet et dépôt, l’origine des projets et les scores de priorité, ainsi que les tableaux de données brutes sur les projets et les problèmes.

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 :

kubectl apply -f examples/secrets.yaml

kubectl apply -f examples/deployment.yaml

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.

Boîte de dialogue de configuration de l’intégration Kubernetes de New Relic, avec des options pour collecter les points de terminaison Prometheus, recueillir les données des journaux et réduire le volume de données ingérées.

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.

Tableau de bord des métriques New Relic affichant la métrique snyk_vulnerabilities_total sur une période de 30 minutes, avec une courbe atteignant un pic à 9.

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.

Tableau de bord de sécurité présentant les tendances des vulnérabilités, le nombre de problèmes par niveau de gravité et par type, les résultats pouvant être mis à niveau ou corrigés, ainsi que les données brutes de l’analyse.

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.

Liens et références associés