CI/CD-Pipelines sind leistungsstarke Werkzeuge, die eine schnellere und häufigere Softwareentwicklung von der Konzeption bis zur Bereitstellung ermöglichen. Als sie jedoch erstmals in die Technologiewelt einzogen, fehlte ihnen häufig ein entscheidendes Glied: die Sicherheit.
Das stellt ein Problem dar, insbesondere angesichts von Statistiken wie dieser: Etwa jedes fünfte Unternehmen meldete einen Sicherheitsvorfall in seiner CI/CD-Pipeline im vergangenen Jahr, laut einer aktuellen Umfrage des Techstrong Research.
Mit der zunehmenden Verbreitung von CI/CD-Pipelines hat sich auch die Bedrohungslage für Softwareteams verändert. Wie das Open Worldwide Application Security Project (OWASP) anmerkt: „Angesichts ihrer Bedeutung und Popularität sind CI/CD-Pipelines auch ein attraktives Ziel für böswillige Hacker, und ihre Sicherheit darf nicht vernachlässigt werden.“
In diesem Artikel gehen wir auf die spezifischen Risiken ein – sowie auf wirksame Prinzipien und Praktiken, um diese Risiken zu mindern und die Sicherheit von CI/CD-Pipelines zu gewährleisten.
Was ist eine CI/CD-Pipeline?
Zunächst sollten wir sicherstellen, dass wir vom Gleichen sprechen: Was ist CI/CD? Kurz für Continuous Integration (kontinuierliche Integration) und Continuous Delivery (kontinuierliche Bereitstellung) bezeichnet CI/CD eine Reihe von Prozessen und Werkzeugen, die moderne Softwareteams einsetzen, um Software zu entwerfen, zu bauen und letztlich bereitzustellen – wobei Automatisierung zu den zentralen Faktoren für eine schnellere und häufigere Codeauslieferung und -aktualisierung zählt.
So haben wir es in unserem vorherigen Artikel „Überblick über CI/CD-Pipelines: Warum Sie davon wissen sollten“ definiert: „Eine CI/CD-Pipeline ist ein transparenter, automatisierter und zuverlässiger Prozess zur Softwareentwicklung und -bereitstellung.“
Das Ziel ist in der Regel nicht nur, schneller und häufiger auszuliefern – sondern auch, Qualität, Zuverlässigkeit und – sofern dies entsprechend priorisiert wird – Sicherheit zu verbessern.
Häufige Sicherheitsrisiken in CI/CD-Pipelines: 5 Schwerpunkte
Die Ursprünge vieler Sicherheitsrisiken in CI/CD-Prozessen dürften IT-Profis zumindest teilweise bekannt vorkommen. Dinge wie Zugriffskontrolle und Überprivilegierung, unzureichende Überwachung und Protokollierung, unkontrollierte Abhängigkeiten und Software-Lieferketten tragen alle zu erhöhten Risiken bei, wenn sie nicht richtig gemanagt werden.
OWASP hat eine Liste der Top 10 CI/CD-Sicherheitsrisiken veröffentlicht, die als Maßstab einen Blick wert ist. Sie ist ein Ableger der bekannten OWASP Top 10 Web Application Security Risks, die als Maßstab der Branche für Web-Application-Sicherheit gilt.
Risiken in CI/CD-Pipelines können sowohl durch Automatisierung eingeführt als auch verschärft werden. Viele Risiken entstehen automatisch – oder werden in CI/CD-Pipelines automatisch in die Produktion ausgerollt. Etwas ironischerweise kann das Automatisieren der Absicherung dieser Prozesse mit Infrastructure as Code (IaC)-Werkzeugen oder anderen Automatisierungslösungen ebenso neue Risiken schaffen oder bestehende verschärfen, wenn man nicht achtgibt, bemerkt Derek Ashmore, Application Transformation Principal bei Asperitas.
Hier sind laut Ashmore fünf zentrale Risikobereiche, die Sie bei der Absicherung Ihrer CI/CD-Pipelines berücksichtigen sollten:
- Zugangskontrolle: „Zugangskontrolle wird häufig aus Bequemlichkeit überprovisioniert und entspricht nicht den Prinzipien der minimalen Rechtevergabe und des Vier-Augen-Prinzips“, sagt Ashmore. Im Allgemeinen sollte hier das Prinzip der minimalen Rechtevergabe gelten – geben Sie Personen oder Maschinen keinen Zugang zu Daten oder Systemen, den sie nicht wirklich zur Erfüllung ihrer Aufgaben benötigen.
- Unvalidierte Abhängigkeiten: Heutige Software – und damit auch CI/CD-Pipelines – verlässt sich oft auf Bibliotheken von Drittanbietern und andere externe Abhängigkeiten, und diese Komponenten weisen teilweise Schwachstellen auf. „Stellen Sie immer sicher, dass externe Abhängigkeiten validiert werden und eine prüfbare Herkunftskette besitzen“, sagt Ashmore.
- Prüfung und Protokollierung: Stellen Sie sicher, dass Sie eine umfassende Prüfung und Protokollierung implementiert haben. Ein Mangel an Transparenz und Prüfbarkeit kann zu erhöhten Sicherheitsrisiken führen, die Ihnen sonst verborgen bleiben.
- Privilegieneskalation: Automatisierung – wie sie CI/CD und CI/CD-Sicherheit mit sich bringen – kann manchmal in Silos entwickelt werden und unbeabsichtigte Lücken hinterlassen, in denen Privilegien durch unerwartete Automatisierungsabläufe erhöht werden können. „Um dieses Risiko zu mindern, stellen Sie sicher, dass das Prinzip der minimalen Rechtevergabe umgesetzt und Testfälle für Automatisierungs-Arbeitsströme und einzelne Aufgaben oder Pipelines etabliert werden“, sagt Ashmore.
- Unzureichende automatisierte Tests: Automatisierte Tests sind nicht nur für eine starke CI/CD-Pipeline-Sicherheit entscheidend – denken Sie zum Beispiel an automatisierte Schwachstellenscans für Container-Images –, sondern auch für eine gesunde Pipeline im Allgemeinen. „Pipeline-Fehler können unerwünschte Sicherheitslücken schaffen und sich negativ auf Entwicklungsteams auswirken, indem sie diese daran hindern, ihre Aufgaben zu erledigen“, sagt Ashmore.
10 Top CI/CD Tools!
Here's my pick of the 10 best software from the 10 tools reviewed.
15 Best Practices für eine stärkere CI/CD-Sicherheit
Sobald Sie die Risiken umfassend verstanden haben, ist es an der Zeit, sich den Lösungen zuzuwenden. Die gute Nachricht: Es gibt viele davon – unter anderem, weil die Branche als Ganzes erkannt hat, wie wichtig es ist, Sicherheit als Grundpfeiler in CI/CD zu integrieren.
Ashmore von Asperitas hat uns einen Überblick über 15 allgemein anerkannte Best Practices und Taktiken zur Stärkung der CI/CD-Pipeline-Sicherheit gegeben. Ohne weitere Umschweife:
- Verwenden Sie sichere Versionskontrollsysteme: Versionskontrollsysteme wie Git erfassen Änderungshistorien, die möglicherweise zur Untersuchung von Sicherheitsvorfällen oder anderen Problemen benötigt werden. „Idealerweise sollte nichts manuell geändert werden“, sagt Ashmore. In unserer umfassenden Übersicht über Source-Control-Tools finden Sie weitere Optionen: „20 Beste Versionskontroll-Tools im Test“
- Prinzip der minimalen Rechtevergabe durchsetzen: Stellen Sie sicher, dass sowohl Nutzern als auch Infrastrukturressourcen nur die minimal notwendigen Rollen und Berechtigungen gewährt werden und dass sie dem Prinzip der geringsten Rechte entsprechen. Wenn sie es nicht brauchen, gewähren Sie es nicht.
- Verwenden Sie Secrets Management: „Vermeiden Sie es, Geheimnisse – Passwörter, Token, API-Keys – in IaC-Vorlagen einzubetten“, sagt Ashmore. Verwenden Sie stattdessen Secrets-Management-Tools wie HashiCorp Vault, AWS Secrets Manager oder Azure Key Vault. In unserem ausführlichen Artikel zu Secrets-Management-Tools finden Sie noch mehr Optionen: „Digitale Tresore: Die 24 besten Secrets-Management-Tools“
- Regelmäßige, automatisierte Sicherheits-Scans durchführen: Verwenden Sie Tools, die automatisch auf Sicherheitslücken prüfen, und integrieren Sie diese so früh wie möglich in Ihre CI/CD-Pipeline.
- Folgen Sie dem Prinzip der Unveränderlichkeit: Die Reduzierung manueller Änderungen – besonders in Infrastrukturumgebungen – ist eine sinnvolle Strategie zur Risikominimierung. „Infrastruktur sollte unveränderlich sein; nach der Bereitstellung sollte sie nicht manuell geändert werden“, sagt Ashmore. „Änderungen sollten stattdessen durch Aktualisierung des IaC-Codes und erneutes Deployment vorgenommen werden. Die Möglichkeit, manuelle Änderungen vorzunehmen, zu entfernen, ist der sicherste Weg.“
- Verwenden Sie rollenbasierte Zugriffskontrolle (RBAC): „Kontrollieren Sie den Zugriff auf Ihre IaC-Tools und -Umgebungen mit RBAC“, sagt Ashmore. „Nur autorisierte Benutzer sollten Infrastruktur bereitstellen oder ändern dürfen.“ Kubernetes ist hier ein weiteres besonders wichtiges Beispiel, insbesondere da es ein zentraler Bestandteil vieler CI/CD-Pipelines ist. Verlassen Sie sich nicht nur auf Standardkonfigurationen.
- Idempotenz anwenden: Jetzt wird es technisch: Idempotenz bedeutet, dass das mehrfache Ausführen bestimmter Operationen – oder Code im Software Engineering – keine unterschiedlichen Ergebnisse hervorrufen darf. „Gestalten Sie IaC [und CI/CD-Pipelines] idempotent, sodass sich der Zustand der Infrastruktur nur bei expliziten Anforderungen verändert, egal wie oft der Code ausgeführt wird“, sagt Ashmore.
- Mit Parametrisierung arbeiten: Ashmore empfiehlt die Nutzung von Variablen und Parametrisierung in IaC-Vorlagen, um keine umgebungsspezifischen Werte wie Regionen, Instanzgrößen und IP-Adressen fest zu hinterlegen.
- Monitoring und Logging implementieren: Diese sind erforderlich, um unautorisierte oder ungewöhnliche Aktivitäten zu erkennen und die Ursachen von Vorfällen zu beheben. „Dienste wie AWS CloudTrail oder Azure Monitor können helfen“, sagt Ashmore. Weitere hilfreiche Ressourcen: „Die 25 besten Log Monitoring Tools“ und „Leitfaden zu den 26 besten Infrastruktur-Monitoring-Tools“
- Verwenden Sie Infrastructure Testing Tools: „Nutzen Sie Infrastruktur-Test-Tools wie Test Kitchen, Terratest oder InSpec, um die Korrektheit Ihres IaC vor der Bereitstellung zu überprüfen“, sagt Ashmore.
- Erkennung von Infrastructure Drift implementieren: Verwenden Sie Tools, um Infrastructure Drift – also Änderungen, die außerhalb der CI/CD-Pipeline erfolgen – zu erkennen und unautorisierte Änderungen bei ihrer Entdeckung rückgängig zu machen, rät Ashmore.
- Compliance- und Sicherheitsstandards einhalten: Stellen Sie sicher, dass Ihre CI/CD-Pipeline mit branchenüblichen Sicherheitsstandards und Compliance-Rahmenwerken konform ist, etwa CIS-Benchmarks, NIST oder GDPR. Auch die oben erwähnte OWASP Top 10-Liste ist hier relevant.
- Wiederverwendbaren und modularen IaC-Code erstellen: „Teilen Sie IaC-Code in wiederverwendbare und modulare Komponenten auf, etwa bestimmte Terraform-Module oder AWS-CloudFormation-Stacks“, sagt Ashmore.
- Dokumentieren Sie Ihre Pipeline: Ashmore empfiehlt, ausführliche Dokumentation zu Ihren IaC-Richtlinien, Vorlagen und Sicherheitsprozessen sowie zu weiteren Komponenten Ihrer CI/CD-Pipeline zu erstellen und aktuell zu halten.
- Werkzeuge regelmäßig aktualisieren: „Halten Sie Ihre IaC-Tools (wie Terraform, Ansible, CloudFormation) sowie alle zugehörigen Abhängigkeiten auf dem neuesten Stand“, sagt Ashmore. Dasselbe gilt allgemein für andere Tools und Abhängigkeiten innerhalb Ihrer Pipeline: Veraltete Versionen bergen meist bekannte (und möglicherweise unbekannte) Risiken.
Melden Sie sich an für noch mehr CI/CD-Insights
CI/CD-Pipelines sind mittlerweile ein fester Bestandteil der modernen Softwareentwicklung. Das bedeutet, dass CI/CD-Sicherheit ebenso absolut essenziell ist. Bevor Sie gehen, abonnieren Sie unseren Newsletter, um die neuesten Erkenntnisse führender Köpfe der Softwarebranche zu erhalten.
