Hinweis: Obwohl JavaScript für diese Website nicht unbedingt erforderlich ist, werden Ihre Interaktionsmöglichkeiten mit den Inhalten eingeschränkt sein. Bitte aktivieren Sie JavaScript für das volle Erlebnis.

Sichere Python-Laufzeitumgebungen

Bei der Entwicklung in Python ist die einfachste und schnellste Lösung für viele Entwickler, sich eine beliebige vertrauenswürdige, paketierte Laufzeitumgebung zu schnappen, wobei eine Laufzeitumgebung als die Python-Sprache selbst + beliebte Drittanbieterpakete + der Interpreter definiert ist. Auf diese Weise können Sie vermeiden, dass Sie

  • beurteilen müssen, welche Drittanbieterpakete vertrauenswürdig sind
  • die Pakete von Grund auf neu kompilieren müssen
  • alle Abhängigkeiten auflösen müssen

Für die meisten Python-Entwickler bedeutete dies typischerweise, Anaconda oder ActiveStates Python, ActivePython, oder ein ähnliches kommerzielles Angebot herunterzuladen. Viele dieser Distributionen kommen mit Hunderten von vor-kompilierten und vor-verifizierten beliebten Python-Bibliotheken und können für eine Vielzahl von Projekten verwendet werden. Natürlich werden Sie für jedes einzelne Projekt wahrscheinlich weniger als die Hälfte der enthaltenen Pakete in Ihrer Anwendung verwenden.

Abhängig von Ihrem Softwareentwicklungsprozess erstellen Sie möglicherweise separate Requirements.txt- oder Pipfile.lock-Dateien für die Produktion. Bei ActiveState können jedoch viele unserer Unternehmenskunden ihre Python-Laufzeitumgebung nicht ändern (geschweige denn eine neue erstellen), ohne die Anwälte einzuschalten, um neu zu bewerten, ob die Open-Source-Lizenzen mit der Unternehmensrichtlinie kollidieren, was ihre Markteinführungszeit verzögert. Infolgedessen wird die Laufzeit, mit der sie entwickeln, das, was getestet wird, das, was in die Produktion überführt wird.

Das wachsende Sicherheitsproblem

Die neuesten Sicherheitsberichte von Open-Source-Sicherheitsanbietern wie Synopsys (2018 Open Source Security and Risk Analysis https://www.synopsys.com/content/dam/synopsys/sig-assets/reports/2018-ossra.pdf) und Snyk (The State of Open Source Security - 2019 https://snyk.io/opensourcesecurity-2019/) weisen darauf hin, dass die Anzahl der gemeldeten Open-Source-Schwachstellen gegenüber einer stetig wachsenden Anzahl von Drittanbieterbibliotheken stetig zunimmt. Tatsächlich zählt WhiteSource Python inzwischen als die fünftunsicherste Programmiersprache (https://www.whitesourcesoftware.com/most-secure-programming-languages/). Und wie Abbildung 1 zeigt, steigt die Anzahl der Sicherheitsverletzungen von Anwendungen jedes Jahr weiter an.

Data Breaches by Industry
Abbildung 1: Datendiebstahl nach Branchen

Sicherlich können nicht all diese Probleme auf aufgeblähte Laufzeitumgebungen zurückgeführt werden, aber sie helfen der Sache nicht. Dies gilt insbesondere, wenn Schwachstellen in Paketen entdeckt werden, die in der Laufzeitumgebung enthalten waren, aber von der Anwendung nicht tatsächlich genutzt wurden. Diese "False Positives" müssen immer noch untersucht und behoben werden.

Unglücklicherweise müssen diese Arten von Schwachstellen im Wettbewerb mit neuen Funktionen und Fehlerbehebungen um wertvolle Geschwindigkeits-Punkte in jedem Entwicklungs-Sprint kämpfen. Infolgedessen werden Sicherheitsaufgaben typischerweise abgewertet und in den nächsten Sprint verschoben, wo sie erneut um Geschwindigkeits-Punkte kämpfen müssen. Tatsächlich zeigt eine aktuelle Studie https://snyk.io/opensourcesecurity-2019/, dass die mittlere Zeit von der Entdeckung einer Schwachstelle bis zu ihrer Behebung über 2 Jahre beträgt.

Minimierung des Laufzeitmanagements

Python-Entwickler sind nicht einzigartig – wir würden es vorziehen, Sicherheitspraktiken in Bezug auf Laufzeitumgebungen zu befolgen, aber nicht, wenn dies uns daran hindert, unsere Sprint-Coding-Aufgaben zu erledigen.

Bei ActiveState sind wir uns des Aufwands, der mit der Erstellung und Wartung mehrerer Laufzeitumgebungen verbunden ist, sehr bewusst (das ist unser Beruf). Aber für viele Unternehmen kann es einfach zu kostspielig sein, maßgeschneiderte Laufzeitumgebungen für jedes Projekt zu erstellen, geschweige denn Laufzeitumgebungen, die maßgeschneidert sind für

  • Entwicklung – einschließlich all der Pakete, mit denen Entwickler oder Datenwissenschaftler experimentieren möchten, die aber nie ausgeliefert werden.
  • Testen – einschließlich aller funktionalen und integrierten Testinstanzen (bei denen die Laufzeitumgebung alle Test-Harnesses enthalten muss), plus aller Sicherheits- und Leistungstestinstanzen (bei denen die Laufzeitumgebungen nur die Pakete enthalten sollten, die in der Produktion bereitgestellt werden).
  • Produktion – die die kleinste Laufzeitumgebung enthalten sollte, die die Anwendung unterstützt, um die potenzielle Angriffsfläche zu minimieren.

Die ActiveState Platform bietet eine neue Option für Python-Entwickler. Sie macht es für jeden – nicht nur für Build-Ingenieure – einfach, automatisch Laufzeitumgebungen für ihr Projekt auf gängigen Plattformen zu erstellen. Nur

  1. Wählen Sie eine Python 3-Version
  2. Wählen Sie eine Plattform für die Bereitstellung (heute Linux, mit Windows, Mac und Docker in Kürze)
  3. Wählen Sie aus einer Reihe beliebter PyPI-Pakete, die Sie einschließen möchten

Die ActiveState Platform holt automatisch alle Abhängigkeiten, löst sie auf und baut Ihre Python-Laufzeitumgebung für Sie. Mit anderen Worten, eine einzelne Person kann in etwa einer Stunde Laufzeitumgebungen für jede Umgebung – Entwicklung, Test und Produktion – erstellen, in die ihr Projekt bereitgestellt wird. Dieselbe Aufgabe könnte ein Team von engagierten Build-Ingenieuren Wochen kosten.

Wichtiger ist, dass die ActiveState Platform Ihre Laufzeitumgebungen bald automatisch aktualisiert, sobald Schwachstellen gefunden und neue Pakete veröffentlicht werden, wodurch Ihr Arbeitsaufwand auf die Überprüfung gegen Ihre automatisierte CI/CD-Kette reduziert wird.

Um es auszuprobieren, können Sie sich unter https://platform.activestate.com/create-account für ein Konto anmelden.