Close

Intégrer Snyk dans Atlassian Open DevOps

Portrait de Warren Marusiak
Warren Marusiak

Senior Technical Evangelist

Pour montrer comment développer, déployer et gérer des applications à l'aide de Jira Software et de divers outils connectés, notre équipe a créé ImageLabeller, une application de démo simple basée sur AWS qui utilise l'apprentissage machine pour appliquer des étiquettes à des images.

Cette page explique comment intégrer Snyk à Bitbucket. Avant de commencer, nous vous recommandons de lire la page Introduction to ImageLabeller (Présentation d'ImageLabeller) pour plus de contexte.

Les exploits et les failles de sécurité se multiplient à mesure que les applications logicielles évoluent et se complexifient.

Les pratiques de développement modernes incluent une réutilisation massive de code. Tout d'abord, sous la forme de bibliothèques standard propres à un langage, notamment C++ STL, la bibliothèque standard Golang et Microsoft .NET. Ensuite, sous la forme de bibliothèques open source disponibles sur des sites tels que GitHub. Une grande partie de ce code est créée à l'aide d'autres bibliothèques, introduisant ainsi un réseau de dépendances dans les logiciels modernes.

Cette quantité de code augmente la probabilité de failles de sécurité. Il est impossible de contrôler les vulnérabilités en vérifiant manuellement toutes les dépendances par rapport aux listes CVE. L'ajout d'une recherche automatique des vulnérabilités aux processus de CI/CD peut aider à identifier et à atténuer les risques de sécurité.

Bitbucket, la solution de collaboration sur le code d'Atlassian, a investi dans une intégration native étroite avec Snyk, le principal fournisseur de solutions de sécurité pour les développeurs. Cela signifie que vous ne devez installer ou configurer aucune app. Vous pouvez consulter les informations des tickets de sécurité directement dans Bitbucket. Une fois activé, Snyk vérifie automatiquement votre code et ses dépendances, et vous alerte en cas de vulnérabilité afin que vous puissiez les corriger avant le déploiement.

Snyk détecte quatre fois plus de vulnérabilités que n'importe quelle autre base de données commerciale. De plus, lorsque de nouvelles vulnérabilités sont découvertes, sa base de données est mise à jour jusqu'à 46 jours plus tôt que les autres bases de données.

Connecter Bitbucket et Snyk

Vous pouvez utiliser Snyk dans Bitbucket de plusieurs façons. La première consiste à activer l'intégration native de Snyk à Bitbucket via l'onglet Security (Sécurité) sur l'écran de votre dépôt. La seconde consiste à ajouter une étape Snyk à un fichier bitbucket-pipelines.yml. Aucune de ces deux méthodes ne présente d'inconvénient particulier. L'intégration de Synk dans Bitbucket permet à tous ceux qui consultent le dépôt dans Bitbucket d'accéder rapidement aux données de vulnérabilité. Vous pouvez ensuite accéder au site web de Snyk pour obtenir des informations supplémentaires sur chaque vulnérabilité détectée. L'étape Snyk d'un fichier bitbucket-pipelines.yml permet de scanner automatiquement chaque commit au sein d'un pipeline.

Ajouter l'intégration Snyk à Bitbucket

Pour ajouter Snyk à un dépôt Bitbucket, cliquez sur l'onglet Security (Sécurité), recherchez l'intégration Snyk, puis sélectionnez Try now (Essayer maintenant).

Image d'ajout de l'intégration Snyk à Bitbucket

Accordez l'accès, puis cliquez sur Connect Bitbucket with Snyk (Connecter Bitbucket à Snyk).

Connexion de Bitbucket à Snyk

Une fois l'intégration configurée, fermez l'onglet.

Guide d'intégration réussie

Cliquez sur la nouvelle option Snyk qui apparaît dans le panneau de navigation de gauche. Cliquez ensuite sur le fichier go.mod pour accéder à des informations plus détaillées. Dans cet exemple, le dépôt Golang utilise des modules Go pour gérer les dépendances. D'autres types de dépôts auront différents fichiers de dépendance.

Écran Snyk

Pour en savoir plus sur la façon de corriger chaque vulnérabilité, cliquez sur visit Snyk (accéder à Snyk) pour accéder au site web de Snyk.

Accès à Snyk

Cette vue sur l'app Snyk est similaire à l'écran des informations dans Bitbucket. Elle présente la liste des vulnérabilités, ainsi que des informations supplémentaires sur chaque vulnérabilité.

Capture d'écran du site web de Snyk

Ci-dessous, un exemple de rapport de vulnérabilité dans Snyk. La hiérarchie indiquant l'origine de la vulnérabilité est indiquée dans la section Detailed paths (Chemins détaillés). Dans l'exemple ci-dessous, vous pouvez voir que SubmitImage hérite de cette vulnérabilité du SDK AWS Golang. Snyk résume l'état de tous les tickets sur la gauche. Dans ce cas, aucun ticket ne peut être résolu. Notez qu'il y a cinq tickets No fix available (Aucune correction disponible) dans la section Fixability (Réparabilité). Cela signifie qu'aucune solution n'est actuellement disponible pour ces tickets. Les développeurs peuvent surveiller l'intégration et appliquer les corrections dès qu'elles sont disponibles.

Capture d'écran des informations de vulnérabilité

Ajouter une étape Snyk aux fichiers bitbucket-pipelines.yml

En plus d'accéder à Snyk via l'interface utilisateur de Bitbucket, les fonctionnalités de Snyk sont accessibles via Bitbucket Pipelines en ajoutant des étapes aux fichiers bitbucket-pipelines.yml. Cela signifie que l'analyse des vulnérabilités aura lieu automatiquement à chaque commit et vous avertira de toute faille de sécurité.

Vous trouverez ci-dessous deux snippets bitbucket-pipelines.yml permettant d'exécuter des tests Snyk dans le cadre d'un pipeline.

Ajouter Snyk à Bitbucket Pipelines pour Golang

Cet exemple montre comment exécuter un test Snyk pour un projet Golang en utilisant des modules Go pour la gestion des dépendances.

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

Ajouter Snyk à Bitbucket Pipelines pour Python

Cet exemple montre comment exécuter un test Snyk pour un projet Python en utilisant Pip pour la gestion des dépendances.

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

Voici à quoi cela ressemble l'exécution de l'étape runsnyktest dans un pipeline Bitbucket.

Étape runsnyktest dans un pipeline Bitbucket

Conclusion…

La pratique consistant à intégrer la sécurité dans votre pipeline de CI/CD est un principe fondamental de DevSecOps. DevSecOps encourage l'application de la sécurité à chaque étape du pipeline DevOps type : planification, programmation, développement, test, livraison et déploiement. Lorsqu'elle fait partie de votre workflow, la sécurité devient une partie active et intégrée du processus de développement, et non une question secondaire. Cela se traduit par des apps plus sûres, une réduction des incidents et des clients plus satisfaits.

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


Partager cet article

Lectures recommandées

Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.

Illustration Devops

Communauté DevOps

Illustration Devops

Parcours de formation DevOps

Illustration d'une carte

Essayez la solution gratuitement

Inscrivez-vous à notre newsletter Devops

Thank you for signing up