Integrieren von SCA-Überprüfungen in Pipelines

Abgeschlossen

Sicherheitsüberprüfungen wurden früher als eine Aktivität betrachtet, die einmal pro Release von einem dedizierten Sicherheitsteam durchgeführt wurde, dessen Mitglieder kaum mit anderen Gruppen zu tun hatten.

Diese Praxis führt zu einem gefährlichen Muster, bei dem Sicherheitsspezialisten zahlreiche Probleme ausgerechnet zu einem Zeitpunkt aufdecken, an dem die Entwickler unter dem größten Druck stehen, ein Softwareprodukt zu veröffentlichen.

Dieser Druck führt häufig dazu, dass Software mit Sicherheitsmängeln bereitgestellt wird, die nach der Freigabe eines Produkts behoben werden müssen, weshalb die Überprüfung an mehreren Stellen des Entwicklungspfads in den Arbeitsablauf eines Teams integriert werden muss. Rugged DevOps kann dazu beitragen, dass alle Maßnahmen zur Qualitätssicherung, einschließlich der Sicherheit, kontinuierlich und automatisiert ablaufen.

Integration der CSA-Analyse mithilfe von Pull Requests

DevOps-Teams können Änderungsvorschläge für die Codebasis (main) einer Anwendung mithilfe von Pull Requests (PRs) übermitteln. Um die Einführung neuer Probleme zu vermeiden, müssen die Entwickler die Auswirkungen der Codeänderungen überprüfen, bevor sie einen PR erstellen. In einem DevOps-Prozess wird in der Regel für jede kleine Änderung ein PR erstellt. Änderungen werden kontinuierlich mit der Hauptcodebasis zusammengeführt, um diese auf dem neuesten Stand zu halten. Idealerweise sollte ein Entwickler vor der Erstellung eines PR auf Sicherheitsprobleme prüfen.

Folgende Azure Marketplace-Erweiterungen bieten Unterstützung bei der Integration von Überprüfungen im Rahmen von PRs:

  • Mend: Bietet Hilfe bei der Validierung von Abhängigkeiten mithilfe des zugehörigen binären Fingerabdrucks.
  • Checkmarx: Bietet eine inkrementelle Überprüfung von Änderungen.
  • Veracode: Implementiert das Konzept einer Entwicklersandbox.
  • Black Duck von Synopsis: Ein Überprüfungstool für Open-Source-Code, um Konformitätsverstöße zu erkennen, zu beheben und zu verwalten.

Diese Erweiterungen ermöglichen es Entwickler*innen, mit Änderungen zu experimentieren, bevor sie sie als PR einreichen.

Codeüberprüfung, Analyse und Integration für Build- und Releasedefinitionen

Entwickler müssen CI-Aktivitäten im Hinblick auf die Geschwindigkeit optimieren, um umgehend Feedback zu Buildproblemen zu erhalten. Die Codeüberprüfung kann schnell genug durchgeführt werden, um die CI-Builddefinition zu integrieren und einen fehlerhaften Build zu verhindern. Entwickler können damit den Status eines Builds auf Bereit/Grün zurücksetzen, indem sie mögliche Probleme sofort beheben.

Gleichzeitig muss das CD gründlich durchgeführt werden. In Azure DevOps wird das CD in der Regel über Releasedefinitionen (die die Buildausgabe umgebungsübergreifend fortführen) oder andere Builddefinitionen verwaltet.

Builddefinitionen können (täglich) geplant oder mit jedem Commit ausgelöst werden. In beiden Fällen kann die Builddefinition eine längere statische Analyse durchführen (wie in der folgenden Abbildung dargestellt).

Sie können das gesamte Codeprojekt überprüfen und alle Fehler oder Warnungen offline einsehen, ohne den CI-Fluss zu blockieren.

Workflowdiagramm, das zeigt, wie eine Builddefinition eine statische Analyse des Quellcodes auslösen kann