CI/CD-Pipelines sind leistungsstarke Werkzeuge für eine schnellere und häufigere Softwareentwicklung – vom Design bis zur Bereitstellung. Als sie jedoch erstmals in der Technologiewelt auftauchten, fehlte ihnen häufig ein entscheidendes Element: die Sicherheit.
Das ist ein Problem, insbesondere angesichts solcher Statistiken: Etwa eines von fünf Unternehmen berichtete im Vorjahr von einem Sicherheitsvorfall in seiner CI/CD-Pipeline, laut einer aktuellen Umfrage, die von Techstrong Research durchgeführt wurde.
Mit der wachsenden Verbreitung von CI/CD-Pipelines hat sich auch die Bedrohungslage für Softwareteams verändert. Wie das Open Worldwide Application Security Project (OWASP) feststellt: „Angesichts ihrer Bedeutung und ihrer weiten Verbreitung sind CI/CD-Pipelines auch ein attraktives Ziel für böswillige Angreifer, weshalb ihre Sicherheit nicht ignoriert werden darf.“
In diesem Artikel gehen wir auf die spezifischen Risiken ein – sowie auf bewährte Grundsätze und Praktiken, um diese Risiken zu verringern und die Sicherheit von CI/CD-Pipelines zu gewährleisten.
Was ist eine CI/CD-Pipeline?
Klären wir zunächst die Grundlagen: Was ist CI/CD? Die Abkürzung steht für Continuous Integration und Continuous Delivery und bezeichnet einen Satz von Prozessen und Werkzeugen, die moderne Softwareteams verwenden, um Software zu entwerfen, zu erstellen und letztlich bereitzustellen – wobei Automatisierung als einer der Haupttreiber für schnellere und häufigere Codeauslieferung und Updates gilt.
So haben wir es in unserem früheren Artikel „CI/CD-Pipeline Überblick: Warum Sie darüber Bescheid wissen sollten“ definiert: „Eine CI/CD-Pipeline ist ein transparenter, automatisierter und zuverlässiger Prozess zur Entwicklung und Bereitstellung von Software.“
Das Ziel ist meist nicht nur, schneller und häufiger auszuliefern – sondern auch Qualität, Zuverlässigkeit und – vorausgesetzt, man räumt ihr Priorität ein – Sicherheit zu verbessern.
Häufige CI/CD-Sicherheitsrisiken: 5 Fokusbereiche
Die Ursachen vieler CI/CD-Sicherheitsrisiken dürften IT-Profis zumindest teilweise bekannt vorkommen. Faktoren wie Zugriffskontrolle und übermäßige Berechtigungen, unzureichende Überwachung und Protokollierung, nicht geregelte Abhängigkeiten und Software-Lieferketten tragen allesamt zu erhöhten Risiken bei, wenn sie nicht angemessen verwaltet werden.
OWASP hat eine Liste der Top 10 CI/CD-Sicherheitsrisiken veröffentlicht, die als Benchmark zu empfehlen ist. Sie ist ein Ableger der bekannten OWASP Top 10 Web Application Security Risks, die als weit verbreiteter Branchenstandard für Webanwendungssicherheit gilt.
Risiken in CI/CD-Pipelines können sowohl durch Automatisierung entstehen als auch verschärft werden. Viele der Risiken werden automatisch eingeführt – oder auch automatisch in die Produktion ausgerollt – in CI/CD-Pipelines. Ironischerweise kann die Automatisierung der Sicherheit dieser Pipelines mit Infrastructure-as-Code (IaC)-Werkzeugen oder anderer Automatisierung ebenfalls Risiken schaffen oder verschärfen, sofern Sie sie nicht im Blick behalten, wie Derek Ashmore, Application Transformation Principal bei Asperitas, anmerkt.
Laut Ashmore gibt es fünf zentrale Risikobereiche, die Sie bei der Absicherung Ihrer CI/CD-Pipelines berücksichtigen sollten:
- Zugriffskontrolle: „Zugriffskontrollen werden aus Bequemlichkeit oft zu großzügig vergeben und entsprechen nicht den Prinzipien der minimalen Rechtevergabe und des Vier-Augen-Prinzips“, sagt Ashmore. Generell sollte hier das Prinzip der minimalen Rechtevergabe gelten – geben Sie weder Menschen noch Maschinen Zugriff auf Daten oder Systeme, die sie für ihre Arbeit nicht wirklich benötigen.
- Unvalidierte Abhängigkeiten: Die heutige Software – und damit auch CI/CD-Pipelines – basiert häufig auf Drittanbieter-Bibliotheken und anderen externen Abhängigkeiten, und diese Komponenten weisen manchmal Schwachstellen auf. „Stellen Sie immer sicher, dass externe Abhängigkeiten validiert sind und eine überprüfbare Herkunftskette besitzen“, sagt Ashmore.
- Auditierung und Protokollierung: Stellen Sie sicher, dass Sie eine umfassende Auditierung und Protokollierung implementiert haben. Ein Mangel an Transparenz und Nachvollziehbarkeit kann zu erhöhten Sicherheitsrisiken führen, von denen Sie sonst nichts mitbekommen würden.
- Rechteausweitung: Automatisierung – wie sie für CI/CD und CI/CD-Sicherheit charakteristisch ist – kann manchmal in isolierten Bereichen entwickelt werden, was unbeabsichtigte Lücken entstehen lässt, in denen Rechte durch unerwartete Abläufe erhöht werden können. „Um dieses Risiko zu mindern, stellen Sie sicher, dass das Prinzip der minimalen Rechtevergabe umgesetzt ist und Testfälle sowohl für Automatisierungs-Workstreams als auch für einzelne Aufgaben oder Pipelines existieren“, sagt Ashmore.
- Unzureichende automatisierte Tests: Automatisierte Tests sind nicht nur für eine starke CI/CD-Pipeline-Sicherheit entscheidend – denken Sie beispielsweise an automatisierte Schwachstellen-Scans für Container-Images – sondern auch für einen gesunden Gesamtprozess. „Fehler in der Pipeline können unerwünschte Sicherheitslücken schaffen und sich negativ auf Entwicklungsteams auswirken, weil sie diesen die Ausübung ihrer vorgesehenen Aufgaben erschweren“, sagt Ashmore.
10 Top CI/CD Tools!
Here's my pick of the 10 best software from the 10 tools reviewed.
15 bewährte Praktiken für mehr CI/CD-Sicherheit
Sobald Sie ein solides Verständnis der Risiken haben, ist es Zeit für die Lösungen. Die gute Nachricht: Es gibt viele davon, unter anderem, weil die Branche insgesamt die Bedeutung von integrierter Sicherheit als festen Bestandteil von CI/CD erkannt hat.
Ashmore von Asperitas hat uns einen Überblick über 15 allgemein anerkannte bewährte Praktiken und Taktiken zur Stärkung der CI/CD-Pipeline-Sicherheit gegeben. Ohne weitere Umschweife:
- Verwenden Sie sichere Versionskontrollsysteme: Einer der wichtigsten Vorteile von Versionskontrollsystemen wie Git ist, dass sie die Änderungshistorie erfassen, die zur Untersuchung von Sicherheitsvorfällen oder anderen Problemen benötigt werden könnte. „Idealerweise sollte nichts manuell geändert werden“, sagt Ashmore. Entdecken Sie unsere umfassende Liste von Source-Control-Tools für weitere Optionen: „20 Beste Versionskontroll-Tools im Test“
- Prinzip der minimalen Rechte durchsetzen: Stellen Sie sicher, dass die den Benutzerrollen und Ressourcen zugewiesenen Rechte und Berechtigungen – sowohl für menschliche Nutzer als auch für Infrastrukturressourcen – minimal gehalten werden und dem Prinzip der minimalen Rechte folgen. Wenn sie es nicht brauchen, wird es nicht gewährt.
- Secrets Management einsetzen: „Vermeiden Sie es, Geheimnisse – Passwörter, Tokens, API-Keys – in IaC-Templates fest einzucodieren“, sagt Ashmore. Nutzen Sie stattdessen Secrets-Management-Tools wie HashiCorp Vault, AWS Secrets Manager oder Azure Key Vault. Werfen Sie einen Blick auf unseren ausführlichen Vergleich von Tools zum Schutz digitaler Geheimnisse: „Digitale Bewahrer: Die 24 besten Secrets-Management-Tools“
- Regelmäßiges, automatisiertes Sicherheitsscanning durchführen: Verwenden Sie Tools, die automatisch nach Sicherheitslücken suchen, und tun Sie dies so früh wie möglich in Ihrer CI/CD-Pipeline.
- Dem Prinzip der Unveränderlichkeit folgen: Manuelle Änderungen – besonders an Infrastrukturumgebungen – möglichst vermeiden, ist eine gute Strategie zur Risikominimierung. „Infrastruktur sollte unveränderlich sein; nach der Bereitstellung sollten keine manuellen Änderungen erfolgen“, sagt Ashmore. „Stattdessen sollten Änderungen durch Aktualisierung des IaC-Codes und erneute Bereitstellung gemacht werden. Jegliche Möglichkeit manueller Änderungen zu entfernen, ist der sicherste Weg.“
- Rollengestützte Zugriffskontrolle (RBAC) verwenden: „Kontrollieren Sie den Zugang zu Ihren IaC-Tools und -Umgebungen mit RBAC“, sagt Ashmore. „Nur autorisierte Nutzer sollten Infrastruktur bereitstellen oder ändern dürfen.“ Kubernetes ist ein weiteres wichtiges Beispiel, da es ein zentraler Bestandteil vieler CI/CD-Pipelines ist. Verlassen Sie sich nicht nur auf die Standardkonfigurationen.
- Idempotenz anwenden: Jetzt wird es technisch: Idempotenz bedeutet, dass sich durch mehrmaliges Ausführen bestimmter Operationen – oder Codes im Software-Engineering – das Ergebnis nicht verändert. „Gestalten Sie IaC [und CI/CD-Pipelines] idempotent, sodass wiederholtes Ausführen des Codes den Zustand der Infrastruktur nur ändert, wenn dies ausdrücklich vorgesehen ist“, sagt Ashmore.
- Parameterisierung verwenden: Ashmore empfiehlt, in IaC-Templates Variablen und Parameterisierung zu nutzen, um Umgebungswerte wie Regionen, Instanzgrößen und IP-Adressen nicht fest einzucodieren.
- Monitoring und Logging implementieren: Diese sind notwendig, um unbefugte oder ungewöhnliche Aktivitäten zu erkennen und beim Auftreten von Vorfällen die Ursachen zu analysieren. „Services wie AWS CloudTrail oder Azure Monitor können helfen“, sagt Ashmore. Hier sind zwei weitere Ressourcen: „Die 25 besten Log-Monitoring-Softwarelösungen“ und „Guide zu den 26 besten Infrastruktur-Monitoring-Tools“
- Tools für Infrastrukturtests einsetzen: „Integrieren Sie Tools für Infrastrukturtests wie Test Kitchen, Terratest oder InSpec, um die Korrektheit Ihres IaC vor der Bereitstellung zu validieren“, sagt Ashmore.
- Erkennung von Infrastruktur-Drift umsetzen: Nutzen Sie Tools, um sogenannte Infrastructure Drift – also Änderungen außerhalb der CI/CD-Pipeline – zu erkennen und unbefugte Änderungen bei Erkennung zurückzusetzen, empfiehlt Ashmore.
- Compliance- und Sicherheitsstandards einhalten: Stellen Sie sicher, dass Ihre CI/CD-Pipeline die Anforderungen an branchenspezifische Sicherheitsstandards und Compliance-Richtlinien erfüllt, z. B. CIS-Benchmarks, NIST oder GDPR. Die oben genannte OWASP Top 10 ist ein weiteres Beispiel.
- Wiederverwendbaren und modularen IaC-Code erstellen: „Zerlegen Sie Ihren IaC-Code in wiederverwendbare und modulare Komponenten wie Terraform-Module oder AWS CloudFormation Stacks“, sagt Ashmore.
- Ihre Pipeline dokumentieren: Ashmore empfiehlt, eine umfassende Dokumentation Ihrer IaC-Richtlinien, Templates und Sicherheitsprozesse sowie anderer Bestandteile der CI/CD-Pipeline zu erstellen und zu pflegen.
- Tools regelmäßig aktualisieren: „Halten Sie Ihre IaC-Tools (wie Terraform, Ansible, CloudFormation) und alle verwandten Abhängigkeiten stets auf dem neuesten Stand“, sagt Ashmore. Dies gilt ebenfalls für weitere Tools und Abhängigkeiten in Ihrer Pipeline: Veraltete Versionen bieten häufiger bekannte (und möglicherweise unbekannte) Risiken.
Mehr CI/CD-Insights? Jetzt beitreten!
CI/CD-Pipelines sind heute fester Bestandteil der modernen Softwareentwicklung. Das bedeutet: CI/CD-Sicherheit ist genauso entscheidend. Bevor Sie gehen, melden Sie sich für unseren Newsletter an, um die neuesten Erkenntnisse führender Köpfe der Softwarebranche zu erhalten.
