Die unbegrenzte Vielfalt im Cloud-Native-Umfeld bietet viele Möglichkeiten, führt jedoch auch schnell zu grosser Komplexität und einer Vielzahl von Abhängigkeiten. Dass Security hierbei eine wichtige Rolle spielt, ist offensichtlich. Wie wir mit Lagoon den Security-Teilaspekt bezüglich Vulnerabilities in den Griff bekommen, zeigt dieser Blogpost.
DevSecOps in der Cloud
Befasst man sich mit DevSecOps
in einem cloud-basierten Umfeld, begegnet man zwangsläufig Fragen wie diesen:
- Weiss ich genau, was ich wo einsetze?
- Gibt es bekannte Vulnerablities, die mich in irgendeiner Form betreffen?
- Habe ich alte Versionen von Dependencies im Projekt?
- …
All diese Fragen drehen sich hauptsächlich um folgende Komponenten, die wir gerne im Griff haben wollen:
-
Dependencies
Ein externe Bibliothek – eine sogenannte Abhängigkeit (
Dependency
) – welche wir mit all ihren Fehlern und weiteren Dependencies in unsere Software einbinden. -
Basis-Images
Ein Image bestehend aus System-Bibliotheken, Werkzeugen und Plattformeinstellung, die unsere Software zum Erstellen oder Betreiben benötigt. Es ist enspricht einem Mini-Betriebssystem.
-
Runtime-Images (Container-Image)
Das gebaute Image, das am Ende der CI/CD-Pipeline bspw. in die Produktion deployed wird. Es beinhaltet das Basis-Image, unsere Anwendung und die externen Dependencies.
Auf unserer Digitalisierungsplattform Lagoon kommt man schnell mal auf eine stattliche Anzahl von Images, Libraries und Frameworks. Dies ohne Unterstützung einer Software zu bewältigen, grenzt an Leichtsinn.
DependencyTrack
Mit dem OpenSource-Tool DependencyTrack der OWASP Foundation haben wir das richtige Instrument gefunden. Das Tool bietet alle nötigen Features und unterstützt jegliche Ökosysteme. Folgende Vorteile sind für uns am wertvollsten:
Visualisierung
Alle Projekte und Vulnerablilities werden einfach und verständlich visualisiert. Pro Projekt (Build) ist ersichtlich, welche Version, zu welchem Zeitpunkt, mit welchen Vulnerabilities gebaut wurde.
Vulnerabilities direkt im Tool auditieren
Bei uns sieht das Vorgehen folgendermassen aus:
- Die Vulnerability wird beim Scan des Artefakts in der CI/CD-Pipeline entdeckt
- Im Tool wird ersichtlich, welche Libraries betroffen sind
- Pro Library wird evaluiert, ob das Projekt effektiv betroffen ist und aktualisiert werden muss
- Im Tool wird der Audit-Status pro Library gesetzt und der Scan neugestartet
Mit den Status FALSE_POSITIVE
oder NOT_AFFECTED
können Vulnerabilitis bewusst unterdrückt werden.
Integration in CI/CD-Pipelines
In der CI/CD-Pipeline wird nach dem Prinzip fail fast
zweimal ein Scan durchgeführt. Im ersten Scan werden nur Dependencies betrachet und im zweiten Scan das komplette Container-Image.
Schritt 1 – Dependency Check
Mit CycloneDX erstellen wir von unserem Build-Candidate ein CycloneDX BOM und übergeben dies DependencyTrack. DependencyTrack gibt das Resultat zurück und wir brechen die CI/CD-Pipeline ab, insofern ein projektspezifischer Threshold von Vunerabilites überschritten wird.
Schritt 2 – Image-Scanning
Mit dem CLI-Tool Syft erstellen wir aus dem gebauten Image ein Software Bill of Material (SBOM) und suchen mit Hilfe von DependencyTrack mögliche Vulnerabilities auf Container-Ebene.
Ausblick
In Zukunft wollen wir mit Hilfe des Notification-Feature von DependencyTrack alle bestehenden Images überwachen. Dies wird heute mit automatischen Weekly-Builds sichergestellt. Mit dem Notifications werden neue Vulnerabilities in existierenden Images schneller entdeckt und Risiken früher eliminiert.
Fazit
Mit DependencyTrack haben wir für die Plattform Lagoon ein Instrument gefunden, das dem Anspruch an Sicherheit entspricht. DependencyTrack ist ein mächtiges OpenSource-Tool, welches einfach zu betreiben, bedienen und integrieren ist. Für uns lässt es keine Wünsche offen und falls doch – we contribute!
Die unbegrenzte Vielfalt im Cloud-Native-Umfeld bietet viele Möglichkeiten, führt jedoch auch schnell zu grosser Komplexität und einer Vielzahl von Abhängigkeiten. Dass Security hierbei eine wichtige Rolle spielt, ist offensichtlich. Wie wir mit Lagoon den Security-Teilaspekt bezüglich Vulnerabilities in den Griff bekommen, zeigt dieser Blogpost.
DevSecOps in der Cloud
Befasst man sich mit DevSecOps
in einem cloud-basierten Umfeld, begegnet man zwangsläufig Fragen wie diesen:
- Weiss ich genau, was ich wo einsetze?
- Gibt es bekannte Vulnerablities, die mich in irgendeiner Form betreffen?
- Habe ich alte Versionen von Dependencies im Projekt?
- …
All diese Fragen drehen sich hauptsächlich um folgende Komponenten, die wir gerne im Griff haben wollen:
-
Dependencies
Ein externe Bibliothek – eine sogenannte Abhängigkeit (
Dependency
) – welche wir mit all ihren Fehlern und weiteren Dependencies in unsere Software einbinden. -
Basis-Images
Ein Image bestehend aus System-Bibliotheken, Werkzeugen und Plattformeinstellung, die unsere Software zum Erstellen oder Betreiben benötigt. Es ist enspricht einem Mini-Betriebssystem.
-
Runtime-Images (Container-Image)
Das gebaute Image, das am Ende der CI/CD-Pipeline bspw. in die Produktion deployed wird. Es beinhaltet das Basis-Image, unsere Anwendung und die externen Dependencies.
Auf unserer Digitalisierungsplattform Lagoon kommt man schnell mal auf eine stattliche Anzahl von Images, Libraries und Frameworks. Dies ohne Unterstützung einer Software zu bewältigen, grenzt an Leichtsinn.
DependencyTrack
Mit dem OpenSource-Tool DependencyTrack der OWASP Foundation haben wir das richtige Instrument gefunden. Das Tool bietet alle nötigen Features und unterstützt jegliche Ökosysteme. Folgende Vorteile sind für uns am wertvollsten:
Visualisierung
Alle Projekte und Vulnerablilities werden einfach und verständlich visualisiert. Pro Projekt (Build) ist ersichtlich, welche Version, zu welchem Zeitpunkt, mit welchen Vulnerabilities gebaut wurde.
Vulnerabilities direkt im Tool auditieren
Bei uns sieht das Vorgehen folgendermassen aus:
- Die Vulnerability wird beim Scan des Artefakts in der CI/CD-Pipeline entdeckt
- Im Tool wird ersichtlich, welche Libraries betroffen sind
- Pro Library wird evaluiert, ob das Projekt effektiv betroffen ist und aktualisiert werden muss
- Im Tool wird der Audit-Status pro Library gesetzt und der Scan neugestartet
Mit den Status FALSE_POSITIVE
oder NOT_AFFECTED
können Vulnerabilitis bewusst unterdrückt werden.
Integration in CI/CD-Pipelines
In der CI/CD-Pipeline wird nach dem Prinzip fail fast
zweimal ein Scan durchgeführt. Im ersten Scan werden nur Dependencies betrachet und im zweiten Scan das komplette Container-Image.
Schritt 1 – Dependency Check
Mit CycloneDX erstellen wir von unserem Build-Candidate ein CycloneDX BOM und übergeben dies DependencyTrack. DependencyTrack gibt das Resultat zurück und wir brechen die CI/CD-Pipeline ab, insofern ein projektspezifischer Threshold von Vunerabilites überschritten wird.
Schritt 2 – Image-Scanning
Mit dem CLI-Tool Syft erstellen wir aus dem gebauten Image ein Software Bill of Material (SBOM) und suchen mit Hilfe von DependencyTrack mögliche Vulnerabilities auf Container-Ebene.
Ausblick
In Zukunft wollen wir mit Hilfe des Notification-Feature von DependencyTrack alle bestehenden Images überwachen. Dies wird heute mit automatischen Weekly-Builds sichergestellt. Mit dem Notifications werden neue Vulnerabilities in existierenden Images schneller entdeckt und Risiken früher eliminiert.
Fazit
Mit DependencyTrack haben wir für die Plattform Lagoon ein Instrument gefunden, das dem Anspruch an Sicherheit entspricht. DependencyTrack ist ein mächtiges OpenSource-Tool, welches einfach zu betreiben, bedienen und integrieren ist. Für uns lässt es keine Wünsche offen und falls doch – we contribute!