Aller au contenu

Fichier de verrouillage manquant entraînant des dépendances non épinglées

Vérifie la présence des manifestes de gestion des dépendances (par exemple, package.json, Gemfile, pyproject.toml, Pipfile, go.mod, etc.) sans un accompagnement de fichier de verrouillage qui fixe cryptographiquement les dépendances (par exemple, package-lock.json, Gemfile.lock, poetry.lock, Pipfile.lock, go.sum).

L'Importance des Fichiers de Verrouillage des Dépendances pour une Gestion Cohérente, Sécurisée et Prévisible des Dépendances

Les fichiers de verrouillage des dépendances jouent un rôle crucial dans le développement logiciel moderne, permettant aux équipes de créer des environnements cohérents, sécurisés et prévisibles à travers les différentes étapes du cycle de vie du logiciel. Pour les développeurs, les fichiers de verrouillage ne sont pas simplement un autre fichier dans un dépôt, ils sont essentiels pour maintenir des builds cohérents, améliorer la sécurité et simplifier la collaboration. Cet article explore l'importance des fichiers de verrouillage, les avantages qu'ils apportent et leur mise en œuvre spécifique dans les principaux langages de programmation.

Pourquoi les Fichiers de Verrouillage des Dépendances Sont-Ils Importants

1. Cohérence entre les Environnements

Les fichiers de verrouillage enregistrent les versions exactes de chaque dépendance, ainsi que des sous-dépendances, dont un projet dépend. En stockant ces versions spécifiques, les fichiers de verrouillage éliminent les incohérences entre les environnements (développement, staging, production). Lorsque le même fichier de verrouillage est utilisé, les développeurs peuvent être confiants que chaque installation recrée exactement le même environnement chaque fois, réduisant le risque de problèmes de type "ça fonctionne sur ma machine".

2. Sécurité Renforcée

L'utilisation de fichiers de verrouillage des dépendances est une mesure de sécurité forte. Les fichiers de verrouillage aident à protéger les applications contre les vulnérabilités liées aux dépendances en prévenant des mises à jour inattendues qui pourraient introduire des versions non sécurisées. Les vulnérabilités de sécurité dans les dépendances sont courantes, et en contrôlant quelles versions sont installées, vous obtenez un meilleur contrôle sur les risques de sécurité.

3. Collaboration Améliorée

Pour les équipes travaillant sur le même projet, les fichiers de verrouillage garantissent que chaque développeur, quelles que soient ses configurations locales, travaille avec des versions de dépendance identiques. Cette cohérence est cruciale pour les équipes, permettant une collaboration plus fluide et réduisant les frictions lors de la révision et de la fusion des modifications de code.

4. Nomenclature logicielle (SBOM)

Les fichiers de verrouillage sont essentiels pour la génération d'une Nomenclature logicielle (SBOM), qui est de plus en plus importante pour le suivi des chaînes d'approvisionnement logicielle. Par exemple, Trivy, un analyseur de sécurité, peut générer une SBOM pour l'analyse de sécurité des dépendances, mais il nécessite un fichier de verrouillage pour fonctionner efficacement. Sans un tel fichier, la SBOM ne refléterait pas avec précision les dépendances du projet et leurs vulnérabilités associées, ce qui donnerait une image incomplète et probablement incorrecte de la réalité dans l'environnement de production.

Où la Règle Recherche un Fichier de Verrouillage

Un manifeste de dépendances est signalé lorsqu'aucun des fichiers de verrouillage acceptés pour ce manifeste n'est trouvé. Les sections ci-dessous listent, pour chaque langage, les manifestes qui sont vérifiés et les fichiers de verrouillage qui les satisfont.

Certains gestionnaires de paquets conservent un unique fichier de verrouillage au-dessus des projets qu'il couvre plutôt qu'à côté de chaque manifeste. Pour ceux-ci, la recherche commence dans le répertoire contenant le manifeste et remonte jusqu'à la racine du dépôt, de sorte qu'un espace de travail ou un monorepo possédant un seul fichier de verrouillage à sa racine n'est pas signalé :

  • Cargo.lock pour les membres d'un espace de travail Cargo
  • uv.lock pour les membres d'un espace de travail uv
  • cabal.project.freeze pour un paquet *.cabal situé sous le répertoire contenant le fichier freeze
  • *.deps.json et *Packages.props pour les projets .NET, couvrant un Directory.Packages.props valable pour tout le dépôt et la sortie de build écrite dans un répertoire bin/ partagé

Fichiers de Verrouillage des Dépendances par Langages

JavaScript

Python

Go

Java

Scala

  • Manifeste : build.sbt
  • Gestionnaire de dépendances : sbt
  • Lockfile : build.sbt.lock
  • Génération/Maintenance :
  • Plugin sbt Dependency Lock

.NET / C

Ruby

PHP

Rust

Objective-C / Swift

Elixir

Dart

C/C++

Julia

Haskell

R

Étapes pour Créer un SBOM avec Trivy

Pour que la fonctionnalité SBOM de Trivy fonctionne correctement, il est essentiel d'avoir un fichier de verrouillage à jour. Les fichiers de verrouillage contiennent des métadonnées nécessaires pour générer une SBOM qui représente avec précision les dépendances, les versions et les vulnérabilités de sécurité potentielles du projet.

Ressources Supplémentaires