In immer mehr Unternehmen steckt die Softwareentwicklung im Umbruch: Klassische Wasserfall-Methoden werden durch agile Vorgehensweisen wie DevOps ersetzt. Das Ziel: Die Softwareentwicklung zu beschleunigen und die Qualität der Anwendungen zu erhöhen. Dabei laufen die Prozesse der Entwicklung (Dev) und der Bereitstellung (Ops) von Software parallel zueinander, ohne Unterbrechung und im Idealfall möglichst reibungslos. Dieser Ansatz verknüpft Continuous Integration (CI)-, Continuous Delivery (CD) und Continuous Deployment (CD) von Softwarecode zu einem Gesamtsystem agiler und kontinuierlicher Weiterentwicklung von Anwendungen.
Allerdings werden die Vorteile der DevOps-Methodik oft nicht voll ausgeschöpft, da wichtige Aspekte nicht mit einbezogen werden - vor allem die Sicherheit. Kurze, schnell getaktete Release- und Bereitstellungszyklen lassen vielfach keine Zeit für Sicherheitstests. So kommen mit jeder Aktualisierung einer mittels DevOps entwickelten Software nicht nur Verbesserungen hinzu, sondern auch potenziell neue Fehler und Sicherheitslücken. Das Resultat: Unter Zeitdruck entwickelter und unzureichend getesteter Softwarecode birgt für die Unternehmen kaum zu kalkulierende Risiken.
Da das Thema Sicherheit für die meisten Unternehmen in den zurückliegenden Jahren eine immer höhere Priorität bekommen hat, ist aus Sicht von Experten die Zeit reif für DevSecOps. Der Begriff setzt sich zusammen aus Development, Security und Operations. Im Rahmen der letztjährigen DigiCert-Umfrage "Making Security Agile" haben 88 Prozent der rund 300 befragten US-Unternehmen angegeben, dass es wichtig sei, Sicherheit in DevOps-Prozesse zu integrieren. Dem Bericht zufolge drohen den Anwenderunternehmen verschiedene Gefahren, wenn die Entwickler den Security-Aspekt nicht von Beginn an mit berücksichtigen: nicht nur zusätzliche Sicherheitsrisiken, sondern auch höhere Kosten und längere Auslieferungszyklen.
DevSecOps ist Teil einer Evolution
Im Kern geht es bei DevOps darum, die Softwareentwicklung durch die Automatisierung von Integrations-, Test- und Bereitstellungsprozessen kontinuierlich iterativ zu gestalten. Damit verändern sich die Unternehmenskultur und die Erwartungen an die Softwareentwicklungsteams grundlegend.
Lesen Sie mehr zum Thema DevOps:
Ein Schlüsselprinzip von DevOps ist es, kontinuierlich Code bereitzustellen und mit anderen Bestandteilen zu integrieren. Das läuft auf einen in viele Schleifen organisierten Entwicklungsprozess hinaus, der mit automatisierten Tests und Feedback arbeitet. Dieses Vorgehen hat sich für viele Unternehmen als wesentlich effizienter erwiesen als klassische Entwicklungsmethoden mit langen Projektplänen, die am Ende doch haarscharf an den Bedürfnissen der Anwender vorbeigingen. Gelingt es, die Sicherheitsaspekte von Beginn an mit zu berücksichtigen, wird DevOps noch einmal effizienter.
Tiefer Graben zwischen Sicherheit und Entwicklung
Obwohl DevOps zu kürzeren Entwicklungszyklen und einer höheren Agilität führt, blieb das Sicherheitsthema in der Vergangenheit oft außen vor. So war in agilen Organisationen oft unklar, wann der Code auf Schwachstellen überprüft werden soll. Tatsächlich scheint es zudem einen tiefen kulturellen und organisatorischen Graben zwischen den Bereichen Sicherheit und Entwicklung zu geben.
Alles über Agilität und Führung finden Sie hier in unserem Insider-PDF
Diese Trennung darf es künftig nicht mehr geben. Denn es wird immer wichtiger, dass sich die Sicherheitsteams von Anfang an in die DevOps-Prozesse einklinken. Die folgenden Tipps helfen dabei, diese Verknüpfung zu schaffen.
1. Plan für den Kulturwandel
Kulturelle und organisatorische Veränderungen sind der Schlüssel für eine erfolgreiche Implementierung von DevSecOps. Das Hauptziel muss sein, eine Kultur zu fördern, in der Entwicklung und Betrieb gemeinsam Verantwortung für die Sicherheit übernehmen. Das erfordert ein Umdenken in allen Abteilungen - und es braucht einen Plan. Folgende Schritte können den Chief Security Officers (CSOs) und Chief Information Security Officers (CISOs) dabei helfen, diesen Prozess voranzutreiben:
Lernen Sie die Besonderheiten von DevOps und DevSecOps kennen.
Knüpfen Sie Partnerschaften mit den Verantwortlichen aus anderen Unternehmensbereichen wie Produktion oder Entwicklung.
Ein funktionsübergreifendes Meeting kann helfen, die Sicherheitsanforderungen im Rahmen des gesamten Entwicklungs- und Betriebsprozesses zu überprüfen.
Das Sicherheitsteam steht wahrscheinlich vor der größten Herausforderung bei der Umstellung auf DevSecOps, und sollte daher frühzeitig mit an Bord geholt werden. Es sollte eine beratende Rolle übernehmen, da Softwareingenieure mehr Verantwortung für die Sicherheit ihres Codes tragen müssen.
DevSecOps setzt voll und ganz auf Zusammenarbeit. Das kann zu Veränderungen in der Organisation eines Unternehmens führen und damit zu einer großen Herausforderung werden.
IT-Sicherheitsverantwortliche in Unternehmen neigen schnell dazu, "nein" zu sagen - oft aus gutem Grund, weil sie nämlich zu spät ins Spiel kamen. "Die größte kulturelle Herausforderung für DevSecOps besteht darin, die Kultur des Neinsagens abzuschaffen, um gemeinsam Probleme zu lösen und Teams darin zu stärken sich kontinuierlich zu verbessern", sagt Eric Johnson, Leiter des Anwendungs- und Sicherheits-Curriculums am SANS-Institut. Normalerweise obliegt es den CSOs/CISOs, hier die Führung zu übernehmen. Wenn Mitglieder des Sicherheitsteams schon die rote Flagge hissen müssen, sollten sie versuchen, Alternativen vorzuschlagen und Teil einer Lösung zu sein.
Mitarbeiter müssen bei der Umstellung auf DevSecOps mit einem gut geplanten Change Management unterstützt werden.
Eine Reorganisation kann ebenso notwendig werden wie die Einstellung neuer Mitarbeiter mit DevOps-Erfahrung.
2. Prozesse neu abbilden
"Aus organisatorischer Sicht benötigt DevSecOps Sicherheits- und Compliance-Teams, um ihre Prozesse, Richtlinien und Anforderungen in die DevOps-Workflows zu integrieren", konstatiert Johnson. DevSecOps werde nicht funktionieren, wenn dem Security-Team das Wissen über Entwicklungs- und Operations-Engineering-Prozesse, Technologien und Tools fehle.
Einer der wichtigsten Grundsätze von DevSecOps besagt, dass Sicherheitsanalysen und -tests möglichst früh im Entwicklungsprozess stattfinden müssen. Die Mitglieder des Sicherheitsteams sollten daher vom ersten Tag an bei jedem einzelnen Vorhaben mit am Tisch sitzen und dort auch ihren Teil der Verantwortung für den Erfolg übernehmen.
Auch die Entwickler müssen im Rahmen von DevSecOps den Sicherheitsaspekt neben den Funktionen ihres Codes als zentrale Arbeitsaufgabe begreifen. Das braucht anderes Know-how und setzt einen Wissensaustausch zwischen Entwicklern und Sicherheitsexperten voraus - in einer Kultur der Offenheit und Transparenz. Die Security-Teams müssen nicht nur ihr Wissen beisteuern, sondern auch Regeln für Prozesse erstellen. Damit werden technische Rahmenbedingungen abgesteckt, die dafür sorgen, dass gesetzliche und regulatorische Anforderungen sowie das Risikomanagement berücksichtigt werden.
Standardprozesse, die universell auf alle Unternehmen passen, gibt es dafür nicht. Die Berater von Booz Allen empfehlen "Fahrpläne, die simulieren, wie ein Nutzer eine bestimmte Funktion verwendet". Sind die Reaktionsmuster und Vorgehensweisen einmal etabliert - darunter insbesondere Richtlinien zur Code-Optimierung, Threat-modeling, Rollbacks und fest definierte Eskalationsstufen - wird Security zur gewohnten Routine.
3. Automatisieren für mehr Effizienz und Genauigkeit
Automatisierung ist ein zentrales Thema von DevOps, und das setzt sich in DevSecOps fort. Stichwort "Sicherheit als Code". Dabei geht es beispielsweise darum, Sicherheitstests und andere Stationen im Entwicklungsprozess so weit wie möglich zu automatisieren sowie sichere gemeinsame Code-Repositories für die Software-Entwickler zu schaffen.
Automatisierte Prozesse können den Sicherheitsaspekt im Modell der DevSecOps erleichtern: Enthält eine Applikation Komponenten, die Angriffsflächen bieten, muss dies durch automatisierte Security-Tests vor dem Check-in der Software erkannt und korrigiert werden. Systematische Sicherheitsscans können schon während des Programmiervorgangs Sicherheitsprobleme aufdecken, die sich dann schnell und effizient beheben lassen. Darüber hinaus kann die Integration von regelmäßigen Sicherheitstests, beispielsweise auch Black-Box-Tests, automatisiert werden. So lassen sich Schwachstellen frühzeitig erkennen.
Auch nach der Implementierung kann eine automatische Echtzeit-Überwachung von Anwendungen helfen, verdächtige Aktivitäten oder Datenabfragen zu identifizieren. Dadurch können Unternehmen im Ernstfall schnell reagieren und aufgezeigte Schwachstellen schließen.
Insgesamt gilt es, die Sicherheitsprozesse zu optimieren und mit der Geschwindigkeit innerhalb der DevOps-Entwicklungspipeline in Einklang zu bringen. Das muss eine Gemeinschaftsarbeit von Security, Entwicklung und Operations sein. Da es sich hierbei um einen Schlüsselaspekt für DevSecOps handelt, sollten die Unternehmen darauf achten, gute Leute darauf anzusetzen.
4. Software-Tools klug auswählen
Bei den ausgewählten Tools ist es wichtig, dass sie sich einfach und effektiv mit den DevOps-Entwicklungsprozessen und anderen bereits vorhandenen Werkzeugen kombinieren lassen. Eine wichtige Rolle spielen natürlich auch die Funktionen der Tools und wie gut sich diese automatisieren lassen.
Das SANS Institute hat eine Übersicht zusammengestellt, die ein breites Spektrum an DevOps- und DevSecOps-Tools aufzeigt. Der Werkzeugkasten ist nach Anwendungen und den verschiedenen Stationen im Entwicklungsprozess geordnet. Folgende Disziplinen und Tools sollten Anwender in Betracht ziehen, um ihren DevOps-Entwicklungsprozess abzusichern.
Pre-Commit Security Hooks: Code-Checker, um nach geheimen Informationen (private Schlüssel, Systempasswörter, Cloud Access Keys etc.) zu suchen, bevor der Code an die Versionskontrolle übertragen wird.
Pre-Commit Code Scanning: Code-Editoren wie Atom, IntelliJ und Visual Studio verfügen über Sicherheits-Plugins, die bereits erste Sicherheitsprüfungen erlauben während der Code noch von den Entwicklern geschrieben wird.
Manual Security Peer Review: Code-Review-Tools wie GitHub, GitLab und Bitbucket bieten integrierte Funktionen, um den Code bei möglicherweise riskanten Veränderungen manuell auf seine Sicherheit hin zu prüfen.
Static Source Code Scanning: Werkzeuge, um Quellcode-Dateien (Infrastrukturvorlagen, Anwendungsquellcode) laufend im Entwicklungsprozess auf Sicherheitslücken hin zu prüfen.
Security Unit Tests: Benutzerdefinierte Sicherheitstests, die von den Sicherheits- und Entwicklerteams geschrieben werden, um im Falle von Missbrauch und negativen Testfällen rechtzeitig reagieren zu können.
Dependency Management Scans: Scannen von Open-Source-Infrastrukturvorlagen und -Anwendungskomponenten auf bekannte Schwachstellen.
Container Security Scanning: Da sich Container-Techniken wie zum Beispiel Docker auch in der DevOps-Welt immer weiter verbreiten, müssen die Sicherheitsteams Container-Images auf Sicherheitslücken, unsichere Konfigurationen und die Einhaltung von Richtlinien analysiert werden.
Dynamic Application Security Testing: Scannen einer laufenden Anwendung auf häufige Sicherheitslücken und Fehlkonfigurationen. Akzeptanzkriterien lassen sich durchsetzen mit Tools wie Gauntlt oder BDD Security.
Infrastructure Acceptance Tests: Infrastruktur-Akzeptanztests können Images gegen gehärtete Richtlinien prüfen und verifizieren. Das funktioniert mit Tools wie InSpec und OpenSCAP.
Secrets Management: Bereitstellung und Speicherung lassen sich mit Tools wie Vault, Conjure, AWS KMS und Azure Key Vault automatisieren.
Continuous Monitoring: Überwachung der Produktionsumgebung auf Schwachstellen, Anomalien und laufende Angriffe mit Tools wie statsd, graphite und grafana.
5. Erfolg messen
Für eine erfolgreiche DevSecOps-Implementierung ist es wichtig, im Vorfeld eines solchen Großprojekts Metriken zu definieren. Nur so lässt sich messen und feststellen, ob sich Aufwand und Investitionen lohnen. Das Problem dabei: Derzeit sind praktisch keine Tools oder Maßstäbe verfügbar, die Anwenderunternehmen bei der Prüfung von DevSecOps-Vorhaben anlegen könnten.
Die Analysten von Booz Allen empfehlen, folgende Key Performance Indicators (KPIs) zu prüfen: Auslieferungsdauer, Anzahl und Häufigkeit der Auslieferungen, mittlere Wiederherstellungszeit und prozentuale Abweichungen in der Anzahl der Fehler. Einige automatisierte Scanning-Lösungen, die den Code automatisiert auf seine Qualität hin prüfen, liefern eine Art Sicherheitscode-Qualitätskennzahl, die sich auch als Metrik verwenden lässt. Eine Kombination dieser Datenpunkte und Maßstäbe ist vermutlich die derzeit beste Kennzahl, um zu überprüfen, wie gut der eigene DevSecOps-Ansatz funktioniert.
Fazit
Gerade im Hinblick auf neue Entwicklungsparadigmen bildet der Umstieg auf DevSecOps eine der wichtigsten Grundlagen der digitalen Transformation.Die größte Herausforderung liegt vermutlich darin, die Veränderung von DevOps zu DevSecOps richtig im Team zu verankern. Es gilt, die Mitarbeiter abzuholen und den Prozess nicht nur aus technologischer, sondern auch aus Management-Sicht vollständig zu durchdenken.
Die Frage, ob sich Agilität und Sicherheit verbinden lassen, lässt sich mit einem klaren Ja beantworten. Zwar erfordert der Schritt von DevOps zu DevSecOps am Anfang einen gewissen Aufwand. Dieser lohnt sich - vor allem langfristig. Denn das Unternehmen sichert damit nicht nur das Tempo der eigenen Innovation und Weiterentwicklung, sondern schafft damit auch mehr Sicherheit durch eine schnellere Reaktionsfähigkeit und die Vernetzung von Wissen. So funktionieren Agilität und Sicherheit miteinander, und beide profitieren auch voneinander.
Weitere Informationsquellen für DevSecOps:
Jim Byrd: DevOpsSec (ebook)
Laura Bell, Michael Brunton-Spall, Rich Smith und Jim Bird: Agile Application Security
John Willis: DevOps Culture (Part 1)
Julien Vehent: Securing DevOps, Safe services in the Cloud
Fabian Lim: Securing the Continuous Integration Continuous Deployment (CICD) Pipeline
DigiCert Umfrage: Making Security Agile
CA-Blog: "DevSecOps: Das Was und Warum eines Trends" und "7 Tipps zum Aufbau einer DevSecOps-Kultur"