Der einfachste Weg, Schwachstellen in Docker-Images mit Snyk zu finden

Snyk ist ein Editor, der sich auf die Analyse von Schwachstellen im Code von Infrastrukturkonfigurationsdateien spezialisiert hat, einschließlich solcher, die in Containern und Anwendungspaketen vorhanden sind.

Snyk bietet zunächst eine Cloud-Plattform an, bietet aber verschiedene Produkte an.

Snyk OpenSource integriert sich über die CLI des Editors in einen Git-Flow. Nach dem Start erkennt die Software Schwachstellen, klassifiziert sie nach Sensitivitätsgrad und korrigiert automatisch bekannte Sicherheitsfehler. Diese Funktionalität kann in den Pull-Request-Zyklus integriert werden, um sie auf Code anzuwenden, der an Repositories gesendet wird.

Snyk Infrastructure as Code hingegen analysiert die Schwachstellen und behebt sie in den JSON- und YAML-Kubernetes-Konfigurationsdateien. Hier ermöglicht Ihnen eine Regel-Engine, die Empfindlichkeit von Erkennungen innerhalb von Git-Repositories gemäß den von den Administratoren festgelegten Parametern zu konfigurieren.

Mit Snyk 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, Containerregistrierungen und Kubernetes integriert werden.

Heute werden wir sehen, wie wir Snyk Container verwenden können, der in Docker integriert ist, um Schwachstellen zu erkennen.

Docker-Beispieldatei

Das erste, was Sie für die Verwendung von Snyk zur Erkennung von Schwachstellen benötigen, ist ein Docker-Image. In diesem Beispiel verwenden wir das folgende Docker-Image:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

Als erstes müssen wir das Bild mit dem folgenden Befehl lokal generieren:

docker build -t 0xyz0/python-app.

Jetzt haben wir ein Bild zum Analysieren.

  So löschen Sie das Marco Polo-Profil

Scannen Sie das Image vom Docker-Client

Die Integration des Snyk-Dienstes mit Docker macht diesen Prozess unglaublich einfach. Um den Scan zu starten, müssen Sie nur Folgendes ausführen:

docker scan 0***0/python-app

Dies beginnt mit der Analyse, wo je nach gefundenen Schwachstellen eine mehr oder weniger umfangreiche Ausgabe und eine abschließende Zusammenfassung zurückgegeben werden:

Der Docker-Scan zeigt alle Schwachstellen des Images

Wie Sie sehen können, teilt es Ihnen nicht nur mit, wie viele Schwachstellen es gefunden hat. Selbst wenn Sie nach oben scrollen, können Sie sehen, was sie sind und wie wichtig sie sind, aber es gibt auch Empfehlungen bezüglich des Basisbildes, das Sie verwenden sollten.

Sie können die Details der Sicherheitsanfälligkeit auch von überprüfen Snyk-Schwachstellendatenbank.

In meinem Fall bietet es mir mehrere Alternativen, also werde ich mein Dockerfile mit der ersten Option ändern:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Wenn ich das Image neu aufbaue und es scanne:

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Sie werden sehen, dass die Ausgabe jetzt weniger Schwachstellen zeigt, und in diesem Fall sagt es Ihnen, dass Sie derzeit das sicherere Basis-Image verwenden:

  So richten Sie einen PostgreSQL-Datenbankserver mit Webmin auf Ubuntu Server ein

Der Docker-Scan stellt sicher, dass Sie das sicherste Basis-Image verwenden

Sie können auch einen detaillierteren Bericht erhalten, wenn Sie die Docker-Datei, die das Bild generiert, zum Befehl hinzufügen:

docker scan -f Dockerfile 0***0/python-app

Und schließen Sie sogar das Basisbild von der Analyse aus, nur für den Fall, dass Sie sich darauf konzentrieren möchten, was Sie falsch gemacht haben:

docker scan -f Dockerfile --exclude-base 0***0/python-app

Dieser Dienst kann auch in die Docker-Hub-Repositories integriert werden:

Dafür müssen Sie jedoch eines der kostenpflichtigen Abonnements haben. Sie können es jedoch lokal starten, mit dem kostenlosen Plan, den Sie haben, nur um bei Docker Hub angemeldet zu sein (es hat klare Scan-Limits), während Sie entwickeln oder überprüfen möchten, wie sicher ein Image eines Drittanbieters ist, das Sie möchten verwenden.

Verwenden von Snyk mit Github-Aktionen

Als erstes müssen Sie ein Repository erstellen 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 verwenden, das wir in Docker Hub erstellt haben. Um Snyk zu verwenden, müssen Sie ein neues Geheimnis namens SNYK_TOKEN erstellen, und um das Token zu erhalten, müssen Sie ein Konto bei Snyk erstellen. In den allgemeinen Einstellungen, wo API-Token steht, können Sie es schnell generieren.

  So löschen Sie eine gesendete Nachricht auf Snapchat

Mit dem Token können Sie das Geheimnis auf Github erstellen und in der Aktion verwenden. Jetzt müssen Sie ihm den Namen des Repositorys übergeben, das in Docker Hub erstellt wurde. Als nächstes müssen Sie die zu sendende Nachricht übergeben. Sie können auf die Ausgaben der Schritte zugreifen, um sie als Variable in der Nachricht zu verwenden.

with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

Wie wird der gesamte Workflow ausgeführt? Ganz einfach, indem Sie Master drücken. Github Action erkennt die Datei in .github / workflows /.

Schlussworte 👈

Mit der zunehmenden Popularität von Containern werden die Vorfälle von Sicherheitsverletzungen immer häufiger, von denen die meisten auf Fehlkonfigurationsfehler bei der Bereitstellung der Container zurückzuführen sind. Snyk bietet ein effizientes und unkompliziertes Tool, das uns helfen kann, Fehlkonfigurationsfehler zu vermeiden und die häufigsten Schwachstellen in Docker-Images zu erkennen.