DevSecOps-Tools

Die DevSecOps-Tools, die DevOps-Workflows absichern

Kev Zettler Porträtfoto
Kev Zettler

Full Stack Web Developer


Obwohl Softwareunternehmen ihr Bestes geben, kommt es immer noch zu Sicherheitsverletzungen. Seit dem Jahr 2000 wurden schätzungsweise 3,5 Milliarden Menschen persönliche Daten gestohlen. Das Problem liegt teilweise daran, dass bei Softwareanwendungen Umfang und Komplexität der Codebasis zunehmen. Gleiches gilt für Sicherheitsschwachstellen und Exploits.

Und da immer mehr Unternehmen einen DevOps-Ansatz verfolgen, der die Prozesse zwischen Softwareentwicklungs- und IT-Teams automatisiert und integriert, reichen herkömmliche Sicherheitslösungen einfach nicht mehr aus. Teams müssen stattdessen Sicherheitsmaßnahmen in jede Phase des Entwicklungsworkflows integrieren. Wenn es um Sicherheit für DevOps-Workflows geht, wird diese Vorgehensweise als DevSecOps bezeichnet.

Was ist DevSecOps?


Bei DevSecOps wird Sicherheit in eine Continuous-Integration-, Continuous-Delivery- und Continuous-Deployment-Pipeline integriert. Wenn DevOps-Werte für die Softwaresicherheit einbezogen werden, wird die Sicherheitsüberprüfung zu einem aktiven, integrierten Bestandteil des Entwicklungsprozesses.

Ähnlich wie DevOps ist DevSecOps eine organisatorische und technische Methode, die Projektmanagement-Workflows mit automatisierten IT-Tools kombiniert. DevSecOps integriert aktive Sicherheitsprüfungen und -tests in agile Entwicklungs- und DevOps-Workflows, sodass Sicherheit in das Produkt integriert und nicht erst später auf ein fertiges Produkt aufgepfropft wird.

Um DevSecOps zu implementieren, sollten Teams:

  • Sicherheitsfunktionen während des gesamten Lebenszyklus der Softwareentwicklung einführen, um Schwachstellen in Softwarecode zu minimieren
  • Sicherstellen, dass das gesamte DevOps-Team, einschließlich Entwicklungs- und Operations-Teams, die Verantwortung für die Einhaltung von Best Practices für Sicherheit übernimmt
  • Automatisierte Sicherheitsüberprüfungen in jeder Phase der Softwareauslieferung ermöglichen, indem Sicherheitskontrollen, Tools und Prozesse in den DevOps-Workflow integriert werden

Mit DevSecOps sollte Sicherheit Bestandteil jeder Phase einer typischen DevOps-Pipeline werden: Planung, Build, Test, Bereitstellung, Betrieb und Beobachtung.

Eine DevOps-Pipeline zeichnet sich vor allem durch die Eigenschaft "kontinuierlich" aus, was an den Begriffen Continuous Integration, Continuous Delivery/Deployment (CI/CD), kontinuierliches Feedback und Continuous Operations deutlich wird. Anstelle von einmaligen Tests oder geplanten Deployments wird jede Funktion fortlaufend ausgeführt.

Werkzeugsymbol
Zugehöriges Material

Erfahre mehr über Snyk für Bitbucket Cloud

Download-Symbol
Lösung anzeigen

Lade Snyk für Bitbucket Cloud herunter

DevSecOps-Endlosschleife

Planen


Die Planungsphase ist die am wenigsten automatisierte Phase von DevSecOps, die Zusammenarbeit, Diskussionen, Überprüfungen und Strategien der Sicherheitsanalyse umfasst. Teams sollten eine Sicherheitsanalyse durchführen und einen Plan erstellen, in dem dargelegt wird, wo, wie und wann Sicherheitstests durchgeführt werden. Ein beliebtes Planungstool für DevSecOps ist IriusRisk, ein kollaboratives Designtool für die Bedrohungsmodellierung. Zusätzliche Tools umfassen Tools zur Vorgangsverfolgung und -verwaltung wie Jira Software sowie Kommunikations- und Chattools wie Slack.

Erstellen


Die Erstellungsphase beginnt, sobald Entwickler Code an das Quell-Repository committen. Build-Tools für DevSecOps konzentrieren sich auf automatisierte Sicherheitsanalysen im Vergleich zu Build-Ausgabeartefakten. Wichtige Sicherheitspraktiken sind die Analyse von Softwarekomponenten, statische Anwendungssicherheitstests (SAST) und Unit-Tests. Tools können an eine vorhandene CI/CD-Pipeline angeschlossen werden, um diese Tests zu automatisieren.

Entwickler installieren und erstellen regelmäßig Drittanbieter-Codeabhängigkeiten, die möglicherweise aus einer unbekannten oder nicht vertrauenswürdigen Quelle stammen. Externe Codeabhängigkeiten können unbeabsichtigte oder böswillige Sicherheitsschwachstellen und Exploits beinhalten. Während der Erstellungsphase ist es wichtig, diese Abhängigkeiten zu überprüfen und auf Sicherheitslücken zu untersuchen.

Einige bekannte Tools zur Analyse der Build-Phase sind: OWASP Dependency-Check, SonarQube, SourceClear, Retire.js, Checkmarx und Snyk.

DevSecOps-Tools für die Codephase helfen Entwicklern, sichereren Code zu schreiben. Zu den wichtigen Sicherheitspraktiken der Codierungsphase gehören statische Codeanalysen, Code-Prüfungen und Pre-Commit-Hooks.

Wenn Sicherheitstools direkt in den vorhandenen Git-Workflow der Entwickler eingebunden werden, löst jeder Commit und Merge automatisch einen Sicherheitstest oder eine Überprüfung aus. Diese Tools unterstützen verschiedene Programmiersprachen und integrierte Entwicklungsumgebungen. Einige der beliebtesten Sicherheitscodetools sind Gerrit, Phabricator, SpotBugs, PMD, CheckStyle und Find Security Bugs.

Test


Die Testphase wird ausgelöst, nachdem ein Build-Artefakt erstellt und erfolgreich in Staging- oder Testumgebungen bereitgestellt wurde. Die Ausführung einer umfassenden Testsuite nimmt viel Zeit in Anspruch. Diese Phase sollte schnell scheitern, damit die teureren Testaufgaben für den Schluss aufgehoben werden.

In der Testphase kommen Tools für dynamische Anwendungssicherheitstests (Dynamic Application Security Testing, DAST) zum Einsatz, um Live-Anwendungsabläufe wie Benutzerauthentifizierung, Autorisierung, SQL Injection und API-Endpunkte zu erkennen. Mit dem sicherheitsorientierten DAST wird eine Anwendung anhand einer Liste bekannter Probleme mit hohem Schweregrad analysiert, wie sie in den OWASP Top 10 aufgeführt sind.

Es gibt zahlreiche Open-Source- und kostenpflichtige Testtools, die eine Vielzahl von Funktionen und Unterstützung für Sprachökosysteme bieten, darunter automatisierte BDD-Sicherheitstests, JBroFuzz, Boofuzz, OWASP ZAP, Arachni, IBM AppScan, GAUNTLT und SecApps Suite.

Bereitstellen


Wenn die vorherigen Phasen erfolgreich verlaufen, ist es an der Zeit, das Build-Artefakt für die Produktion bereitzustellen. Die Sicherheitsbereiche, die in der Bereitstellungsphase berücksichtigt werden müssen, sind diejenigen, die nur im laufenden Produktionssystem auftreten. Beispielsweise sollten etwaige Unterschiede in der Konfiguration zwischen der Produktionsumgebung und den vorherigen Staging- und Entwicklungsumgebungen gründlich geprüft werden. TLS- und DRM-Zertifikate in der Produktion sollten validiert und auf bevorstehende Verlängerungen überprüft werden.

Die Bereitstellungsphase ist ein guter Zeitpunkt für den Einsatz von Tools zur Laufzeitüberprüfung wie Osquery, Falco und Tripwire, die Informationen aus einem laufenden System extrahieren. um festzustellen, ob es erwartungsgemäß funktioniert. Unternehmen können auch Chaos-Engineering-Prinzipien anwenden, indem sie an einem System experimentieren, um Vertrauen in die Fähigkeit des Systems aufzubauen, turbulenten Bedingungen in der Produktion standzuhalten. Es können reale Ereignisse simuliert werden, wie abstürzende Server, Festplattenausfälle oder getrennte Netzwerkverbindungen. Netflix ist weithin bekannt für sein Chaos Monkey-Tool, das Chaos-Engineering-Prinzipien anwendet. Netflix verwendet auch ein Security Monkey-Tool, das nach Verstößen oder Schwachstellen in falsch konfigurierten Infrastruktursicherheitsgruppen sucht und anfällige Server abschaltet.

In der Release-Phase des DevSecOps-Zyklus sollten der Anwendungscode und die ausführbare Datei bereits gründlich getestet worden sein. Die Phase konzentriert sich auf die Sicherung der Infrastruktur von Laufzeitumgebungen, indem Umgebungskonfigurationswerte wie Benutzerzugriffskontrolle, Netzwerkfirewall-Zugriff und die Verwaltung von vertraulichen Daten untersucht werden.

Das Prinzip der geringsten Rechte ist ein zentrales Anliegen der Release-Phase. Es bedeutet, dass jeder Benutzer, jedes Programm oder jeder Prozess nur auf minimaler Ebene Zugriff hat, um seine Funktion auszuführen. Dies beinhaltet die Überprüfung von API-Schlüsseln und Zugriffstoken, damit die Besitzer nur eingeschränkten Zugriff erhalten. Ohne diese Prüfung könnte ein Angreifer einen Schlüssel finden, der ihm unbeabsichtigt Zugriff auf bestimmte Bereiche des Systems gewährt.

Tools für das Konfigurationsmanagement sind ein wesentlicher Sicherheitsaspekt in der Release-Phase, da sie Einblick in die statische Konfiguration einer dynamischen Infrastruktur bieten. Die Systemkonfiguration kann dann überwacht und überprüft werden. Die Konfiguration wird unveränderlich und kann nur durch Commits an ein Repository zur Konfigurationsverwaltung aktualisiert werden. Einige beliebte Tools für die Konfigurationsverwaltung sind Ansible, Puppet, HashiCorp Terraform, Chef und Docker.

Die Security-Community bietet Richtlinien und Empfehlungen zu Best Practices für die Stärkung deiner Infrastruktur, wie Benchmarks des Center for Internet Security (CIS) und NIST-Konfigurationschecklisten.

Kontinuierliche Sicherheit


Sobald eine Anwendung in einer Live-Produktionsumgebung bereitgestellt und stabilisiert wurde, sind zusätzliche Sicherheitsmaßnahmen erforderlich. Unternehmen müssen die Live-Anwendung mit automatisierten Sicherheitsüberprüfungen und Sicherheitsüberwachungsschleifen auf Angriffe oder Datenlecks überwachen und beobachten.

Runtime Application Self-Protection (RASP) erkennt und blockiert automatisch eingehende Sicherheitsbedrohungen in Echtzeit. RASP fungiert als Reverse-Proxy, das eingehende Angriffe beobachtet und es der Anwendung ermöglicht, sich infolge bestimmter Bedingungen automatisch (ohne menschliches Eingreifen) neu zu konfigurieren.

Ein spezialisiertes internes oder externes Team kann Penetrationstests durchführen, um Exploits oder Schwachstellen zu finden, indem es ein System absichtlich gefährdet. Eine weitere Sicherheitstechnik sind Bug-Bounty-Programme, bei denen externe Nutzer Geld für gemeldete Sicherheits-Exploits und Schwachstellen erhalten.

Die Sicherheitsüberwachung nutzt Analysen, um kritische sicherheitsrelevante Metriken zu instrumentieren und zu überwachen. Diese Tools kennzeichnen beispielsweise Anfragen an sensible öffentliche Endpunkte, wie Formulare für den Zugriff auf Benutzerkonten oder Datenbankendpunkte. Einige Beispiele für beliebte Runtime Defense Tools sind Imperva RASP, Alert Logic und Halo.

Fazit


Da immer mehr Entwicklerteams ihre Prozesse weiterentwickeln und neue Tools einsetzen, müssen sie das Thema Sicherheit mit Sorgfalt behandeln. DevSecOps ist ein zyklischer Prozess, der kontinuierlich iteriert und auf jedes neue Code-Deployment angewendet werden sollte. Exploits und Angreifer entwickeln sich ständig weiter, daher sollten sich auch moderne Softwareteams unbedingt weiterentwickeln.

Um in DevSecOps-Tests einzusteigen, solltest du deine Tests mit Bitbucket Pipelines automatisieren. Informiere dich auch über die Testautomatisierungstools und -ressourcen, die auf Atlassian Marketplace verfügbar sind.

Kev Zettler
Kev Zettler

Kev ist ein führender Full-Stack-Webentwickler und Serienunternehmer mit über zehn Jahren Erfahrung beim Aufbau von Produkten und Teams mit agilen Methoden. Aufstrebende Open-Source-Technologien wie DevOps, Kryptowährung und Virtual/Augmented Reality sind seine große Leidenschaft – ob als Mitwirkender, Autor oder Lehrer. In seiner Freizeit nimmt er an Sessions zur Entwicklung von Indie-Games teil.


Diesen Artikel teilen
Nächstes Thema

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Abbildung: DevOps

DevOps-Community

Abbildung: DevOps

DevOps-Lernpfad

Abbildung: Karte

Kostenlos loslegen

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up