So senden Sie Snyk-Schwachstellendaten an die New Relic Observability-Plattform
Harry Kimpel
21. Oktober 2022
0 Min. LesezeitDaten zu Sicherheit und Observability gehören zusammen, wenn es um den Zustand von Anwendungen geht. Wenn Sie beide Datenquellen in einer zentralen Oberfläche zusammenführen, erleichtern Sie sich die Arbeit erheblich. Mit den verschiedenen Optionen der Snyk-Plattform können Sie alle von Snyk gefundenen Schwachstellen in der Anwendungssicherheit direkt an Ihre New Relic Observability-Plattform senden. Sehen wir uns an, wie das geht!
Voraussetzungen
Hier finden Sie alle erforderlichen Links für den Einstieg:
Schwachstellenscans mit Snyk
Zu den Funktionen von Snyk gehören statische Anwendungssicherheitstests (SAST) für proprietären Code, Software Composition Analysis (SCA) für Open-Source-Abhängigkeiten, Container-Scans und Scans der Cloud-Infrastruktur.
Im Idealfall können die Scan-Ergebnisse dort und dann verwendet werden, wo und wann es für den jeweiligen Anwendungsfall am sinnvollsten ist. CLI- und IDE-Integrationen zeigen Scan-Ergebnisse direkt im Terminal oder in der IDE an (etwa als rote Zickzack- oder Wellenlinien im Code-Editor). Sie können die Daten außerdem im Portal bzw. in der Benutzeroberfläche aus Repository-Scans oder aus Scans in Ihrer bevorzugten CI/CD-Umgebung visualisieren.
Sehr praktisch ist auch, dass Sie native Lösungen für die verschiedenen CI/CD-Tools nutzen können. So können Sie Scan-Ergebnisse beispielsweise an GitHub oder das GitLab Security Center senden oder sie in Azure DevOps-Berichten und über andere Integrationen anzeigen.

Die Bedeutung von Observability
New Relic ist ein hervorragendes Observability-Tool. Damit können Sie verschiedene Arten von Überwachungsdaten wie Metriken, Ereignisse, Logs und Traces (MELT) auf einer einzigen Plattform zusammenführen und korrelieren. Die Plattform bietet native Funktionen für eine Vielzahl von Umgebungen.
Mit New Relic wissen Kunden dank APM genau, was in ihren Anwendungen vor sich geht. Sie können auch ihre Kubernetes-Cluster überwachen und sehen, welche Pods ausgeführt werden und wie es um den Zustand der jeweiligen Container steht. In einem solchen Szenario möchten Sie idealerweise auch wissen, ob einige dieser Deployments Sicherheitsprobleme oder potenzielle Schwachstellen aufweisen.
Um genau diesen Anwendungsfall geht es in diesem Artikel.
Snyk in New Relic integrieren
Überlegen Sie zunächst, was Ihr Anwendungsfall ist und welche Zielumgebung Sie haben. Entscheiden Sie dann, welche Integrationsart Ihre Anforderungen am besten erfüllt.
Folgende Optionen stehen zur Verfügung:
New Relic Security API mit Snyk-Webhooks
New Relic Events API mit Snyk-Webhooks
New Relic Metrics API mit dem Snyk-Exporter
Wenn Ihre gesamte Architektur und Umgebung beispielsweise auf Kubernetes läuft und Sie Prometheus-Metriken nutzen, eignet sich die Metrics API gut. Deckt Kubernetes jedoch nur Teile Ihrer Technologielandschaft ab und möchten Sie auch andere Umgebungen erfassen, sind Webhooks möglicherweise die bessere Wahl.
Hinweis: Die Integrationen 1 und 2 basieren auf Azure Functions, die in C# geschrieben sind. Sie dienen lediglich als Beispiel für einen schnellen Einstieg und sollen Ihnen den Ablauf sowie das Format der Nutzdaten veranschaulichen. Sie können sie natürlich auch an andere Programmiersprachen und Laufzeitumgebungen Ihrer Wahl anpassen, etwa an serverlose Umgebungen wie AWS Lambda oder an andere geeignete Umgebungen.
Option 1: New Relic Security API mit Snyk-Webhooks
Dies ist der neueste Ansatz, um sicherheitsrelevante Informationen jeder Art an die New Relic-Plattform zu senden. Der Vorteil: New Relic „versteht“ die Art der aufgenommenen Daten und kann dafür eine maßgeschneiderte Benutzeroberfläche bereitstellen. Außerdem bietet die Plattform eine standardisierte Möglichkeit, diese Informationen mit anderen Datenarten zu korrelieren, die New Relic verarbeiten kann.
Beispiele für solche Korrelationen:
Eine mit APM überwachte Anwendung, das Repository, in dem sich die Anwendung befindet, und die von Snyk erkannten, damit korrelierten Probleme aus Sicht der Anwendungssicherheit
Ein Container, der in einem Kubernetes-Cluster ausgeführt wird, zu dessen Laufzeitverhalten New Relic umfassende Einblicke bietet – ergänzt um detaillierte Informationen von Snyk zu den Sicherheitsaspekten des Containers
Eine Azure Functions-App erstellen
Folgen Sie zunächst dem üblichen Verfahren zum Erstellen und Konfigurieren einer Azure Functions-App (weitere Informationen finden Sie in dieser Microsoft-Dokumentation). Beispielcode für die Azure Functions-Funktion finden Sie in diesem Repository.
Umgebungsvariablen für Azure Functions konfigurieren
Öffnen Sie die Konfiguration Ihrer Azure Functions-App (weitere Informationen finden Sie in dieser Microsoft-Dokumentation) und fügen Sie die folgenden Anwendungseinstellungen hinzu:
NEW_RELIC_SECURITY_URL: URL für die New Relic Security API, z. B. https://security-api.newrelic.com/security/v1
NEW_RELIC_LICENSE_KEY: New Relic-Lizenzschlüssel
Wenn Sie Azure DevOps Repos mit Ihrem Snyk-Konto verwenden, können Sie außerdem diese Anwendungseinstellung konfigurieren:
AZURE_DEVOPS_ORG: Name Ihrer Azure DevOps-Organisation
Für die Fehlerbehebung stehen einige zusätzliche optionale Parameter in einem separaten New Relic-Ereignis zur Verfügung. Wenn Sie diese nutzen möchten, konfigurieren Sie auch die folgenden beiden Anwendungseinstellungen:
NEW_RELIC_INSIGHTS_URL: URL für die Event API des New Relic-Kontos, z. B. https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events

Azure Functions-URL abrufen
Wählen Sie die passende Azure Function aus und klicken Sie auf Get Function Url. Diese URL benötigen Sie im nächsten Schritt, um den Snyk-Webhook zu erstellen.

Snyk-Webhook erstellen
Der Snyk-Webhook lässt sich ganz einfach über die bereitgestellte API erstellen. Dafür müssen Sie lediglich die Snyk-Organisations-ID, das Snyk-Authentifizierungstoken und die Ziel-Webhook-URL angeben. Eine Beispielanfrage könnte wie folgt aussehen. Zum Senden der Anfrage können Sie Ihr bevorzugtes Tool verwenden.
Als Antwort erhalten Sie etwa Folgendes:
Anschließend können Sie die Snyk Ping API verwenden, um den Webhook proaktiv auszulösen und Ihre Integration zu testen:
Maßgeschneiderte Snyk-Benutzeroberfläche und Quickstart-Dashboard
Sobald die Azure Function und der Snyk-Webhook erstellt sind, sollten Daten für Snyk-Projekte eingehen, bei denen eine regelmäßige erneute Testfrequenz konfiguriert ist – oder für Projekte, die Sie manuell scannen und bei denen Snyk neue Probleme erkennt.
Sie können den Ereignistyp Vulnerability aufrufen, um zu überprüfen, ob Daten in New Relic eingehen.

Zusätzlich bietet New Relic eine maßgeschneiderte Benutzeroberfläche: die New Relic-App Vulnerability management, mit der Sie alle gesendeten Probleme visualisieren können.


Das Snyk-Team hat außerdem eine Quickstart-Vorlage erstellt. Sie enthält ein Beispiel für ein benutzerdefiniertes Dashboard, damit alle Daten in der von Snyk bevorzugten Form dargestellt werden – mit Fokus auf Priorisierung und Rauschreduzierung.

Option 2: New Relic Events API mit Snyk-Webhooks
Bei dieser Integration wird die allgemeine Möglichkeit von New Relic genutzt, Daten jeder Art in Form von Ereignissen über die New Relic Events API in die Plattform aufzunehmen.
Im Gegensatz zur Option mit der New Relic Security API muss die Nutzlast nicht in einem bestimmten Format vorliegen. New Relic akzeptiert nahezu beliebige Nutzlasten (unter Beachtung einiger Voraussetzungen sowie bestimmter Limits und eingeschränkter Attribute der Events API).
Beispielcode für eine Azure Function finden Sie in diesem Repository. Folgen Sie den Schritten zur New Relic Security API, um die Azure Functions-App in Microsoft Azure zu erstellen und einzurichten. Folgen Sie anschließend auch den Schritten zum Erstellen des Snyk-Webhooks.
Umgebungsvariablen für Azure Functions konfigurieren
Öffnen Sie die Konfiguration Ihrer Azure Functions-App und fügen Sie die folgenden Anwendungseinstellungen hinzu:
NEW_RELIC_INSIGHTS_URL: URL für die Event API des New Relic-Kontos, z. B. https://insights-collector.newrelic.com/v1/accounts/{NR-ACCOUNT-ID}/events
NEW_RELIC_LICENSE_KEY: New Relic-Lizenzschlüssel

Beispiel-Dashboard
Anschließend können Sie im Bereich Events die Daten abfragen und überprüfen, ob sie tatsächlich in New Relic aufgenommen werden.

Mit New Relic können Sie die Daten auch in einem übersichtlichen Dashboard visualisieren.

Option 3: New Relic Metrics API mit dem Snyk-Exporter
Der Snyk-Exporter ist ein Open-Source-Tool, das Scan-Daten über die Snyk HTTP API abruft und als Prometheus-Metriken exportiert. Dieser Prometheus-Exporter lässt sich ganz einfach in einem Kubernetes-Cluster bereitstellen. Dieses Szenario wird in diesem Artikel beschrieben. Der Exporter kann auch unabhängig von Kubernetes eigenständig ausgeführt werden.
Der Anwendungsfall in diesem Artikel konzentriert sich auf Kubernetes. Der Hauptgrund dafür ist, dass ich die Prometheus-OpenMetrics-Integrationen von New Relic für Docker und Kubernetes nutzen möchte, um Prometheus-Endpunkte abzufragen und die Daten an New Relic zu senden. So können wir wichtige Metriken auf einer Plattform speichern und visualisieren.
Folgen Sie diesen Bereitstellungsschritten:
Snyk-Exporter bereitstellen
Der Snyk-Exporter enthält bereits Deployment-YAML-Dateien, die Sie anpassen können (secrets.yaml enthält das API-Token für Ihr Snyk-Konto) und anschließend mit folgendem Befehl bereitstellen:
New Relic Kubernetes-Integration bereitstellen
Über die geführte Installation in der New Relic-Benutzeroberfläche können Sie eine benutzerdefinierte Installation und ein Bereitstellungsskript für die Kubernetes-Integration konfigurieren. Achten Sie darauf, die Option zum Abrufen aller Prometheus-Endpunkte auszuwählen.

Diese Metriken visualisieren
Sobald Sie die New Relic Kubernetes-Integration bereitgestellt haben, sollten Metriken des Snyk-Exporters eingehen.

Sie müssen kein eigenes Dashboard erstellen, um diese Metriken zu visualisieren. Stattdessen können Sie ein vorgefertigtes Dashboard aus dem Snyk-Playground-Repository verwenden und in Ihr New Relic-Konto importieren.
Dashboard ansehen
Sobald der Quickstart bereit ist, können Sie im Dashboard-Bereich von New Relic das importierte Snyk-Dashboard aufrufen und alle Metriken des Snyk-Exporters visualisieren.

Sicherheit im Blick behalten
Und schon haben wir zwei Seiten derselben Medaille auf derselben Seite derselben Medaille zusammengeführt. So lautet die Redewendung vielleicht nicht ganz, aber entscheidend ist: Jetzt stehen Ihnen Logs, Metriken, Ereignisse, Traces und Schwachstellendaten in einer zentralen Oberfläche zur Verfügung. Viel Spaß damit!
Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.
