Sicherheit in die agile Entwicklung und CI/CD integrieren

Richten Sie sich an DevSecOps und Shift-Left Security aus, um die Codierungspraktiken zu verbessern, Schwachstellen in der Entwicklung zu beseitigen und hochsichere Anwendungen für die Produktion bereitzustellen. [...]

Sicherheit sollte auch bei der agilen Anwendungsentwicklung an oberster Stelle stehen (c) Pixabay.com

Devops-Praktiken entstanden aufgrund der kulturellen, funktionalen und technischen Grenzen zwischen den Entwicklungsteams, die regelmäßig veröffentlichen wollen, und den Einsatzteams, die Zuverlässigkeit und Stabilität bewahren müssen. Die Devops-Kultur befasst sich mit der notwendigen Denkweise, der Zusammenarbeit und den Praktiken, um beide Ziele zu erreichen, und die Devops-Praktiken – einschließlich Continuous Integration and Delivery (CI/CD), Infrastructure as Code (IaC) und AIOps, das maschinelles Lernen bei der Anwendungsüberwachung nutzt – ermöglichen die Implementierung.

Als immer mehr Menschen und Unternehmen Devops übernahmen, wurde klar, dass der Begriff „Devops“ längst nicht mehr die gesamte Breite der Bewegung, ihrer Praktiken und Anforderungen beschreibt. Ich habe schon früher die Notwendigkeit von DevQaOps betont und, wo es möglich war, Shift-Left-Testpraktiken empfohlen.

Aber ebenso wichtig, wenn nicht noch wichtiger, ist die Notwendigkeit, jeden Einzelnen für die Sicherheit verantwortlich zu machen. Die Verlagerung der Sicherheit in die Entwicklung und den Betrieb, oder DevSecOps, hilft Ihnen, dies zu erreichen.

Software-Sicherheit beginnt bei den Entwicklern

Vor DevOps implementierten die Entwicklerteams Sicherheitspraktiken oft in der Endphase eines Anwendungsfreigabeprozesses, normalerweise als ein von einem Change Advisory Board (CAB) erforderlicher Schritt. Da die Sicherheitsteams erst spät in den Prozess eingebunden wurden, hatten sie nur wenig Zeit, um die Geschäftsanforderungen zu lernen, technische Neuerungen zu verstehen, Risiken zu bewerten und Sicherheitstests durchzuführen. Wenn die Sicherheitsteams Probleme verschärften, stand nur wenig Zeit zur Verfügung, um diese zu beheben, ohne die Zeitvorgaben zu beeinträchtigen; und bei Problemen, die substanzielle Codeänderungen erforderten, standen die Entwicklungsteams vor schwierigen Entscheidungen.

Das späte Testen der Sicherheitsanforderungen im Rahmen des Freigabeprozesses kann für Entwicklerteams, die die Frequenz der Veröffentlichungen erhöhen oder in Mikrodienste investieren, ein kritisches Risiko darstellen. Im Accelerate: State of DevOps 2019 Report von DORA und Google Cloud werden 43% der Befragten als High oder Elite-Performer bezeichnet, die täglich oder wöchentlich Anwendungen veröffentlichen. Das ist eine deutliche Steigerung der Produktionsbereitstellungen, eine Rate, die einen integrierten Ansatz für die häufige und frühe Implementierung von Best Practices im Sicherheitsbereich erfordert.

Die Zusammenarbeit zwischen agilen Entwicklungsteams und infosec ist in den folgenden Bereichen erforderlich:

  • Überprüfung der Sicherheitsanforderungen, der Architektur und der Codierungspraktiken
  • Instrumentierung automatisierter Sicherheitstests in CI/CD-Pipelines
  • Überwachung von Anwendungen hinsichtlich Bedrohungen und Lösung von Sicherheitsfragen

Ich werde in den folgenden Abschnitten einige Hinweise für die Bewältigung jedes dieser Bereiche geben.

Zusammenarbeit bei Sicherheitsanforderungen, Architektur und Codierungspraktiken

Die Entwicklerteams und infosec müssen in Bezug auf die Sicherheit bereits in einem frühen Stadium des agilen Entwicklungsprozesses zusammenarbeiten – noch bevor die Programmierung beginnt. Im 2019 State of DevOps Report, der von Puppet, CircleCI und Splunk veröffentlicht wurde, identifizieren die Autoren mehrere bewährte Verfahren für die Zusammenarbeit von Entwicklungs- und infosec-Teams:

  • Sicherheits- und Entwicklungsteams sollten bei der Erstellung von Bedrohungsmodellen zusammenarbeiten.
  • Funktionale und nicht-funktionale Sicherheitsanforderungen sollten im Produkt-Backlog vorrangig behandelt werden.
  • Sicherheitsanforderungen sollten als Design-Einschränkungen behandelt werden.

Agile Entwicklungsteams können diese Praktiken umsetzen, indem sie höhere Anforderungen an Sicherheitsrisiken und Implementierungen für Sicherheitsüberprüfungen festlegen. Die Entwicklung sollte mit infosec in Bezug auf die Anforderungen, die Architektur, das Design und die Implementierung der Anwendungsteile zusammenarbeiten, die Benutzerinformationen erfassen, Berechtigungen verwalten oder sensible Daten verarbeiten.

Für weniger riskante Änderungen an der Codierung sollten agile Teams Kriterien für die Akzeptanz der Benutzer-Storys verfassen, die die Sicherheitsanforderungen und Einschränkungen von infosec berücksichtigen.

Agile Entwickler sollten auch die OWASP-Prinzipien für Sicherheit durch Design überprüfen, die mehrere bewährte Verfahren umfassen:

  • Etablierung sicherheitsorientierter Standardrichtlinien in Bereichen wie der Alterung von Passwörtern
  • Umsetzung des Prinzips des geringsten Privilegs bei der Definition von Rollen und der Zugriffsberechtigung auf Geschäftsprozesse
  • Verständnis von Sicherheitsprinzipien wie Aufgabentrennung, „kein Vertrauen“ in Dienste, Minimierung der Angriffsflächen und Gefährdung von Sicherheit durch Unklarheit
  • Schnelle Behebung von Sicherheitsproblemen durch Verständnis der Ursachen und Implementierung ganzheitlicher Lösungen

Schließlich sollten Entwicklungs- und infosec-Teams gemeinsam eine Referenz für die Kodierung bewährter Verfahren erstellen. Einige gute Ausgangspunkte sind die Kodierungspraktiken der Carnegie Mellon University, die Best Practices des Safe Computing an der University of Michigan und die Best Security Coding Practices für die verwendeten Programmiersprachen und Plattformen.

Wenn Sie Anwendungen in öffentlichen Clouds bereitstellen, sollten Sie auch die bewährten Verfahren wie AWS Security by Design, die Seite über die Entwicklung sicherer Anwendungen auf Azure und die Google Cloud-Sicherheitsübersicht einsehen.

Prüfung auf Sicherheit in CI/CD-Pipelines

Der nächste Schritt zur Berücksichtigung von Sicherheit ist die CI/CD-Pipeline, in der automatisierte Code- und Sicherheitsvalidierungen Builds brechen und Entwickler alarmieren können. Einige der gebräuchlicheren Sicherheitspraktiken und -tools, die bei der Erstellung von CI/CD-Pipeline-Standards zu berücksichtigen sind:

Static Application Security Testing (SAST)-Plattformen wie SonarQube, Veracode, Sentinel Source und Checkmarx scannen Code auf unterschiedliche Schwachstellen und Muster. SonarQube scannt beispielsweise nach schädlichen Eingaben (Fehleranalyse), Cross-Site-Scripting, Gefährdung sensibler Daten und bekannten Schwachstellen. Veracode gibt an, mehr als 11 Billionen Codezeilen gescannt zu haben und eine Fehlalarmquote von unter fünf Prozent zu haben. Checkmark arbeitet mit mehr als 20 Programmiersprachen und erfüllt die Anforderungen von PCI-DSS, HIPAA, FISMA und anderen behördlichen Standards. Alle drei Tools funktionieren über zahlreiche IDEs und CI/CD-Plattformen hinweg. Es gibt auch Open-Source-SAST-Tool-Optionen wie CodeWarrior und NodeJsScan. OWASP listet mehr als 20 SAST-Tools auf und gibt an, dass zu ihren Schwächen das Auffinden von Konfigurationsproblemen und Schwachstellen bei der Authentifizierung und Zugangskontrolle gehört.

Dependency-Scanning-Tools überprüfen die zugrundeliegenden Softwarekomponenten einschließlich Open-Source-Bibliotheken und melden Sicherheitslücken. GitLab Secure verfügt über SAST- und andere Sicherheits-Tools, einschließlich der Überprüfung von Abhängigkeiten, und arbeitet mit Java, JavaScript, PHP, Python, Ruby, Scala und Go. OWASP Dependency Check verfügt über Integrationen für Jenkins, CircleCI und SonarQube. Snyk Open Source Security Manager ermöglicht es Entwicklern, Open-Source-Schwachstellen zu finden und zu beheben. Microsoft hat vor kurzem den Application Inspector veröffentlicht, ein Codeanalyse-Tool, das anhand von 400 Mustern, einschließlich sicherheitsrelevanter Funktionen, Reports erstellt.

Penetration Testing gibt es schon eine Weile, aber traditionell lassen viele Unternehmen diese Tests von Sicherheitsteams unabhängig von Code, Build und Deployment-Prozessen im Softwareentwicklungs-Lebenszyklus (SDLC) durchführen. Eines der beliebteren Tools, OWASP Zed Attack Proxy oder OWASP ZAP, kann sich in CI/CD-Tools wie Jenkins einklinken und Einsätze auslösen. In der Serie All Day DevOps über ZAP in Ten stellt Simon Bennetts, ZAP-Projektleiter, fest: „Je früher es eingesetzt wird, desto besser. ZAP glänzt wirklich durch Automatisierung“.

Devops, Cloud- und Entwicklungstools bieten im Allgemeinen ihre eigenen Sicherheits-Plugins an. Beispielsweise verfügen sowohl Jenkins als auch Azure DevOps über mehr als 40 Security-Plugins, während CircleCI über 20 aufführt. Microsoft Azure hat seine kontinuierlichen Sicherheitsmethoden veröffentlicht, während AWS DevSecOps-Richtlinien für CodePipeline-Benutzer bereitstellt. Da sich Sicherheitstechnologien, Integrationen und Devops-Tools schnell weiterentwickeln, sollten die infosec- und Entwicklungsteams diese Tools regelmäßig auf neue Sicherheits-Plug-Ins hin überprüfen.

Ein weiterer wichtiger Gesichtspunkt ist die Sicherung der CI/CD-Pipeline selbst. So ist die Sicherung von Schlüsseln und Parametern für die Sicherheit von entscheidender Bedeutung, und CircleCI, Jenkins und Azure stellen Tools und Empfehlungen für deren Sperrung zur Verfügung.

Schließung der Sicherheitsschleife mit Überwachung und AIOps

Es gibt eine ganze Reihe weiterer DevSecOps-Disziplinen, die mit der Sicherung der Infrastruktur als Code, der Absicherung von Containern und der Konfiguration von Cloud-Diensten verbunden sind. Darüber hinaus gibt es spezielle DevSecOps-Themen zur Datensicherheit, zum Identitätsmanagement und zur Sicherung von IoT-Geräten. Wenn Ihre Engineering- und Entwicklungsprojekte die Bereiche Infrastruktur, Mobilfunk, Netzwerke, IoT oder Analytik abdecken, finden Sie auch in diesen Bereichen spezialisierte Sicherheitsverfahren und -tools.

Über Infrastruktur und Datensicherheit hinaus muss jeder, der in der Anwendungsentwicklung tätig ist, ein besseres Verständnis für die Leistungsfähigkeit von Anwendungen in Produktionsumgebungen entwickeln. Die Überprüfung von Vorfällen, die Teilnahme an der Ursachenanalyse und die Behebung von Fehlern sind entscheidende Aufgaben der Anwendungsentwicklung. Für Entwickler bedeutet dies häufig eine Verbesserung der Protokollierung und Überprüfung der Analysen von Anwendungsüberwachungstools. 

Eine aufstrebende operative Technologie ist AIOps, die die Vorteile des maschinellen Lernens und der Automatisierung nutzt, um die Entwicklung und die Anwendungsüberwachung zu vereinfachen. Einsatzteams arbeiten in der Regel mit einer Reihe verschiedener Überwachungstools, aber das Jonglieren mit mehreren Tools kann die Anstrengungen zur Lösung von Vorfällen verlangsamen – insbesondere in komplexen Multi-Cloud-Umgebungen und vor allem, wenn die Entwicklungsteams häufig Änderungen vornehmen.

AIOps-Tools aggregieren operative Daten aus mehreren Überwachungstools, Anwendungsprotokolldateien oder Infrastrukturkomponenten. Sie wenden dann maschinelles Lernen an, um Vorfälle zu identifizieren, automatische Reaktionen auszulösen und die Zeit für deren Behebung zu verkürzen. Diese Tools helfen auch bei der Erkennung von Ausreißern und langsam auftretenden Problemen, indem sie Betriebsdaten in Längsrichtung durchsuchen. Viele Sicherheitsprobleme können mit dieser Art der Analyse ermittelt werden.

Die Analyse von Überwachungs- und AIOps-Tools für Sicherheitsprobleme zeigt, wie infosec- und Entwicklungsteams betriebliche Sicherheitsvorfälle zur Behebung wieder in den agilen Entwicklungsprozess einbringen. Dies ist eine reaktive Sicherheitsmaßnahme, aber eine äußerst wichtige Praxis für agile Teams und Entwicklungsorganisationen, die die Sicherheit ihrer Anwendungen verwalten und verbessern wollen.

Die Bewältigung der Software-Sicherheit erfordert eine Mischung aus proaktiven Schritten, die zu Beginn des agilen Entwicklungsprozesses eingeleitet werden, aus bewährten Verfahren und Instrumenten in der Entwicklungsphase und aus reaktiven Maßnahmen, die auf der Überwachung der Produktionssysteme basieren. Sicherheitsbedrohungen ändern sich schnell, so dass agile Teams und Entwicklungsorganisationen die Sicherheitspraktiken überprüfen und neue Methoden kontinuierlich validieren müssen.

*Isaac Sacolick ist der Autor von „Driving Digital: The Leader’s Guide to Business Transformation through Technology“, das viele Praktiken wie z.B. Agilität, Entwicklung und Datenwissenschaft behandelt, die für erfolgreiche digitale Transformationsprogramme entscheidend sind. Sacolick ist ein anerkannter Top-CIO im sozialen Bereich, ein langjähriger Blogger bei Social, Agile and Transformation und CIO.com sowie Präsident von StarCIO.


Mehr Artikel