Lückenlos sicher entwickeln mit DevSecOps

Für durchgängige Security in der Softwareentwicklung bietet DevSecOps Maßnahmen, jeden Schritt von der Entwicklung bis zum Betrieb abzusichern.

In Pocket speichern vorlesen Druckansicht 19 Kommentare lesen

(Bild: bearsky23/shutterstock.com)

Lesezeit: 10 Min.
Von
  • Nicolas Byl
Inhaltsverzeichnis

Die rasante Entwicklung von DevSecOps verwundert nicht. Immerhin geben die Tech-Giganten und Startups den Takt vor, in der die IT sich weiterentwickelt. Viele traditionelle Organisationen haben dabei Schwierigkeiten hinterherzukommen, wollen und können aber naturgemäß an Sicherheit und Compliance nicht sparen. Automatisierung verspricht ihnen, zumindest einen Teil der Bürde abzunehmen. Mit engen Feedbackschleifen können sie versuchen, die eigenen Lieferzeiten ohne Abstriche bei der Sicherheit zu verkürzen.

Viele Organisationen verfolgen in ihrer Sicherheitsstrategie aber immer noch einen Ansatz, den man als die trügerische Sicherheit einer Burg bezeichnen kann. Oft gilt einfach alles per Definition als sicher, was innerhalb des eigenen Netzes geschieht. Analog zu Burgherren versuchen die Unternehmen ausschließlich, die umgebenden Mauern immer höher zu ziehen. Allerdings ist die Grundannahme inzwischen falsch, da im übertragenen Sinne das Burgtor ständig offensteht. In der vernetzten Welt gibt es eine kontinuierliche Kommunikation mit Kunden und Partnern, und die eigenen Mitarbeiterinnen und Mitarbeiter haben ihren Arbeitsplatz nicht unbedingt innerhalb der Burg.

Auf dem Weg von der Entwicklung bis zu den Endusern durchläuft der Code zahlreiche Stationen (Abb. 1).

Das müssen Unternehmen bei Sicherheitsmaßnahmen entlang des Wegs beachten, den Code zurücklegt. Schließlich liegen nicht mehr zwangsläufig alle Systeme im eigenen Netzwerk oder zumindest in einem einheitlichen Rechenzentrum oder derselben Cloud. Beispielsweise kommt beim Hosting des Codes ein Managed Service wie GitHub zum Einsatz, der Build-Server steht aus historischen Gründen im Netzwerkschrank und das Deployment landet schließlich beim Cloud-Provider der Wahl.

Das Absichern von Code kann mit Blick auf den Anfang der Kette bei der Entwicklung beginnen. Dort lassen sich Maßnahmen ergreifen, die den Code bereits beim Schreiben überprüfen und unmittelbar Rückmeldung geben. Dabei ist jedoch darauf zu achten, dass sie den Entwicklerinnen und Entwicklern nicht im Wege sind. Lange Reaktionszeiten des Systems aufgrund von Tests erschweren die Bearbeitung, womit die Akzeptanz sinken kann.

Sonderheft zu sicherer Softwareentwicklung

Dieser Artikel stammt aus dem iX-Developer-Sonderheft "Sichere Software entwickeln". Es behandelt auf 156 Seiten unter anderem die Themen Web-Application-Security, Codeanalyseverfahren und Cloud-Security. Der Schwerpunkt zu DevSecOps zeigt Methoden, Werkzeuge und Reifegradmodelle auf.

Für spezifische Programmiersprachen soll ein Artikel helfen, Speicherfehler in C++ aufzuspüren und zu vermeiden, und ein weiterer zeigt die Sicherheitskonzepte von Rust auf. Wer mit Java entwickelt, findet eine Übersicht der Änderungen an der Security von Java 11 bis Java 17.

Der Themenbereich Kryptografie geht von den Grundlagen über die Fallstricke beim Einbinden kryptografischer Verfahren in eigene Anwendungen bis zum Ausblick auf die Post-Quanten-Kryptografie.

Das Heft ist im heise Shop als PDF für 12,99 Euro verfügbar. Die gedruckte Ausgabe kostet 14,90 Euro. Ein Bundle aus gedruckter Ausgabe plus PDF ist ebenfalls verfügbar.

Ein gutes Beispiel für sinnvolle Maßnahmen sind Git Hooks, mit denen sich Code beim commit prüfen lässt. Sie greifen bei jedem Versuch, Änderungen lokal in das Repository zu überführen, und können schwerwiegende Probleme bei der Implementierung und vor der Weiterverarbeitung abfangen. Ein Beispiel hierfür können hartcodierte Credentials sein, die unter keinen Umständen in das Repository und dessen History gelangen sollten. Durch das Testen an dieser Stelle ist der Kontext beim Entwickeln noch vorhanden und eine zügige Änderung möglich.

Hilfreich beim Einbinden der Git Hooks ist das Framework pre-commit. Es bietet einen Rahmen, Hooks zu erstellen und zu verteilen, ohne sich in die Untiefen der Shell-Programmierung zu begeben.

Sobald der Code erstellt ist, bietet sich vor der endgültigen Übernahme in eine Mainline oder sogar in ein Release an, Änderungen durch ein zweites Augenpaar zu prüfen. Solche Code-Reviews können als manuelle Maßnahmen verhindern, dass Mitarbeiterinnen oder Mitarbeiter beispielsweise einen Bitcoin-Miner in das Produktionssystem einbauen. Neben dem Sicherheitsaspekt kommt die Maßnahme dem Wissenstransfer im Team und der allgemeinen Qualitätskontrolle zugute.

Zur Nachvollziehbarkeit – vor allem in späteren Stationen des Codes – kann eine weitere, selten genutzte Funktion von Git dienen: das Signieren von Commits. Üblicherweise speichern Teams beim Erzeugen von Commits in Git zwar Namen und E-Mail-Adresse, prüfen aber nicht, wer die Metadaten erzeugt. Daher sollte, gerade in Umgebungen mit hohen Compliance-Anforderungen, das Signieren über GPG-Keys zwingend erforderlich sein, um eine kryptografische Validierung des Verfassers beziehungsweise der Verfasserin zu ermöglichen. USB-Sticks mit integrierter PGP-Karte wie der Yubikey können ein weiteres Sicherheitsnetz schaffen, um das Einschleusen von gefährlichem Code zu erschweren.