Bien démarrer avec Snyk pour développer en Python en toute sécurité
4 août 2021
0 minutes de lectureVous 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

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.

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.

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 :
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 :
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.

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 :
« 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.

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) :
La CLI Snyk analysera l’image à la recherche de problèmes et proposera des conseils pour mettre à niveau l’image de base.

Enfin, vous pouvez analyser votre code avec Snyk Code. Utilisez la commande :
La CLI analysera le projet local et affichera les résultats.

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 :

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.

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.

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 :
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 :

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.



