Skip to main content

Bien démarrer avec Snyk pour développer en Python en toute sécurité

Écrit par
blog feature secure python dev

4 août 2021

0 minutes de lecture

Vous développez en Python et souhaitez sécuriser facilement vos applications ? Vous êtes au bon endroit ! Snyk vous aide à sécuriser l’ensemble du code de votre application Python — votre propre code, les bibliothèques open source que vous utilisez, vos conteneurs et votre infrastructure as code (IaC) — en s’intégrant de manière transparente à vos workflows de développement existants.

La plateforme Snyk se compose de quatre produits, chacun conçu pour vous aider à sécuriser les différents éléments de votre application Python avec le moins de friction possible :

  • Snyk Code permet de détecter et de corriger les problèmes de sécurité et de qualité dans votre propre code Python.

  • Snyk Open Source permet de détecter et de corriger les vulnérabilités de sécurité et les problèmes de licence dans les packages Python open source utilisés pour créer votre application.

  • Snyk Container permet de détecter et de corriger les vulnérabilités de sécurité dans vos images de conteneur Python.

  • Snyk Infrastructure as Code permet de détecter et de corriger les vulnérabilités de sécurité dans le code qui configure le déploiement de vos applications Python.

Dans cet article, nous allons voir à quel point il est facile d’intégrer les tests de sécurité de Snyk à vos méthodes de travail actuelles. Le forfait gratuit de Snyk suffit amplement pour tester les différentes étapes décrites ci-dessous et, bien sûr, pour tout projet de petite envergure.

Sécurisez votre application Python dès le départ

En tant que développeur, plus vous détectez tôt les problèmes, plus il est facile de les corriger. Corriger une vulnérabilité critique après avoir empaqueté et livré votre code prend tout simplement plus de temps que de la corriger plus tôt dans le processus.

Conseil de pro : Snyk est gratuit à l’essai et à l’utilisation pour l’open source. Pour utiliser Snyk Open Source ou Snyk Code avec un plugin d’IDE, vous n’avez pas besoin d’autoriser Snyk à accéder à vos dépôts GitHub. Le plus simple pour tester Snyk consiste à créer un compte gratuit et à analyser un dépôt open source. Aucune installation n’est requise et l’intégration se fait en quelques secondes.

Snyk vous propose plusieurs façons de sécuriser votre code dès les premières étapes du développement : dans votre IDE, avec Advisor et avec la CLI Snyk.

IDE

Vous pouvez également utiliser Snyk pour sécuriser votre code directement dans votre IDE. Le plugin Snyk pour PyCharm, par exemple, prend en charge Snyk Open Source et Snyk Code. Il vous aide à détecter et à corriger facilement les vulnérabilités connues dans vos dépendances open source, ainsi que les problèmes de sécurité et les bugs dans votre propre code.

Le plugin est facile à configurer et peut être téléchargé et installé comme n’importe quel autre plugin JetBrains, directement depuis votre IDE.

Dans PyCharm, accédez à Preferences, puis à Plugins, recherchez Snyk dans la marketplace JetBrains, puis cliquez sur OK pour télécharger et installer le plugin.

Connectez ensuite le plugin à votre compte Snyk. Pour cela, cliquez sur le bouton Connect your IDE to Snyk dans la vue du plugin et suivez les instructions pour vous authentifier.

Et voilà ! Il ne vous reste plus qu’à lancer un test Snyk. Cliquez sur le bouton Analyze now! pour démarrer les tests de sécurité de Snyk. En quelques secondes, le plugin affiche une liste des différents types de problèmes détectés, répartis en trois catégories :

  • Sécurité de l’open source : vulnérabilités connues dans les dépendances open source directes et indirectes (transitives) que vous ajoutez au projet

  • Sécurité du code : faiblesses de sécurité détectées dans votre propre code

  • Qualité du code : problèmes de qualité dans votre propre code

PyCharm affiche un projet Python avec des problèmes de sécurité détectés par Snyk, notamment des vulnérabilités d’injection de commandes et de traversée de chemins dans package_index.py.

Pour les problèmes détectés dans votre propre code, le plugin détaille notamment le flux de données et indique les fichiers et les lignes concernés. Cliquez sur le nom du fichier pour l’ouvrir directement à la ligne où le problème est introduit. L’analyse du flux de données vous aide à repérer les problèmes et à comprendre comment ils se propagent dans l’application, afin de rendre les problèmes complexes plus faciles à comprendre et à suivre.

Mais le plugin ne s’arrête pas là. En plus de vous montrer les erreurs présentes dans le code, il fournit également des exemples de corrections apportées par d’autres, pour vous aider à agir plus rapidement.

Plugin de sécurité Snyk dans un IDE, affichant des vulnérabilités dans du code Python et un diff de code avec les modifications mises en évidence

Snyk Advisor

Snyk Advisor est un outil de recherche en ligne gratuit qui vous aide à choisir les packages open source ou les images de base de conteneur à utiliser. Il comprend tous les projets de PyPi ainsi que les images de base Python de Docker Hub. En tant que développeur Python, vous pouvez vous en servir pour étudier différents packages et images et évaluer leur état général et leur niveau de sécurité avant de les intégrer à votre projet.

Page Snyk Advisor du package Python Jinja2, affichant un score de santé de 99/100, des graphiques de popularité et de maintenance, ainsi que des informations sur la sécurité

Pour le projet analysé à l’étape précédente, l’étude du package Jinja2 aurait révélé que la version 3 est non seulement la plus populaire, mais qu’elle ne présente également aucune vulnérabilité.

CLI

La CLI Snyk est un outil puissant et gratuit qui vous permet d’exécuter les analyses de sécurité de Snyk dans votre environnement de développement local, manuellement ou dans le cadre de votre pipeline CI/CD. Elle propose de nombreux arguments pour extraire des détails spécifiques des résultats d’analyse de Snyk et personnaliser le processus de test.

Remarque : La CLI Snyk repose sur Node.js et npm, SCOOP ou Homebrew. Vous devez les avoir installés pour pouvoir utiliser la CLI Snyk.

La configuration de la CLI Snyk est simple. Vous pouvez l’installer rapidement avec npm ou Homebrew. Il ne vous reste ensuite qu’à vous authentifier avec votre compte Snyk :

npm install -g snyk
snyk auth

Il ne vous reste qu’une étape pour tester votre projet Python : exécutez simplement la commande snyk test depuis le dossier racine du projet.

Pour les tests Snyk Open Source, vous devrez également installer les dépendances avec :

pip install -r requirements.txt 
snyk test

Conseil de pro : Vous pouvez générer le fichier requirements.txt d’un projet en activant l’environnement virtuel et en utilisant la commande pip freeze > requirements.txt.

Snyk ne se contente pas de fournir une liste des dépendances vulnérables et des problèmes de licence : il fournit aussi des informations complémentaires pour y remédier, comme les versions recommandées vers lesquelles mettre à niveau certaines dépendances.

Dans le projet utilisé pour cet article, Snyk signale une vulnérabilité de gravité moyenne introduite par la version 2.11.1 du package Jinja et recommande une mise à niveau mineure vers la version 2.11.3 pour la corriger.

Terminal affichant l’analyse par Snyk de neuf dépendances Python et la détection d’une vulnérabilité dans le package Jinja2, avec une mise à niveau recommandée.

Vous pouvez également utiliser la CLI Snyk pour être informé de la divulgation de nouvelles vulnérabilités ou de la disponibilité de nouveaux correctifs pour les vulnérabilités existantes. Pour cela, utilisez :

snyk monitor

« Les résultats sont disponibles dans l’application Snyk, à l’URL fournie. Vous serez averti si de nouvelles vulnérabilités pertinentes sont divulguées.

Tableau de bord de projet Snyk montrant une vulnérabilité de gravité moyenne de type déni de service par expression régulière dans Jinja2, au sein d’une application Flask en Python

Vous pouvez utiliser la même CLI pour analyser vos conteneurs Python à la recherche de problèmes de sécurité, ainsi que votre infrastructure as code (IaC). La prise en charge de Snyk Code dans la CLI sera bientôt disponible. Restez à l’écoute !

Avec le même projet, essayez d’analyser l’image de conteneur de l’application avec (vous devrez créer l’image avant de lancer l’analyse) :

snyk test --docker debian --file-Dockerfile

La CLI Snyk analysera l’image à la recherche de problèmes et proposera des conseils pour mettre à niveau l’image de base.

Terminal affichant l’analyse par Snyk d’une image Docker Debian et les vulnérabilités détectées dans tar, bash et glibc.

Enfin, vous pouvez analyser votre code avec Snyk Code. Utilisez la commande :

snyk code test .

La CLI analysera le projet local et affichera les résultats.

Terminal affichant la détection par l’interface CLI de Snyk Code d’un secret codé en dur à haute sévérité dans un fichier de configuration Python

Consultez l’aide-mémoire de la CLI pour découvrir d’autres conseils et astuces sur la CLI Snyk.

Les plugins d’IDE de Snyk, Snyk Advisor et la CLI Snyk sont tous disponibles gratuitement, avec des analyses illimitées pour les projets Python open source.

Intégrez la sécurité à vos dépôts Python

Selon la dernière enquête de la communauté Python, menée en 2019, 90 % des développeurs Python utilisent des systèmes de gestion du code source (SCM) comme GitHub. Il ne serait pas étonnant que ce chiffre soit encore plus élevé si nous posions la question aux développeurs Python en 2021.

Comme une grande partie de votre temps et de vos processus de développement s’appuie sur ces systèmes, pouvoir y intégrer facilement la sécurité sans ralentir le développement peut être extrêmement utile. Comment ? Voici quelques exemples :

  • Pour éviter d’introduire du code vulnérable dans votre dépôt Python, et si chaque nouvelle pull request pouvait être automatiquement analysée ?

  • Pour garantir que votre application Python est saine et à jour, et si des pull requests de mise à niveau des packages Python obsolètes pouvaient être créées automatiquement ?

  • Pour corriger rapidement les vulnérabilités nouvellement divulguées, et si vous pouviez recevoir une notification et une pull request contenant le correctif recommandé ?

  • Pour automatiser la sécurité dans le cadre de votre processus CI/CD, et si vous pouviez ajouter des tests de sécurité sous forme d’action GitHub ou à vos pipelines Bitbucket ?

  • Pour garantir la sécurité de votre code propriétaire, et si vous pouviez l’analyser rapidement à la recherche de problèmes de sécurité et voir comment des données malveillantes circulent dans votre application, superposées à votre propre code ?

Snyk vous offre tout cela. En quelques étapes seulement, vous pouvez importer votre projet Python dans Snyk afin de vous assurer qu’il est correctement protégé.

Dans Snyk, accédez à Integrations, puis à GitHub, et sélectionnez votre projet Python pour l’importer dans Snyk. Lors de l’importation du projet, Snyk analyse automatiquement TOUS les différents composants de votre projet Python et les affiche sous forme de sous-projets individuels sur la page Projects :

Tableau de bord des projets Snyk montrant le dépôt python-flask-sample-app avec l’analyse du code, deployment.yaml, Dockerfile et requirements.txt.

Par exemple, l’ouverture du deployment.yaml file fournit des informations sur les problèmes détectés par Snyk Infrastructure as Code dans les configurations de déploiement Kubernetes de l’application.

Tableau de bord des problèmes de sécurité affichant un fichier YAML de déploiement Kubernetes et un avertissement indiquant que le conteneur s’exécute sans contrôle de l’utilisateur root

Une fois importé, votre projet Python est surveillé en continu par Snyk. En cas de nouvelles vulnérabilités dans vos dépendances open source ou de nouveaux correctifs pour des vulnérabilités existantes, une pull request est automatiquement déclenchée.

Pull request GitHub du bot Snyk mettant à jour Jinja2 de la version 2.11.1 à la version 2.11.3 pour corriger des dépendances Python vulnérables

Snyk ouvre automatiquement des pull requests dans plusieurs autres scénarios. Vous pouvez contrôler leur rythme et leur fréquence pour éviter d’en recevoir trop. Pour en savoir plus sur les mesures correctives de Snyk, consultez la documentation Snyk.

Les intégrations SCM de Snyk sont disponibles gratuitement, avec des analyses illimitées pour les projets Python open source. Les produits Snyk pris en charge varient selon les SCM.

Automatisez la sécurité Python dans votre processus CI/CD

Intégrer les tests de sécurité Python à votre processus CI est un excellent moyen de détecter les vulnérabilités avant que votre code ne soit déployé en production. Cette étape de sécurité supplémentaire vous permet de détecter les problèmes même si vous n’avez pas effectué de tests manuels dans votre environnement local.

Snyk s’intègre à tous les principaux outils CI/CD, comme Jenkins, CircleCI et TeamCity. Comme indiqué précédemment, vous pouvez aussi utiliser la CLI Snyk comme étape de n’importe quel pipeline automatisé. Voyons un exemple : ajouter les tests de sécurité Snyk à un workflow GitHub Actions.

Snyk fournit une Action pour toutes les versions récentes de Python, notamment Python 3.6, 3.7 et 3.8. Dans cet exemple, nous utiliserons l’action pour automatiser les tests de sécurité du même projet Python que celui analysé tout au long de cet article.

Commencez par définir votre jeton d’API Snyk comme secret dans les paramètres de votre dépôt (Settings †’ Secrets). Ouvrez ensuite l’onglet Actions et créez un nouveau workflow personnalisé avec la Snyk Action pour Python :

name: Example workflow for Python using Snyk
on: push
jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - name: Run Snyk to check for vulnerabilities
        uses: snyk/actions/python@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

Comme prévu, la même vulnérabilité que celle détectée dans le test de la CLI ci-dessus a fait échouer notre build :

Tâche de sécurité GitHub Actions montrant Snyk analysant un projet Python Flask et signalant une vulnérabilité dans une dépendance.

Comme l’Action repose sur la CLI Snyk, vous pouvez utiliser tous les arguments qu’elle prend en charge pour ajuster le comportement des tests de sécurité de Snyk dans votre processus CI.

Développez rapidement. Restez en sécurité !

Python est idéal pour les développeurs qui veulent avancer vite. Ce langage extrêmement polyvalent est facile à utiliser et propose une multitude de bibliothèques open source pour ajouter rapidement des fonctionnalités à vos applications. Au moment de déployer votre application, Docker, Red Hat et d’autres fournissent une foule d’images de base de conteneur Python faciles à utiliser. Vous pouvez même écrire vos configurations Kubernetes et d’infrastructure en Python.

Aller vite et rester sécurisé ne sont pas incompatibles. J’espère que cet article vous a montré à quel point il est facile d’intégrer la sécurité à votre workflow de développement Python actuel, que ce soit dans votre environnement de développement local, au cœur de votre workflow basé sur Git ou dans votre processus de build automatisé — et surtout, sans avoir à ralentir !

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.

Lire la suite

blog feature snyk container custom base recommendations
Blog

Découvrez Evo Agentic AppSec : une sécurité au rythme du développement de l’IA

Le développement piloté par l’IA dépasse les workflows de sécurité traditionnels. L’AppSec agentique de Snyk s’appuie sur des agents de sécurité pour détecter, corriger et vérifier les vulnérabilités en continu, tandis que les équipes définissent les exigences.

blog feature ai violet
Blog

VulnBump : les agents IA peuvent-ils corriger les dépendances vulnérables sans casser le build ?

VulnBump évalue des agents IA sur 307 mises à niveau de dépendances réelles. Une correction n’est comptabilisée que si la vulnérabilité disparaît et que la compilation et les tests restent au vert.

Blog

Les modèles de pointe ont trouvé les vulnérabilités. Seul l’attaquant a trouvé les chaînes d’exploitation.

L’analyse statique a détecté les failles, mais seuls des tests d’attaque en conditions réelles ont prouvé comment elles pouvaient être enchaînées pour provoquer des compromissions. Comparaison d’Evo COS, de Claude Security et de Claude Code Security.