Überblick
DevSecOps steht für Development (Entwicklung), Security (Sicherheit) und Operations (Abläufe). Es ist ein Konzept für Unternehmenskultur, Automatisierung und Plattformdesign, das Sicherheit als gemeinsame Verantwortlichkeit im gesamten IT-Lifecycle integriert.
Vergleich zwischen DevSecOps und DevOps
Bei DevOps geht es nicht nur um die Entwicklungs- und Operations-Teams. Wenn Sie die Agilität und Reaktionsfähigkeit von DevOps vollständig ausschöpfen möchten, muss auch die IT-Sicherheit im gesamten Lifecycle Ihrer Apps integriert sein.
Warum? Früher war für die Sicherheit ein spezielles Team in der finalen Entwicklungsphase zuständig. Als die Entwicklungszyklen sich noch über Monate oder gar Jahre hinzogen, war das nicht so schlimm. Doch diese Tage sind vorbei. Eine effiziente DevOps-Strategie sorgt für schnelle und häufige Entwicklungszyklen (Wochen oder manchmal nur Tage), aber veraltete Sicherheitspraktiken können selbst die effektivsten Prozesse ausbremsen.
Beim kollaborativen DevOps-Ansatz von heute aber wird Sicherheit zur gemeinsamen Verantwortung, die von Anfang an in den Ablauf integriert ist. Dieses Prinzip ist so zentral, dass es auch „DevSecOps“ genannt wird, um zu unterstreichen, dass DevOps-Initiativen eine starke Sicherheitsbasis zugrunde liegen muss.
DevSecOps bedeutet, dass die Sicherheit der Anwendungen und der Infrastruktur von Anfang an beachtet werden muss. Es bedeutet ebenfalls, dass einige Sicherheits-Gates automatisiert werden müssen, damit die DevOps-Workflows nicht zu langsam werden. Wenn Sie die richtigen Tools zur kontinuierlichen Integration von Sicherheitsfunktionen verwenden und sich auf eine IDE (Integrated Development Environment) mit Sicherheits-Features einigen, können diese Ziele leichter erreicht werden. Allerdings hängt eine effektive DevOps-Sicherheitsstrategie nicht allein von neuen Tools ab. Die DevOps-Kultur muss sich grundlegend dahingehend verändern, dass die Arbeit der Sicherheitsteams möglichst von Anfang an integriert wird.
DevOps-Sicherheit ist integriert
Unabhängig davon, ob Sie dieses Prinzip nun „DevOps“ oder „DevSecOps“ nennen, war es schon immer am besten, die Sicherheitsfunktionen als festen Bestandteil in den gesamten Lifecycle der App zu integrieren. Bei DevSecOps geht es um integrierte Sicherheit, nicht um Sicherheits-Features, die Apps und Daten wie mit einer Mauer schützen. Solange Sicherheit erst in der Endphase der Entwicklungs-Pipeline beachtet wird, werden die Unternehmen, die DevOps-Methoden einführen, am Ende wieder vor dem Problem der langen Entwicklungszyklen stehen, das sie ja eigentlich vermeiden wollten.
Deshalb müssen die Sicherheitsteams und Partner, die einen DevSecOps-Ansatz verfolgen, schon zu Beginn einer Initiative die Informationssicherheit integrieren und die Sicherheitsautomatisierung planen. Dies bedeutet auch, dass die Entwicklungsteams bereits bei der Programmierung an die Sicherheit denken müssen. Damit dieser Prozess erfolgreich ist, müssen die Sicherheitsteams transparent arbeiten, einander Feedback geben und einander mitteilen, wenn Bedrohungen vorliegen, wie etwa Insider-Bedrohungen oder mögliche Malware. Ziel von DevSecOps ist außerdem, Risiken in der Softwarelieferkette zu identifizieren, indem frühzeitig im Software-Entwicklungs-Lifecycle großer Wert auf die Sicherheit von Open Source-Softwarekomponenten und Abhängigkeiten gelegt wird. Ein erfolgversprechender, effektiver DevSecOps-Ansatz kann auch ein neues Sicherheits-Training für Entwicklungsteams beinhalten, denn dies stand in der traditionellen Anwendungsentwicklung nicht immer im Fokus.
Wie sieht integrierte Sicherheit konkret aus? Eine gute DevSecOps-Strategie ist zunächst, die Risikotoleranz zu bestimmen und eine Risiko/Nutzen-Analyse durchzuführen. Wie hoch muss das Sicherheitslevel einer bestimmten Anwendung sein? Wie wichtig ist die Markteinführungszeit für verschiedene Anwendungen? Bei DevSecOps werden sich wiederholende Aufgaben automatisiert, da manuelle Sicherheitschecks in der Pipeline viel Zeit erfordern können.
DevOps-Sicherheit ist automatisiert
Was wird benötigt? Kurze und häufige Entwicklungszyklen, Integration von Sicherheitsmaßnahmen mit minimalen Betriebsunterbrechungen, Einsatz innovativer Technologien (wie Container und Microservices) sowie Förderung einer engen Zusammenarbeit zwischen ansonsten isolierten Teams – alles in allem kein einfaches Unterfangen für ein Unternehmen. All diese Initiativen beginnen auf der Personalebene und mit der Art und Weise, wie die Mitarbeitenden in Ihrer Organisation zusammenarbeiten. Aber das wichtigste Instrument für diese Veränderungen in einem DevSecOps-Framework ist die Automatisierung.
Aber was und wie wird automatisiert? Es gibt Fachliteratur, die hier bei der Antwort helfen kann. Organisationen sollten einen Schritt zurücktreten und die Entwicklungs- und Operations-Umgebung als Ganzes betrachten. Diese umfasst: Quellkontroll-Repositories, Container Registries, die CI/CD-Pipeline (Continuous Integration und Continuous Deployment), API-Management, die Orchestrierung und Release-Automatisierung sowie die operative Verwaltung und Überwachung.
Neue Automatisierungstechnologien haben die Organisationen bei der Einführung agiler Entwicklungspraktiken unterstützt und dafür gesorgt, dass neue Sicherheitsmaßnahmen Verbreitung finden. Die Automatisierung stellt aber nicht die einzige Veränderung der IT-Landschaft in den letzten Jahren dar, denn mittlerweile sind cloudnative Technologien wie Container und Microservices fester Bestandteil vieler DevOps-Initiativen. Und auch mit diesen Funktionen muss die DevOps-Sicherheit integriert werden.
DevOps-Sicherheit wurde für Container und Microservices entwickelt
Container ermöglichen stärker skalierbare, dynamischere Infrastrukturen und haben so die geschäftlichen Abläufe vieler Unternehmen stark verändert. Deshalb müssen die Best Practices der DevOps-Sicherheit den neuen Strukturen gerecht werden und mit containerspezifischen Sicherheitsvorgaben übereinstimmen.
Cloudnative Technologien eignen sich nicht für statische Sicherheitsrichtlinien und Checklisten. Sicherheit muss vielmehr durchgehend in jede Phase der App- und Infrastruktur-Lifecycles integriert sein.
Bei DevSecOps ist der Sicherheitsaspekt auf dem gesamten Weg der Anwendungsentwicklung präsent. Diese Integration in die Pipeline verlangt nicht nur nach neuen Tools, sondern im gleichen Maß nach einer neuen Unternehmenskultur. Vor diesem Hintergrund sollten DevOps-Teams daher die Sicherheit automatisieren, um die gesamte Umgebung sowie sämtliche Daten und den CD-/CI-Bereitstellungsprozess zu schützen. Dieses Vorhaben aber betrifft höchstwahrscheinlich auch die Sicherheit von Microservices in Containern.
Red Hat® Advanced Cluster Security nutzt die cloudnativen Prinzipien und Artefakte der Microservices-Architektur, eine deklarative Definition und unveränderliche Infrastruktur, um die DevSecOps Best Practices zu automatisieren. Die Plattform ist kompatibel mit einer großen Anzahl von Kubernetes-Umgebungen und kann mit DevOps und Sicherheitstools kombiniert werden. So können Teams leichter operationalisieren und ihre Lieferkette, Infrastruktur und Workloads besser schützen.
Umgebungs- und Datensicherheit
- Die Umgebung standardisieren und automatisieren: Jeder Service sollte nach dem Least Privilege-Prinzip eingerichtet werden, bei dem Nutzende nur die Rechte erhalten, die sie auch wirklich benötigen.
- Nutzeridentitäten und Zugangskontrollen zentralisieren: Strikte Zugangskontrollen und zentrale Authentifizierungsmechanismen sind für den Schutz von Microservices unerlässlich, da die Authentifizierung an mehreren Punkten initiiert wird.
- Container, die Microservices ausführen, voneinander und vom Netzwerk isolieren: Dies betrifft Daten bei der Übertragung sowie bei der Speicherung, da beides hochwertige Ziele für Angreifende darstellen.
- Daten zwischen Apps und Services verschlüsseln: Mit einer Plattform zur Container-Orchestrierung, die integrierte Sicherheitsfunktionen enthält, lässt sich das Risiko unbefugter Zugriffe minimieren.
- Sichere API-Gateways einführen: Mit sicheren APIs lassen sich Autorisierung und Sichtbarkeit des Routings verbessern. Durch das Reduzieren exponierter APIs kann die Angriffsfläche deutlich verringert werden.
Sicherheit bei CI/CD-Prozessen
- Sicherheitsscanner für Container integrieren: Dies sollte beim Hinzufügen von Containern zur Registry erfolgen.
- Sicherheitstests im CI-Prozess automatisieren: Hierbei werden in den Builds Tools zur statischen Sicherheitsanalyse ausgeführt und vorgefertigte Container Images nach bekannten Sicherheitsschwachstellen durchsucht, während diese in die Build-Pipeline aufgenommen werden.
- Automatisierte Tests für Sicherheitsfunktionen zum Akzeptanztestprozess hinzufügen: Automatisieren Sie Tests zur Eingabevalidierung und Funktionen zur Verifizierungsauthentifizierung/-autorisierung.
- Sicherheits-Updates, wie etwa Patches, für bekannte Schwachstellen automatisieren: Dies können Sie über die DevOps-Pipeline tun. Dadurch sollte die Notwendigkeit entfallen, dass sich Admins bei den Produktivsystemen anmelden müssen, während gleichzeitig ein dokumentiertes und nachverfolgbares Änderungsprotokoll erstellt wird.
- System- und Service-Konfigurationsmanagement automatisieren: Dies sorgt dafür, dass Sicherheitsrichtlinien eingehalten und manuelle Fehler vermieden werden. Audit- und Fehlerbehebungsprozesse sollten ebenfalls automatisiert werden.