Snyk ist ein Editor, der sich auf die Analyse von Schwachstellen im Code von Infrastruktur-Konfigurationsdateien spezialisiert hat, einschließlich solcher, die in Containern und Anwendungspaketen vorhanden sind.
Snyk bietet zunächst eine Cloud-Plattform, hat aber verschiedene Produkte im Angebot.
Snyk OpenSource lässt sich über die CLI des Editors in einen Git-Flow integrieren. Einmal gestartet, erkennt die Software Schwachstellen, klassifiziert sie nach dem Grad der Empfindlichkeit und korrigiert bekannte Sicherheitsfehler automatisch. Diese Funktionalität kann in den Pull-Request-Zyklus integriert werden, um auf den an Repositories gesendeten Code angewendet zu werden.
Snyk Infrastructure as Code hingegen analysiert die Schwachstellen und behebt sie in den JSON- und YAML-Kubernetes-Konfigurationsdateien. Eine Regel-Engine ermöglicht es Ihnen, die Empfindlichkeit der Erkennungen in Git-Repositories gemäß den von den Administratoren festgelegten Parametern zu konfigurieren.
MitSnyk Container können Sie Docker-Images und zugehörige Registrierungen zum Zeitpunkt ihrer Erstellung und danach testen. Das Programm kann in CLIs, SCMs, CI-Tools, Container-Registries und Kubernetes integriert werden.
Heute werden wir sehen, wie wir Snyk Container, das in Docker integriert ist, zum Aufspüren von Schwachstellen verwenden können.
Beispiel Docker-Datei
Das erste, was Sie für die Verwendung von Snyk zum Aufspüren von Sicherheitslücken benötigen, ist ein Docker-Image. In diesem Beispiel werden wir das folgende Docker-Image verwenden:
FROM python:3.4-alpine
HINZUFÜGEN . /code
WORKDIR /code
RUN pip install -r requirements.txt
8000 FREILEGEN CMD
["python", "app.py"]
Als Erstes müssen wir das Image lokal mit dem folgenden Befehl erzeugen:
docker build -t 0xyz0/python-app.
Jetzt haben wir ein Image zum Analysieren.
Scannen Sie das Image mit dem Docker-Client
Die Integration des Snyk-Dienstes in Docker macht diesen Prozess unglaublich einfach. Um den Scan zu starten, müssen Sie nur Folgendes ausführen:
docker scan 0***0/python-app
Daraufhin beginnt die Analyse, die je nach den gefundenen Schwachstellen eine mehr oder weniger umfangreiche Ausgabe und eine abschließende Zusammenfassung liefert:
Wie Sie sehen können, wird Ihnen nicht nur angezeigt, wie viele Sicherheitslücken gefunden wurden. Auch wenn Sie nach oben scrollen, können Sie sehen, um welche es sich handelt und wie kritisch sie sind, sondern es werden auch Empfehlungen für das Basis-Image ausgesprochen, das Sie verwenden sollten.
Sie können auch die Details der Schwachstelle in der Snyk Schwachstellen-Datenbank überprüfen.
In meinem Fall werden mir mehrere Alternativen angeboten, also werde ich mein Dockerfile mit der ersten Option ändern:
FROM python:3.7.11-slim
HINZUFÜGEN . /code
WORKDIR /code
RUN pip install -r anforderungen.txt
EXPOSE 8000
CMD ["python", "app.py"]
Wenn ich das Image neu baue und es scanne:
docker build -t 0***0/python-app . && docker scan 0***0/python-app
Sie werden sehen, dass die Ausgabe nun weniger Schwachstellen anzeigt und in diesem Fall sagt sie Ihnen, dass Sie derzeit das sicherere Basis-Image verwenden:
Sie können auch einen detaillierteren Bericht erhalten, wenn Sie die Dockerdatei, die das Image erzeugt, dem Befehl hinzufügen:
docker scan -f Dockerfile 0***0/python-app
Und Sie können sogar das Basis-Image von der Analyse ausschließen, falls Sie sich darauf konzentrieren wollen, was Sie falsch gemacht haben:
docker scan -f Dockerfile --exclude-base 0***0/python-app
Dieser Dienst kann auch mit den Docker Hub Repositories integriert werden:
Dafür müssen Sie jedoch eines der kostenpflichtigen Abonnements haben. Sie können ihn jedoch lokal mit dem kostenlosen Plan starten, den Sie nur haben, um bei Docker Hub angemeldet zu sein (er hat klare Scanning-Grenzen), während Sie entwickeln oder prüfen möchten, wie sicher ein Image eines Drittanbieters ist, das Sie verwenden möchten.
Verwendung von Snyk mit Github-Aktionen
Als Erstes müssen Sie ein Repository anlegen und darin einen Ordner erstellen.
.github / worflows /
Um Snyk Container in Github zu verwenden, müssen Sie als nächstes ein neues Image erstellen oder das Image übernehmen, das wir in Docker Hub erstellt haben. Um Snyk zu verwenden, müssen Sie ein neues Geheimnis namens SNYK_TOKEN erstellen. Um das Token zu erhalten, müssen Sie ein Konto bei Snyk erstellen. Unter Allgemeine Einstellungen, wo es heißt API Token, können Sie es schnell generieren.
Mit dem Token können Sie das Geheimnis auf Github erstellen und es in der Aktion verwenden. Nun müssen Sie den Namen des in Docker Hub erstellten Repositorys übergeben. Als nächstes müssen Sie die Nachricht übergeben, die gesendet werden soll. Sie können auf die Ergebnisse der Schritte zugreifen, um sie als Variable in der Nachricht zu verwenden.
mit:
args: 'Ein neuer Commit wurde gepusht. Bitte überprüfen Sie die Github-Aktion:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / Aktionen
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '
Wie führen Sie den gesamten Arbeitsablauf aus? Ganz einfach, indem Sie Master pushen. Github Action erkennt die Datei in .github / workflows /.
Letzte Worte 👈
Mit der zunehmenden Beliebtheit von Containern kommt es immer häufiger zu Sicherheitsverletzungen, die meist auf Fehlkonfigurationen bei der Bereitstellung der Container zurückzuführen sind. Snyk bietet ein effizientes und unkompliziertes Tool, das uns dabei helfen kann, Fehlkonfigurationen zu vermeiden und die häufigsten Schwachstellen in Docker-Images zu erkennen.