WERBEPLATZ VERFÜGBAR · PARTNERSCHAFTEN WILLKOMMEN

So integrieren DevOps- und Engineering-Teams Snyk DeepCode AI in GitHub PR-Checks und CI/CD-Pipelines zum Blockieren von Code-Schwachstellen

365Finds Editorial
11.430 Wiki-Artikel erfasst

365 Wiki mit deiner KI nutzen

Kopiere den Prompt unten, füge ihn in deine gewohnte KI ein und stelle direkt deine Frage.

Vollständigen Skill herunterladen

Probiere es zuerst mit dem Prompt aus. Wenn du 365 Wiki häufig nutzt, installiere den vollständigen 365Wiki Skill, damit du ihn nicht jedes Mal einfügen musst. Ohne bevorzugte KI funktionieren auch die Webversionen von Gemini oder Microsoft Copilot.

Sicherheitslücken abzufangen, bevor Code in die Produktionsumgebung gelangt, ist das Kernziel moderner DevSecOps-Praktiken. Herkömmliche SAST-Werkzeuge (Static Application Security Testing) kämpfen häufig mit langen Scanzeiten, hohen Fehlalarmraten (False Positives) und unübersichtlichen Ergebnisprotokollen, die Entwickler ausbremsen. Snyk Code begegnet diesen Hürden mit DeepCode AI, einer Analyse-Engine, die symbolische KI (semantische Logikregeln) mit sicherheitsspezifisch trainierten Machine-Learning-Modellen kombiniert. Dadurch werden Codeabläufe innerhalb von Sekunden analysiert – mit hoher Präzision und minimaler Fehlalarmquote.

Um zu verhindern, dass verwundbarer Code in geschützte Branches gemergt wird, etablieren DevOps- und Entwicklungsteams typischerweise eine zweistufige Verteidigungslinie:

  1. Native GitHub Pull-Request-Checks (SCM-Integration): Automatische Delta-Scans beim Erstellen oder Aktualisieren von PRs, die Inline-Anmerkungen und Zusammenfassungstabellen direkt auf GitHub bereitstellen. Über Branch Protection Rules wird das Mergen blockiert.
  2. CI/CD-Pipeline-Gates (Snyk CLI & GitHub Actions): Deterministische Überprüfungen im Build- und Bereitstellungsprozess mittels snyk code test, die bei Überschreitung festgelegter Schweregrad-Schwellenwerte den Build abbrechen und den Pipeline-Fortschritt stoppen.

Im Folgenden wird praxisnah erläutert, wie beide Ebenen konfiguriert, Branch Protection Rules scharfgeschaltet und automatisierte Behebungen mit DeepCode AI umgesetzt werden.


1. Funktionsweise von Snyk DeepCode AI im Entwickler-Workflow

DeepCode AI überführt den Quellcode in abstrakte Syntaxbäume (AST) sowie Zwischendarstellungen (Intermediate Representations), um Datenflüsse und Taint-Pfade (Taint Analysis) präzise nachzuverfolgen. Im Gegensatz zu einfachen Linting-Tools oder rein generativen Sprachmodellen (LLMs), die zu Halluzinationen neigen, setzt DeepCode AI auf eine hybride Architektur:

Da Analysen meist in unter 60 Sekunden abgeschlossen sind, lässt sich DeepCode AI nahtlos in reguläre Code-Reviews einbinden, ohne die Bereitstellungsgeschwindigkeit zu beeinträchtigen.


2. Ebene 1: Konfiguration nativer GitHub Pull-Request-Checks

Native PR-Checks nutzen Webhook-Verbindungen zwischen Snyk und GitHub. Sie liefern unmittelbares Feedback in der GitHub-Oberfläche, ohne Rechenminuten auf CI-Build-Runnern zu verbrauchen.

Schritt 1: Voraussetzungen

Schritt 2: Fail Conditions in Snyk konfigurieren

  1. Öffnen Sie die Snyk Web UI und navigieren Sie zu Settings > Integrations > GitHub.
  2. Scrollen Sie zum Bereich Pull Request Checks.
  3. Im Abschnitt Code Analysis (Snyk Code):
    • Schalten Sie Code Analysis auf Enabled.
    • Konfigurieren Sie die Fail conditions (Fehlschlag-Bedingungen): Wählen Sie den Schweregrad aus, ab dem ein Status-Check fehlschlagen soll (z. B. High). Bei Auswahl von High schlägt der Check nur bei Sicherheitslücken mit hohem Schweregrad fehl, während Funde mit niedrigem oder mittlerem Schweregrad zur Überprüfung sichtbar bleiben, ohne das Mergen zu blockieren.
    • (Optional) Aktivieren Sie Only fail when the issues found have a fix available, falls Sie das Blockieren auf Fälle beschränken möchten, für die Snyk eine automatische Lösung bereitstellen kann.
  4. Speichern Sie die Konfiguration auf Organisationsebene oder passen Sie sie projektbezogen an.

Schritt 3: PR-Zusammenfassungen und Inline-Kommentare aktivieren

Aktivieren Sie in den Einstellungen zur PR-Erfahrung:


3. Merges blockieren mit GitHub Branch Protection Rules

Das Markieren eines PR-Checks als „Failed“ in Snyk hindert Entwickler auf GitHub nicht automatisch am Mergen. Um eine echte Sperre durchzusetzen, müssen Branch Protection Rules (Branch-Schutzregeln) in GitHub eingerichtet werden.

Vorgehensweise:

  1. Navigieren Sie im GitHub-Repository zu Settings > Branches.
  2. Klicken Sie im Bereich Branch protection rules auf Add rule (oder bearbeiten Sie eine bestehende Regel für main bzw. production).
  3. Aktivieren Sie Require a pull request before merging.
  4. Aktivieren Sie Require status checks to pass before merging.
  5. Aktivieren Sie Require branches to be up to date before merging, damit Änderungen gegen den aktuellen Stand des Ziel-Branches geprüft werden.
  6. Suchen Sie im Suchfeld nach dem Status-Check von Snyk Code (in der Regel snyk/code oder code/snyk) und wählen Sie ihn aus.
  7. Speichern Sie die Änderungen mit Save changes.

Nun sperrt GitHub den Button „Merge pull request“, sobald DeepCode AI Schwachstellen meldet, die den konfigurierten Schwellenwert erreichen oder überschreiten.


4. Ebene 2: CI/CD-Pipeline-Gates mit GitHub Actions

Neben den interaktiven PR-Checks garantiert die Ausführung von snyk code test in der CI/CD-Pipeline eine lückenlose Durchsetzung der Richtlinien bei automatisierten Builds, Release-Zweigen und Staging-Bereitstellungen.

Zugangsdaten hinterlegen

  1. Erstellen Sie in Snyk einen Service Account Token oder persönlichen API-Token.
  2. Gehen Sie im GitHub-Repository zu Settings > Secrets and variables > Actions.
  3. Legen Sie ein Secret namens SNYK_TOKEN an und fügen Sie den Token-Wert ein.

GitHub Actions Workflow-Datei definieren

Erstellen Sie die Datei .github/workflows/snyk-code.yml:

name: Snyk DeepCode AI Security Scan

on:
  push:
    branches: [ "main", "develop" ]
  pull_request:
    branches: [ "main" ]

jobs:
  security-gate:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write

    steps:
      - name: Checkout Source Code
        uses: actions/checkout@v4

      - name: Install Snyk CLI
        uses: snyk/actions/setup@master

      - name: Run Snyk DeepCode AI SAST Scan
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        run: |
          snyk code test \
            --severity-threshold=high \
            --sarif-file-output=snyk-code.sarif

      - name: Upload SARIF Results to GitHub Code Scanning
        if: always()
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: snyk-code.sarif

CLI-Optionen und Exit-Codes verstehen

Der Befehl snyk code test verwendet standardisierte Exit-Codes:

Nahtlose Einbindung in GitHub Advanced Security

Durch das SARIF-Format (--sarif-file-output=snyk-code.sarif) und den Upload mit github/codeql-action/upload-sarif erscheinen alle Befunde von DeepCode AI direkt unter Security > Code scanning alerts in GitHub, was die zentrale Auswertung durch Sicherheits- und Betriebsteams erleichtert.


5. Behebungs-Workflow: DeepCode AI Fix und lokale Prävention

Effektive Sicherheit bedeutet nicht nur das Blockieren von Fehlern, sondern auch das Bereitstellen schneller Lösungswege für Entwickler.

  1. Ein-Klick-Korrektur im PR: Stellt DeepCode AI ein Problem fest, liefert Snyk Lösungsvorschläge mit. Bei unterstützten Technologien können Entwickler direkt einen automatischen Behebungs-PR anstoßen, der Eingabevalidierungen oder sichere Methodenaufrufe als Commit einpflegt.
  2. Shift-Left in der IDE: Entwickler sollten die Erweiterung Snyk Security in VS Code, IntelliJ IDEA oder Eclipse nutzen. Da das Plugin auf dieselbe DeepCode AI Engine zugreift, werden Taint-Pfade bereits beim Schreiben des Codes markiert – lange vor dem Commit.
  3. Ausschlüsse mit .dcignore definieren: Um Test-Mocks, Drittanbieter-Bundles oder Build-Artefakte von der Analyse auszunehmen, wird im Projektstammverzeichnis eine .dcignore-Datei angelegt:
    dist/
    build/
    vendor/
    **/*.spec.ts
    **/*.test.js
    

6. Empfohlene Rollout-Strategie für Engineering-Teams

In bestehenden Repositories am ersten Tag sofort alle Sicherheitslücken hart zu blockieren, führt oft zu blockierten Releases und Unmut. Eine dreiphasige Einführung minimiert Reibungsverluste:

PhasePR-Check-KonfigurationCI/CD-Pipeline-VerhaltenZiel des Teams
Phase 1: Transparenz & BaselinePR-Checks mit Inline-Kommentaren aktiv, in GitHub jedoch als optional (nicht blockierend) markiert.CI führt snyk code test mit continue-on-error: true aus und lädt SARIF-Reports hoch.Das Team mit den Befunden vertraut machen und den aktuellen Sicherheitsstand erfassen.
Phase 2: Kritisches GateBranch Protection erzwingt Snyk-Status-Check; Fail Condition auf High / Critical festgelegt.Pipeline bricht bei Funden mit hohem Schweregrad ab (--severity-threshold=high).Einschleusen gravierender Risiken (z. B. SQL Injection, Remote Code Execution) unterbinden.
Phase 3: Fortlaufende GovernanceAusweitung auf Schweregrad Medium für Kernservices; flächendeckende Nutzung von DeepCode AI Fix.Regelmäßige Pipeline-Gates und periodische Audits mit --report zum Abgleich mit Snyk Web.Hohe Codehygiene sichern, neue Befunde auf null halten und Altlasten systematisch abbauen.

Die Verknüpfung nativer GitHub PR-Checks mit Branch-Schutzregeln und GitHub Actions Pipelines ermöglicht DevOps-Teams eine KI-gestützte, automatisierte Sicherheitsarchitektur, die Zuverlässigkeit garantiert, ohne die Entwicklungsgeschwindigkeit einzuschränken.


Referenzen