--- # SOURCE_HASH: 993dd5b063d3cc16137e536a63afff8059bcb88a
title: Fichier de verrou manquant entraînant des dépendances non fixées
shortname: cicd-dependances-non-fixees
description: Vérifie l'absence d'un fichier de verrou.
anchor: cicd
pretty_name: CI/CD - Fichier de verrou manquant entraînant des dépendances non fixée
{{ title }}¶
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 fichier de verrouillage associé 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. Software Bill of Materials (SBOM)¶
Les fichiers de verrouillage sont essentiels pour la génération d'un Software Bill of Materials (SBOM), qui est de plus en plus important pour le suivi des chaînes d'approvisionnement logicielle. Par exemple, Trivy, un analyseur de sécurité, peut générer un 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, le 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.
Fichiers de Verrouillage des Dépendances par Langages¶
JavaScript¶
- Gestionnaire de Paquet : npm / Yarn
- Fichier de Verrouillage :
package-lock.json(npm),yarn.lock(Yarn),pnpm-lock.yaml(pnpm) - Génération/Maintien :
- Documentation npm sur
package-lock.json - Documentation Yarn sur
yarn.lock - Documentation pnpm sur
pnpm-lock.yaml
Python¶
- Gestionnaire de Paquet : pip
- Fichier de Verrouillage :
requirements.txt(traditionnel),Pipfile.lock(avec Pipenv), oupoetry.lock - Génération/Maintien :
- Documentation pip sur Freeze
- Documentation Pipenv sur
Pipfile.lock - Documentation Poetry sur
poetry.lock
Go¶
- Gestionnaire de Paquet : Go Modules
- Fichier de Verrouillage :
go.sum - Génération/Maintien :
- Documentation Go Modules sur
go.sum
Java¶
- Gestionnaire de Paquet : Gradle / Maven
- Fichier de Verrouillage :
pom.xml(Maven),gradle.lockfile(Gradle) - Génération/Maintien :
- Documentation Gradle sur le Verrouillage des Dépendances
.NET / C¶
- Gestionnaire de Paquet : NuGet
- Fichier de Verrouillage :
packages.lock.json(NuGet) - Génération/Maintien :
- Documentation de Microsoft
Ruby¶
- Gestionnaire de Paquet : Bundler
- Fichier de Verrouillage :
Gemfile.lock - Génération/Maintien :
- Documentation Bundler sur
Gemfile.lock
PHP¶
- Gestionnaire de Paquet : Composer
- Fichier de Verrouillage :
composer.lock - Génération/Maintien :
- Documentation Composer sur
composer.lock
Rust¶
- Gestionnaire de Paquet : Cargo
- Fichier de Verrouillage :
Cargo.lock - Génération/Maintien :
- Documentation Cargo sur
Cargo.lock
Objective-C / Swift¶
- Gestionnaire de Paquet : CocoPods, Swift Package Manager
- Fichier de Verrouillage :
Podfile.lock,Package.resolved - Génération/Maintien :
- Documentation CocoaPods sur
Podfile.lock - CocosPods et Fichiers de Verrouillage (Route 85)
- Documentation d'Apple sur
Package.resolved
Elixir¶
- Gestionnaire de Paquet : Mix
- Fichier de Verrouillage :
mix.lock - Génération/Maintien :
- Documentation Mix sur la Gestion des Dépendances
Dart¶
- Gestionnaire de Paquet : pub
- Fichier de Verrouillage :
pubspec.lock - Génération/Maintien :
- Documentation Dart sur
pubspec.lock
C/C++¶
- Gestionnaire de Paquet : Conan
- Fichier de Verrouillage : Spécifique au gestionnaire de paquets, tel que
conan.lock - Génération/Maintien :
- Documentation Conan sur les Fichiers de Verrouillage
Julia¶
- Gestionnaire de Paquet : Pkg
- Fichier de Verrouillage :
Manifest.toml - Génération/Maintien :
- Documentation Julia Pkg sur
Manifest.toml
É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 un SBOM qui représente avec précision les dépendances, les versions et les vulnérabilités de sécurité potentielles du projet.