Erste Schritte mit Snyk für sichere Python-Entwicklung
4. August 2021
0 Min. LesezeitWenn Sie Python entwickeln und Ihre Anwendungen ganz einfach absichern möchten, sind Sie hier richtig! Mit Snyk sichern Sie den gesamten Code Ihrer Python-App ab – Ihren eigenen Code, die verwendeten Open-Source-Bibliotheken, Ihre Container und Ihre Infrastructure as Code (IaC) – indem Sie Snyk nahtlos in Ihre bestehenden Entwicklungs-Workflows integrieren.
Die Snyk-Plattform umfasst vier Produkte. Jedes davon unterstützt Sie dabei, die verschiedenen Bausteine Ihrer Python-App so reibungslos wie möglich abzusichern:
Snyk Code findet und behebt Sicherheits- und Qualitätsprobleme in Ihrem Python-Code.
Snyk Open Source findet und behebt Sicherheitslücken und Lizenzprobleme in den Open-Source-Python-Paketen, die Sie für Ihre App verwenden.
Snyk Container findet und behebt Sicherheitslücken in Ihren Python-Container-Images.
Snyk Infrastructure as Code findet und behebt Sicherheitslücken im Code, mit dem Sie die Bereitstellung Ihrer Python-Apps konfigurieren.
In diesem Artikel zeigen wir Ihnen, wie einfach Sie Snyks Sicherheitstests in Ihre bestehenden Arbeitsabläufe integrieren können. Der kostenlose Snyk-Tarif reicht mehr als aus, um die verschiedenen unten beschriebenen Schritte auszuprobieren – und eignet sich auch für jedes kleinere Projekt.
Sichern Sie Ihre Python-App von Anfang an ab
Je früher Sie als Entwickler Probleme erkennen, desto einfacher lassen sie sich beheben. Eine kritische Sicherheitslücke erst zu beheben, nachdem Sie Ihren Code bereits gepackt und ausgeliefert haben, kostet deutlich mehr Zeit, als sie frühzeitig im Entwicklungsprozess zu beheben.
Profi-Tipp: Snyk kann kostenlos ausprobiert und für Open Source genutzt werden. Um Snyk Open Source oder Snyk Code mit einem IDE-Plugin zu verwenden, müssen Sie Snyk keinen Zugriff auf Ihre GitHub-Repositories gewähren. Am einfachsten testen Sie Snyk, indem Sie ein kostenloses Konto einrichten und ein Open-Source-Repository scannen. Eine Installation ist nicht erforderlich, und die Integration ist in wenigen Sekunden eingerichtet.
Snyk bietet Ihnen verschiedene Möglichkeiten, Ihren Code schon sehr früh in der Entwicklung abzusichern – in Ihrer IDE, mit Advisor und über die Snyk CLI.
IDEs
Sie können Snyk auch nutzen, um Ihren Code direkt in Ihrer IDE abzusichern. Das Snyk-Plugin für PyCharm unterstützt zum Beispiel Snyk Open Source und Snyk Code. Damit finden und beheben Sie bekannte Sicherheitslücken in Ihren Open-Source-Abhängigkeiten sowie Sicherheitsprobleme und Bugs in Ihrem eigenen Code.
Das Plugin ist einfach einzurichten und kann wie jedes andere JetBrains-Plugin direkt in Ihrer IDE heruntergeladen und installiert werden.
Wählen Sie in PyCharm Preferences und dann Plugins, suchen Sie im JetBrains Marketplace nach Snyk und klicken Sie auf OK, um das Plugin herunterzuladen und zu installieren.
Verbinden Sie anschließend das Plugin mit Ihrem Snyk-Konto. Klicken Sie dazu in der Plugin-Ansicht auf die Schaltfläche Connect your IDE to Snyk und folgen Sie den Anweisungen zur Authentifizierung.
Das war’s schon! Jetzt müssen Sie nur noch einen Snyk-Test ausführen. Klicken Sie auf die Schaltfläche Analyze now!, um Snyks Sicherheitstest zu starten. Innerhalb weniger Sekunden zeigt das Plugin eine Liste aller gefundenen Problemtypen an, unterteilt in drei Kategorien:
Open Source Security: bekannte Sicherheitslücken in direkten und indirekten (transitiven) Open-Source-Abhängigkeiten, die Sie in Ihr Projekt einbinden
Code Security: Sicherheitslücken in Ihrem eigenen Code
Code Quality: Qualitätsprobleme in Ihrem eigenen Code

Bei Problemen in Ihrem eigenen Code zeigt das Plugin beispielsweise den Datenfluss an und verweist auf die relevanten Dateien und Codezeilen, die zum Problem führen. Klicken Sie auf den Dateinamen, um die Datei direkt an der Zeile zu öffnen, die das Problem verursacht. Die Datenflussanalyse hilft Ihnen, Probleme zu erkennen und nachzuvollziehen, wie sie sich durch die Anwendung ausbreiten – so werden auch komplexe Probleme verständlicher.
Doch das Plugin kann noch mehr. Es zeigt nicht nur, was im Code falsch ist, sondern liefert auch Beispiele dafür, wie andere das Problem behoben haben. So können Sie schneller handeln.

Snyk Advisor
Snyk Advisor ist ein kostenloses Online-Recherchetool, das Ihnen bei der Auswahl von Open-Source-Paketen und Container-Basis-Images hilft. Es umfasst alle Projekte von PyPI sowie Python-Basis-Images von Docker Hub. Als Python-Entwickler können Sie mit Snyk Advisor verschiedene Pakete und Images recherchieren und deren allgemeinen Zustand sowie Sicherheitsstatus prüfen, bevor Sie sie in Ihr Projekt aufnehmen.

Für das im obigen Schritt gescannte Projekt hätte eine Recherche zum Jinja2-Paket gezeigt, dass Version 3 nicht nur am beliebtesten, sondern auch frei von Sicherheitslücken ist.
CLI
Die Snyk CLI ist ein leistungsstarkes, kostenloses Tool, mit dem Sie Snyks Sicherheitsscans in Ihrer lokalen Entwicklungsumgebung ausführen können – manuell oder als Teil Ihrer CI/CD-Pipeline. Sie bietet zahlreiche Argumente, mit denen Sie bestimmte Details aus den Snyk-Scan-Ergebnissen abrufen und den Testprozess anpassen können.
Hinweis: Die Snyk CLI basiert auf Node.js und npm, SCOOP oder Homebrew. Diese Komponenten müssen installiert sein, bevor Sie die Snyk CLI verwenden können.
Die Snyk CLI ist einfach einzurichten. Sie können sie schnell mit npm oder Homebrew installieren. Anschließend müssen Sie sich nur noch mit Ihrem Snyk-Konto authentifizieren:
Ihr Python-Projekt zu testen, ist nur einen Schritt entfernt – führen Sie einfach den Befehl snyk test im Stammverzeichnis des Projekts aus.
Für Snyk Open Source-Tests müssen Sie außerdem die Abhängigkeiten installieren mit:
Profi-Tipp: Sie können die requirements.txt für ein Projekt erstellen, indem Sie die virtuelle Umgebung aktivieren und den Befehl pip freeze > requirements.txt verwenden.
Snyk liefert Ihnen nicht nur eine Liste anfälliger Abhängigkeiten und Lizenzprobleme, sondern auch zusätzliche Informationen zur Behebung – etwa empfohlene Versionen, auf die Sie bestimmte Abhängigkeiten aktualisieren sollten.
Im Fall von dem für diesen Artikel verwendeten Projekt meldet Snyk eine mittelschwere Sicherheitslücke, die durch Version 2.11.1 des Jinja-Pakets eingeführt wurde, und empfiehlt ein Minor-Update auf Version 2.11.3, um sie zu beheben.

Mit der Snyk CLI können Sie sich auch über neu veröffentlichte Sicherheitslücken oder neue Korrekturen für bekannte Sicherheitslücken benachrichtigen lassen. Verwenden Sie dazu:
„Die Ergebnisse finden Sie in der Snyk-App unter der angegebenen URL. Sie werden benachrichtigt, wenn neue relevante Sicherheitslücken bekannt werden.“

Mit derselben CLI können Sie Ihre Python-Container auf Sicherheitsprobleme und Ihre Infrastructure as Code (IaC) scannen. Die Unterstützung von Snyk Code in der CLI wird bald verfügbar sein – bleiben Sie dran!
Testen Sie mit demselben Projekt das Container-Image Ihrer Anwendung (Sie müssen das Image vor dem Test erstellen):
Die Snyk CLI scannt das Image auf Probleme und gibt Tipps zum Aktualisieren des Basis-Images.

Zum Schluss können Sie Ihren Code mit Snyk Code scannen. Verwenden Sie dazu den Befehl:
Die CLI scannt das lokale Projekt und zeigt die Ergebnisse an.

Weitere Tipps und Tricks zur Snyk CLI finden Sie im CLI-Spickzettel.
Snyks IDE-Plugins, Snyk Advisor und die Snyk CLI sind für Open-Source-Python-Projekte kostenlos und ermöglichen unbegrenzte Scans.
Integrieren Sie Sicherheit in Ihre Python-Repositories
Laut der letzten Python-Community-Umfrage aus dem Jahr 2019 nutzen 90 % der Python-Entwickler Source-Code-Management-Systeme (SCM) wie GitHub. Es wäre nicht überraschend, wenn dieser Anteil höher läge, würden wir Python-Entwicklern diese Frage 2021 stellen.
Da ein großer Teil Ihrer Entwicklungszeit und -prozesse in diesen Systemen stattfindet, kann es äußerst wertvoll sein, Sicherheit einfach zu integrieren, ohne die Entwicklung zu verlangsamen. Wie? Hier sind einige Beispiele:
Um zu verhindern, dass anfälliger Code in Ihr Python-Repository gelangt: Was wäre, wenn Sie jeden neuen Pull Request automatisch auf Probleme scannen könnten?
Damit Ihre Python-Anwendung zuverlässig und aktuell bleibt: Was wäre, wenn Sie automatisch Pull Requests zum Aktualisieren veralteter Python-Pakete auslösen könnten?
Damit Sie neu bekannt gewordene Sicherheitslücken schnell beheben können: Was wäre, wenn Sie eine Benachrichtigung und einen Pull Request mit der empfohlenen Korrektur erhalten könnten?
Um Sicherheit als Teil Ihres CI/CD-Prozesses zu automatisieren: Was wäre, wenn Sie Sicherheitstests als GitHub Action oder in Ihre Bitbucket-Pipelines integrieren könnten?
Um Ihren proprietären Code abzusichern: Was wäre, wenn Sie ihn schnell auf Sicherheitsprobleme scannen und nachvollziehen könnten, wie schädliche Daten durch Ihre App fließen – direkt in Ihrem eigenen Code?
Snyk bietet Ihnen all das. Mit wenigen Schritten können Sie Ihr Python-Projekt in Snyk importieren und so sicherstellen, dass es angemessen geschützt ist.
Gehen Sie in Snyk zu Integrations, wählen Sie GitHub aus und wählen Sie Ihr Python-Projekt aus, um es in Snyk zu importieren. Während des Imports scannt Snyk automatisch ALLE Komponenten Ihres Python-Projekts und zeigt sie auf der Seite „Projects“ als einzelne Teilprojekte an:

Wenn Sie beispielsweise die Datei deployment.yaml file öffnen, erhalten Sie Informationen zu Problemen, die Snyk Infrastructure as Code in den Kubernetes-Bereitstellungskonfigurationen Ihrer Anwendung gefunden hat.

Nach dem Import überwacht Snyk Ihr Python-Projekt kontinuierlich. Bei neuen Sicherheitslücken in Ihren Open-Source-Abhängigkeiten oder neuen Korrekturen für bestehende Sicherheitslücken wird automatisch ein Pull Request ausgelöst.

Snyk öffnet in verschiedenen weiteren Szenarien automatisch Pull Requests. Sie können Tempo und Häufigkeit der Auslösung steuern, damit Sie nicht von zu vielen Pull Requests überfordert werden. Weitere Informationen zu Snyks Behebungsvorschlägen finden Sie in der Snyk-Dokumentation.
Snyks SCM-Integrationen sind für Open-Source-Python-Projekte kostenlos und ermöglichen unbegrenzte Scans. Welche Snyk-Produkte unterstützt werden, unterscheidet sich je nach SCM.
Python-Sicherheit als Teil von CI/CD automatisieren
Die Integration von Python-Sicherheitstests in Ihren CI-Prozess ist eine hervorragende Möglichkeit, Sicherheitslücken zu erkennen, bevor Ihr Code in die Produktion gelangt. Diese zusätzliche Sicherheitsprüfung stellt sicher, dass Sie Probleme auch dann erkennen, wenn Sie in Ihrer lokalen Umgebung keine manuellen Tests ausgeführt haben.
Snyk lässt sich in alle führenden CI/CD-Tools wie Jenkins, CircleCI und TeamCity integrieren. Wie bereits erwähnt, kann die Snyk CLI als Schritt in jeder automatisierten Pipeline verwendet werden. Sehen wir uns ein Beispiel an: die Integration von Snyk-Sicherheitstests in einen GitHub-Actions-Workflow.
Snyk stellt eine Action für alle aktuellen Python-Versionen bereit, darunter Python 3.6, 3.7 und 3.8. In diesem Beispiel automatisieren wir mit der Action die Sicherheitstests für dasselbe Python-Projekt, das wir im gesamten Artikel getestet haben.
Legen Sie zunächst Ihr Snyk-API-Token in den Repository-Einstellungen als Secret fest (Settings Secrets). Öffnen Sie dann den Tab „Actions“ und erstellen Sie einen neuen benutzerdefinierten Workflow mit der Python-Snyk-Action:
Wie erwartet, schlug unser Build aufgrund derselben Sicherheitslücke fehl, die wir oben beim CLI-Test gefunden haben:

Da die Action auf der Snyk CLI basiert, können Sie alle unterstützten Argumente verwenden, um das Verhalten der Snyk-Sicherheitstests in Ihrem CI-Prozess anzupassen.
Entwickeln Sie schnell. Bleiben Sie sicher!
Python ist eine großartige Sprache für Entwickler, die schnell vorankommen möchten. Sie ist äußerst vielseitig und einfach zu schreiben, und es gibt eine Vielzahl von Open-Source-Bibliotheken, mit denen Sie Ihren Anwendungen schnell neue Funktionen hinzufügen können. Wenn es an der Zeit ist, Ihre App bereitzustellen, bieten Docker, Red Hat und andere zahlreiche Python-Container-Basis-Images, die sich einfach verwenden lassen. Außerdem können Sie Ihre Kubernetes- und Infrastrukturkonfigurationen sogar in Python schreiben.
Schnell zu arbeiten und sicher zu sein, schließt sich nicht aus. Wir hoffen, dieser Artikel hat gezeigt, wie einfach sich Sicherheit in Ihren bestehenden Python-Entwicklungsworkflow integrieren lässt – ob in Ihrer lokalen Entwicklungsumgebung, als fester Bestandteil Ihres Git-basierten Workflows oder zusammen mit Ihrem automatisierten Build-Prozess. Und das Wichtigste: ohne dass Sie langsamer werden müssen!
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.



