Integrieren von Snyk in Atlassian Open DevOps
Warren Marusiak
Senior Technical Evangelist
Um zu demonstrieren, wie Anwendungen mit Jira Software und verschiedenen verbundenen Tools entwickelt, bereitgestellt und verwaltet werden können, hat unser Team ImageLabeller entwickelt. Dabei handelt es sich um eine einfache Demo-Anwendung, die auf AWS basiert und maschinelles Lernen nutzt, um Images mit Stichwörtern zu versehen.
Auf dieser Seite wird das Integrieren von Snyk mit Bitbucket behandelt. Wir empfehlen dir, vorab die Seite mit der Einführung in ImageLabeller zu lesen, um mehr über den Kontext zu erfahren.
Verbinden von Bitbucket und Snyk
Es gibt verschiedene Möglichkeiten, in Bitbucket mit Snyk zu arbeiten. Du kannst die native Snyk-Integration in Bitbucket im Repository-Bereich auf der Registerkarte "Sicherheit" aktivieren. Außerdem kannst du der Datei "bitbucket-pipelines.yml" einen Snyk-Schritt hinzuzufügen. Es spricht nichts dagegen, beide Möglichkeiten zu nutzen. Die Synk-Integration in Bitbucket bietet jedem, der sich das Repository in Bitbucket ansieht, schnellen Zugriff auf Sicherheitsdaten. Bei Bedarf gelangst du von dort zur Website von Snyk, die zusätzliche Informationen zu jeder gefundenen Schwachstelle liefert. Der Snyk-Schritt in der Datei "bitbucket-pipelines.yml" ermöglicht automatische Scans bei jedem Commit in einer Pipeline.
Hinzufügen der Snyk-Integration zu Bitbucket
Um Snyk einem Bitbucket-Repository hinzuzufügen, klicke auf die Registerkarte Sicherheit, navigiere zur Snyk-Integration, und klicke dann auf Jetzt testen.
Gewähre Zugriff, und klicke dann auf Connect Bitbucket with Snyk (Bitbucket mit Snyk verbinden).
Wenn die Integration eingerichtet ist, schließe die Registerkarte.
Klicke auf die neue Snyk-Option, die in der linken Navigationsleiste angezeigt wird. Klicke dann auf die Datei "go.mod", um detailliertere Informationen zu erhalten. Das Golang-Repository verwendet in diesem Beispiel Go-Module, um Abhängigkeiten zu verwalten. Für andere Arten von Repositorys gibt es andere Abhängigkeitsdateien.
Weitere Informationen zum Beheben der einzelnen Schwachstellen erhältst du, wenn du auf visit Snyk (Snyk aufrufen) klickst, um zur Snyk-Website zu gelangen.
Diese Ansicht in der Snyk-App ähnelt der Detailansicht in Bitbucket. Dieser Bildschirm zeigt eine Liste von Schwachstellen mit ergänzenden Informationen.
Unten siehst du ein Beispiel für einen Snyk-Bericht zu Sicherheitsschwachstellen. Eine Hierarchie zum Ursprung der jeweiligen Schwachstelle wird im Abschnitt Detailed paths (Detaillierte Pfade) angezeigt. Im Beispiel unten kannst du sehen, dass SubmitImage diese Schwachstelle aus dem AWS-Golang-SDK übernommen hat. Snyk fasst den Status aller Probleme auf der linken Seite zusammen. In diesem Fall ist keines der Probleme behebbar. Wie du siehst, sind unter Fixability (Behebbarkeit) fünf Probleme mit dem Hinweis No fix available (Keine Problembehebung verfügbar) aufgeführt. Das bedeutet, dass für diese Probleme derzeit keine Lösung verfügbar ist. Entwickler können die Integration überwachen und Fixes anwenden, sobald diese verfügbar sind.
Hinzufügen eines Snyk-Schritts zu "bitbucket-pipelines.yml"
Du kannst auf Snyk nicht nur über die Bitbucket-Benutzeroberfläche zugreifen, sondern auch über Bitbucket Pipelines, indem du Schritte zur jeweiligen Datei "bitbucket-pipelines.yml" hinzufügst. Das bedeutet, dass Schwachstellenscans bei jedem Commit automatisch erfolgen und du über Sicherheitsschwachstellen benachrichtigt wirst.
Unten sind zwei Snippets von "bitbucket-pipelines.yml" zum Ausführen von Snyk-Tests als Teil einer Pipeline dargestellt.
Hinzufügen von Snyk zu Bitbucket Pipelines für Golang
Dieses Beispiel zeigt, wie du einen Snyk-Test für ein Golang-Projekt mit Go-Modulen für das Abhängigkeitsmanagement durchführst.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:golang
script:
- snyk auth $SNYK_TOKEN
- cd submitImage
- go mod graph
- snyk test
pipelines:
default:
- step: *runsnyktest
Hinzufügen von Snyk zu Bitbucket Pipelines für Python
Dieses Beispiel zeigt, wie du einen Snyk-Test für ein Python-Projekt mit Python pip für das Abhängigkeitsmanagement durchführst.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:python
script:
- snyk auth $SNYK_TOKEN
- cd src
- snyk test --skip-unresolved
- cd ../tst
- snyk test --skip-unresolved
pipelines:
default:
- step: *runsnyktest
Hier ist dargestellt, wie das Ausführen des Schritts "runsnyktest" in einer Bitbucket-Pipeline aussieht.
Fazit
Die Praxis, Sicherheitsmaßnahmen in deine CI/CD-Pipeline zu integrieren, ist ein Kerngrundsatz von DevSecOps. Bei DevSecOps gilt, dass Sicherheit Bestandteil jeder Phase einer typischen DevOps-Pipeline sein sollte: Planung, Code, Build, Test, Release und Deployment. Wenn du Sicherheitsmaßnahmen in deinen Workflow integrierst, wandelt sich Sicherheit vom Nebenschauplatz zu einem aktiven, integrierten Teil des Entwicklungsprozesses. Das bedeutet sicherere Apps, weniger Vorfälle und zufriedenere Kunden.
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.