ESPACE PUBLICITAIRE DISPONIBLE · PARLONS-EN

Comment intégrer Snyk DeepCode AI aux vérifications de PR GitHub et pipelines CI/CD pour bloquer les vulnérabilités de code

365Finds Editorial
11 430 articles Wiki répertoriés

Utilisez 365 Wiki avec votre IA

Copiez le prompt ci-dessous, collez-le dans l’IA que vous utilisez déjà, puis posez directement votre question.

Télécharger le Skill complet

Commencez par essayer le prompt. Si vous utilisez souvent 365 Wiki, installez le Skill 365Wiki complet pour ne plus avoir à le coller. Sans IA habituelle, les versions web de Gemini ou Microsoft Copilot conviennent aussi.

Empêcher les failles de sécurité d'atteindre la production est l'objectif fondamental du DevSecOps moderne. Les outils traditionnels d'analyse statique de la sécurité des applications (SAST) souffrent fréquemment de lenteurs d'analyse, d'un taux élevé de faux positifs et de rapports verbeux qui ralentissent le travail des équipes. Snyk Code résout ces contraintes grâce à DeepCode AI, un moteur associant l'intelligence artificielle symbolique (moteurs de règles logiques et sémantiques) à des modèles d'apprentissage automatique entraînés sur du code sécurisé. Cette technologie permet d'analyser le flux de code en quelques secondes avec une excellente précision.

Pour empêcher l'intégration de code vulnérable dans les branches protégées, les équipes DevOps et d'ingénierie mettent en place une défense à deux niveaux :

  1. Vérifications natives de Pull Request GitHub (Intégration SCM) : Analyses différentielles (delta) automatisées exécutées à l'ouverture ou lors de la mise à jour d'une PR, affichant des commentaires de ligne et des tableaux récapitulatifs dans l'interface GitHub. La fusion est bloquée via les règles de protection de branche.
  2. Garde-fous de pipeline CI/CD (Snyk CLI & GitHub Actions) : Contrôles déterministes lors des phases de build exécutant la commande snyk code test selon des seuils de criticité définis, interrompant le pipeline en cas d'anomalie critique non résolue.

Voici la démarche complète pour configurer ces deux niveaux, instaurer des règles de blocage strictes et accélérer la remédiation grâce aux fonctionnalités d'IA de Snyk.


1. Fonctionnement de Snyk DeepCode AI dans le flux de travail des développeurs

DeepCode AI convertit le code source en arbres de syntaxe abstraite (AST) et en représentations intermédiaires (IR) pour modéliser précisément le flux de données et la propagation des entrées non sécurisées (Taint Analysis). Contrairement aux linters syntaxiques simples ou aux grands modèles de langage génératifs (LLM) sujets aux hallucinations, DeepCode AI s'appuie sur une architecture hybride :

Les analyses s'exécutant généralement en moins d'une minute, DeepCode AI s'intègre harmonieusement dans les revues de code quotidiennes sans dégrader la cadence de livraison.


2. Niveau 1 : Configuration des vérifications natives de Pull Request dans GitHub

Les vérifications de PR s'appuient sur l'intégration par webhooks entre Snyk et GitHub, offrant un retour direct dans l'interface GitHub sans consommer les minutes d'exécution des runners CI.

Étape 1 : Prérequis

Étape 2 : Définir les critères d'échec dans Snyk

  1. Connectez-vous à la console Snyk et rendez-vous dans Settings > Integrations > GitHub.
  2. Faites défiler jusqu'à la section Pull Request Checks.
  3. Dans la partie Code Analysis (Snyk Code) :
    • Activez l'option en passant Code Analysis à Enabled.
    • Définissez les Fail conditions (Conditions d'échec) : Sélectionnez le seuil de sévérité qui fera échouer la vérification de statut (par exemple, High). En choisissant High, seules les failles de criticité élevée marqueront la vérification en échec, tandis que les anomalies de sévérité faible ou moyenne pourront être suivies sans bloquer le développement.
    • (Facultatif) Cochez Only fail when the issues found have a fix available si votre politique impose de ne bloquer la fusion que lorsqu'une solution automatisée est disponible.
  4. Enregistrez les modifications. Cette politique peut s'appliquer à l'ensemble des dépôts de l'organisation ou être surchargée par projet.

Étape 3 : Activer le récapitulatif de PR et les commentaires contextuels

Dans les paramètres d'expérience de PR de Snyk :


3. Blocage obligatoire des fusions grâce aux règles de protection de branche GitHub

Signaler un échec de PR check dans Snyk n'empêche pas physiquement un collaborateur de valider la fusion dans GitHub si aucune règle de protection n'est activée. Il est indispensable d'activer les Branch Protection Rules (Règles de protection de branche) dans GitHub.

Pour activer ce blocage :

  1. Sur le dépôt GitHub, ouvrez Settings > Branches.
  2. Dans la section Branch protection rules, cliquez sur Add rule (ou modifiez la règle de la branche principale telle que main ou production).
  3. Cochez Require a pull request before merging.
  4. Cochez Require status checks to pass before merging.
  5. Activez également Require branches to be up to date before merging pour vous assurer que le code est validé par rapport au dernier état de la branche cible.
  6. Dans le champ de recherche des vérifications d'état, sélectionnez le contrôle de Snyk Code (nommé en général snyk/code ou code/snyk).
  7. Cliquez sur Save changes.

Une fois configuré, GitHub désactive le bouton "Merge pull request" dès que DeepCode AI relève des failles dont la gravité atteint ou dépasse le seuil paramétré.


4. Niveau 2 : Garde-fous dans les pipelines CI/CD avec GitHub Actions

En complément des vérifications interactives lors des PR, intégrer snyk code test dans vos workflows CI/CD garantit une gouvernance stricte sur les branches principales, les builds réguliers et les environnements de préproduction.

Configuration du jeton d'authentification

  1. Générez un Service Account Token ou un token d'API utilisateur dans Snyk.
  2. Dans le dépôt GitHub, allez dans Settings > Secrets and variables > Actions.
  3. Créez un secret nommé SNYK_TOKEN et collez la clé d'accès.

Définition du workflow GitHub Actions

Créez le fichier .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

Paramètres CLI et codes de sortie

La commande snyk code test renvoie des codes de sortie standardisés :

Centralisation dans GitHub Advanced Security

Grâce à la sortie au format SARIF (--sarif-file-output=snyk-code.sarif) et au téléversement via github/codeql-action/upload-sarif, l'ensemble des résultats de DeepCode AI est accessible dans l'onglet Security > Code scanning alerts de GitHub, offrant une visibilité unifiée aux équipes de sécurité.


5. Flux de remédiation : DeepCode AI Fix et prévention locale

Bloquer les failles ne suffit pas ; il est crucial de permettre aux développeurs de les corriger rapidement et sans friction.

  1. Remédiation en un clic dans la PR : Dès qu'un problème est soulevé, Snyk propose un correctif. Sur les projets compatibles, le développeur peut lancer la création d'une PR de correction automatique, appliquant immédiatement la validation des entrées ou le remplacement par une fonction sécurisée.
  2. Démarche "Shift-Left" dans l'IDE : Encouragez les équipes à installer l'extension Snyk Security pour VS Code, IntelliJ IDEA ou Eclipse. Le greffon exploite directement le moteur DeepCode AI en local, signalant les failles potentielles au moment de la frappe, bien avant le commit.
  3. Exclusion des répertoires non pertinents avec .dcignore : Pour éviter d'analyser les mocks de tests, les dépendances tierces ou les artefacts de compilation, créez un fichier .dcignore à la racine du dépôt :
    dist/
    build/
    vendor/
    **/*.spec.ts
    **/*.test.js
    

6. Stratégie de déploiement progressif pour les équipes d'ingénierie

Imposer un blocage strict dès le premier jour sur une base de code existante peut paralyser les déploiements et susciter de l'incompréhension. Une adoption progressive en trois phases est recommandée :

PhaseConfiguration des PR ChecksComportement du Pipeline CI/CDObjectif de l'équipe
Phase 1 : Visibilité & DiagnosticPR Checks et commentaires en ligne activés, mais configurés en mode optionnel (non bloquant) dans GitHub.Exécution de snyk code test en CI avec continue-on-error: true et publication des rapports SARIF.Familiariser les équipes avec DeepCode AI et évaluer la dette de sécurité initiale.
Phase 2 : Blocage des risques critiquesProtection de branche obligatoire pour le check Snyk ; seuil configuré sur High / Critical.Interruption stricte du pipeline pour les vulnérabilités élevées (--severity-threshold=high).Bloquer l'introduction d'anomalies majeures (exécutions de code à distance, injections SQL, identifiants codés en dur).
Phase 3 : Gouvernance continueExtension du blocage à la sévérité Medium sur les services clés ; adoption généralisée de DeepCode AI Fix.Contrôles systématiques en CI et audits réguliers avec --report pour synchroniser le tableau de bord Snyk.Maintenir un niveau de sécurité élevé, zéro nouveau défaut critique et résorption de la dette technique.

En associant les vérifications natives de Pull Request GitHub aux règles de protection de branche et aux workflows GitHub Actions, les équipes DevOps établissent une barrière automatisée et assistée par IA qui garantit la fiabilité du code sans ralentir la vélocité logicielle.


Références