Deine DevSecOps-Sicherheitscheckliste
Dein Team hat die DevOps-Methodik eingeführt, und du bist nun bereit, die Sicherheit im Vorfeld zu kontrollieren und sie dadurch näher an die Entwickler(innen) zu bringen. Entwickler(innen) finden und beheben Fehler mit größerer Wahrscheinlichkeit, wenn sie dies direkt in ihrem Workflow tun können. Es erfordert jedoch Planung, Geduld und Hartnäckigkeit, um lange bestehende Überzeugungen und Verzerrungen hinsichtlich der Sicherheit aufzubrechen.
Hier findest du eine zehnstufige DevSecOps-Sicherheitscheckliste, die dir helfen kann, jedes Team auf denselben Stand zu bringen.
Erkenne, warum Sicherheit Herausforderungen bei der Entwicklung mit sich bringt
In unserer globalen DevSecOps-Umfrage 2022 zeigte sich, dass sich die Kluft zwischen Entwickler(inne)n und Sicherheit zwar zunehmend schließt, es aber dennoch Reibungspunkte gibt. Ganze 57 % der Befragten gaben an, dass Sicherheit eine Leistungsmetrik für Entwickler(innen) in ihrem Unternehmen ist, aber 56 % sagten, dass es schwierig sei, die Entwickler(innen) dazu zu bringen, die Behebung von Sicherheitslücken im Code als Priorität anzusehen. Am Ende gaben 59 % an, dass Sicherheitslücken am ehesten von Sicherheitsteams aufgedeckt werden, nachdem der Code in einer Testumgebung zusammengeführt wurde. Man ist sich nicht einmal einig, wer für die Sicherheit letztendlich zuständig ist: 43 % der Sicherheitsprofis sagten, dass sie verantwortlich seien, aber 53 % gaben an, dass die Verantwortung bei allen liegt. Die Quintessenz: Es herrscht große Verwirrung. Der erste Schritt sollte sein, zu verstehen, was innerhalb deiner DevSecOps-Pipeline die größten Herausforderungen darstellt.
Richte alle auf ein gemeinsames Ziel aus
Bei so vielen unterschiedlichen Annahmen zu Sicherheit und der Verantwortlichkeit dafür ist es sinnvoll, dem Team klare Ziele vorzugeben, auf die hingearbeitet werden soll. Es hilft niemandem, die Sicherheit im Software-Lebenszyklus weiter nach vorne zu verschieben, wenn dein Team seine Verantwortlichkeiten nicht kennt und sich der Erwartungen nicht bewusst ist. Das Testen von mehr Code kann beispielsweise zu schnelleren Releases führen, sobald der Prozess reibungslos läuft. Das folgende Szenario ist ähnlich: Du setzt dir das Ziel, die Planung zu verbessern, und beziehst daher von Anfang an einen Sicherheits-Champion mit ein. Das bedeutet, dass die Sicherheit in jeden Schritt des Prozesses integriert wird, wodurch Reibungspunkte vermieden werden und in weitere Folge die Release-Zyklen beschleunigt werden. Ein erfolgreicher DevSecOps-Verfahren verbessert die Nachvollziehbarkeit der Verantwortlichkeiten auch unter Mitgliedern, die nicht zum Sicherheitsteam gehören, denn so wird eine Kultur aufgebaut, in der es in der Verantwortung jedes und jeder Einzelnen liegt, Sicherheitsrisiken zu reduzieren.
Führe ein Audit durch, um herauszufinden, wo Teams Zeit verschwenden
Ohne DevSecOps identifizieren Sicherheitsteams Sicherheitslücken mit ihren eigenen Tools. Das erfolgt typischerweise am Ende des Entwicklungszyklus. Die gefundenen Lücken werden dann an das Entwicklungsteam zurückgespielt, das sie beheben muss. Dieses Hin und Her verursacht konstante Reibung zwischen den beiden Teams und vergeudet Zeit durch ineffiziente Kommunikation. Wenn du verstehst, wie viel Zeit dein Team damit verschwendet, Sicherheitslücken nach dem Zusammenführen des Codes zu beheben, kannst du Muster erkennen und Anpassungen vornehmen, um eine Verbesserung zu erzielen. Wenn Sicherheitsteams beispielsweise Probleme haben, den Behebungsstatus von kritischen Sicherheitslücken nachzuverfolgen, müssen sie immer wieder beim Entwicklungsteam nachfragen, um den neuesten Stand zu erfahren. Das könnte darauf schließen lassen, dass ein einziges Dashboard erforderlich ist, in dem sowohl Entwickler(innen) als auch Sicherheitsprofis den Behebungsstatus von kritischen Sicherheitslücken sehen.
Besprich Probleme und Engpässe
Die Sicherheit kann ein Engpass bei der schnellen Veröffentlichung von Software sein, aber sie ist viel zu wichtig, um sie zu verringern oder ganz zu ignorieren. DevSecOps verspricht, die Sicherheit früher in den Lebenszyklus der Softwareentwicklung zu integrieren – aber bis dorthin ist es ein weiter Weg. Ein wichtiger Schritt ist es, alle Beteiligten – also Entwicklungs-, Sicherheits- und Betriebsteams – zusammenzuführen und ehrlich über Probleme und Engpässe bei der Sicherheit zu sprechen. Sobald alles besprochen ist, erstellst du einen Plan, um die einzelnen Aspekte zu lösen, und führst diesen Plan dann auch aus. Dieses Gespräch trägt dazu bei, dass die Stimmen aller gehört werden und Probleme identifiziert werden, die aus den reinen Daten vielleicht nicht ersichtlich sind.
Nimm kleine, inkrementelle Code-Änderungen vor
Iterationen ist einer der wichtigsten Werte von GitLab, d. h. bei Änderungen erfolgen winzige, schnell umzusetzende Anpassungen, auf denen dann aufgebaut wird. Das gleiche Prinzip gilt beim Umstieg von DevOps zu DevSecOps. Kleine, inkrementelle Codeänderungen sind einfacher zur überprüfen und auf ihre Sicherheit zu testen und können schneller gelauncht werden als monolithische Projektänderungen. Wenn du Code in kleinen Teilen oder Einheiten erstellst und dann automatisierte Tests an diesen Einheiten durchführst, sobald sie commitet sind, können Entwickler(innen) Sicherheitslücken auf der Stelle beheben, anstatt tage-, wochen- oder sogar monatelang auf Feedback zu warten. Durch regelmäßige Tests sparst du im Gesamten viel Zeit, wenn die fertige App getestet wird, bevor sie in die Produktion gepusht wird.
Automatisiere und Integriere
Automatisierungen und Integrationen sind wichtig für DevOps, aber sie sorgen auch dafür, dass Sicherheitsscans ein leistungsstarkes Tool sind. Wenn Scans überall durchgeführt werden, wird jede Codeänderung überprüft und Sicherheitslücken können dabei viel einfacher entdeckt werden. Die Scans müssen in den Workflow der Entwickler(innen) integriert sein. Durch diese integrierte Sicherheit können Entwickler(innen) Sicherheitslücken finden und beheben, bevor der Code an jemand anderen weitergegeben wird. Dies reduziert auch das Volumen an Sicherheitstickets, die an das Sicherheitsteam gesendet werden, und optimiert dessen Überprüfungsprozess.
Ermögliche Entwickler(inne)n Zugriff auf die Ergebnisse von Sicherheitsberichten
Anstatt die Ergebnisse von statischen Anwendungssicherheitstests (SAST) und dynamischen Anwendungssicherheitstests (DAST) nur den Sicherheitsteams zugänglich zu machen, solltest du diese Informationen mit dem ganzen Team und insbesondere mit den Entwickler(inne)n teilen. Dies ist wichtig für die Behebung von Sicherheitslücken, aber es hilft den Entwickler(inne)n auch, die nötigen Sicherheitsüberprüfungen in den Lebenszyklus der Softwareentwicklung zu integrieren.
Führe ein Audit der Sicherheitsprozesse im Wasserfall-Stil durch
Im traditionellen Sicherheitsansatz des Wasserfallmodells werden Sicherheitslücken typischerweise am Ende des Entwicklungszyklus gefunden. Nimm dir die Zeit, bestehende Sicherheits-Workflows innerhalb deines Software-Entwicklungsprozesses zu überprüfen. Wenn du Prozesse im Wasserfall-Stil findest, überleg dir, diese zu eliminieren oder zumindest deutlich zu reduzieren, damit du nicht mehr (oder nicht mehr so stark) von ihnen abhängig bist. Du solltest immer in der Lage sein, bei Bedarf die Richtung zu ändern: Halte dein Unternehmen flexibel.
Stelle sicher, dass das Sicherheitsteam einen Überblick über den Status der Sicherheitslücke hat.
Die globale DevSecOps-Umfrage 2022 hat gezeigt, dass die größte Herausforderung für Sicherheitsexperten darin besteht, die Behebung von Sicherheitslücken zu priorisieren. Zu den weiteren Bedenken gehörten die Anzahl falsch positiver Ergebnisse und die Schwierigkeit, den Status der Sicherheitslücke zu verfolgen. Dies könnte dazu beitragen, dass Sicherheitsexpert(inn)en die Zukunft eher negativ sehen: Nur 56 % gaben an, dass sie sich „eher vorbereitet“ oder „sehr vorbereitet“ für die Zukunft fühlen (etwa 20 Pronzentpunkte niedriger als die durchschnittlichen Antworten aus Entwicklungs- und Betriebsteams). Es ist klar, dass Sicherheitsteams einen besseren Überblick über gelöste und nicht gelöste Sicherheitslücken haben müssen und wissen müssen, wo die sich die Sicherheitslücken befinden, wer sie erstellt hat und welchen Status sie haben, damit sie behoben werden können.
Optimiere deine Tools in einer einzigen DevOps-Plattform
Es ist für alle schwierig, für die Sicherheit verantwortlich zu sein, wenn Teams nicht über die richtigen Tools verfügen. Der beste Weg, die Sicherheit im Vorfeld zu kontrollieren, ist eine durchgängige Plattform, mit der DevOps-Teams weg vom Wasserfall-Modell kommen. Sie hilft, die Kommunikation zu optimieren, Automatisierung und kontinuierliche Integration einzuführen und ist eine Single Source of Truth (einzige Quelle der Wahrheit) für die Ergebnisse von Sicherheitsscans und den Status kritischer Sicherheitslücken.
Bist du bereit?
Sieh dir an, was dein Team mit einer einheitlichen DevSecOps-Plattform erreichen könnte.