À propos du graphe de dépendances
Le graphe des dépendances est un résumé des fichiers manifest et des fichiers de verrouillage dans un référentiel. Il contient également toutes les dépendances soumises pour le référentiel à l'aide de l'interface API de soumission de dépendances (beta). Pour chaque dépôt, il affiche les dépendances, c’est-à-dire les écosystèmes et les packages dont il dépend.
GitHub Enterprise Server ne récupère pas les informations de licence pour les dépendances, et ne calcule pas les informations sur les dépendants, les dépôts et les packages qui dépendent d’un dépôt.
Quand vous poussez (push) vers GitHub Enterprise Server un commit qui change un manifeste ou un fichier de verrouillage pris en charge ou l’ajoute à la branche par défaut, le graphe de dépendances est automatiquement mis à jour. Pour plus d’informations sur les fichiers manifestes et les écosystèmes pris en charge, consultez « Écosystèmes de packages pris en charge » ci-dessous.
De plus, vous pouvez utiliser le API de soumission de dépendances (beta) pour soumettre des dépendances à partir du gestionnaire de packages ou de l'écosystème de votre choix, même si l'écosystème n'est pas pris en charge par le graphe des dépendances pour l'analyse des manifestes ou des fichiers de verrouillage. Le graphe des dépendances affichera les dépendances soumises groupées par écosystème. Toutefois, elles seront séparées des dépendances analysées à partir des fichiers manifest ou lock. Pour plus d'informations sur les API de soumission de dépendances, consultez « Utilisation de l’API de soumission de dépendances. »
Quand vous créez une demande de tirage (pull request) contenant des modifications apportées aux dépendances qui cible la branche par défaut, GitHub utilise le graphe de dépendances pour ajouter des révisions de dépendance à la demande de tirage. Celles-ci indiquent si les dépendances contiennent des vulnérabilités et, si c’est le cas, la version de la dépendance dans laquelle la vulnérabilité a été corrigée. Pour plus d’informations, consultez « À propos de la vérification des dépendances ».
Si vous disposez au moins d’un accès en lecture au dépôt, vous pouvez exporter les graphe des dépendances pour le dépôt en tant que nomenclature logicielle compatible SPDX (SBOM), via l’interface utilisateur de GitHub ou l’API REST GitHub. Pour plus d’informations, consultez « Exportation d’une nomenclature logicielle pour votre dépôt ».
Disponibilité du graphe de dépendances
Les propriétaires de l’entreprise peuvent configurer le graphe des dépendances et Dependabot alerts pour une entreprise. Pour plus d’informations, consultez « Activation du graphe de dépendances pour votre entreprise » et « Activation de Dependabot pour votre entreprise ».
Pour plus d’informations sur la configuration du graphe des dépendances, consultez « Configuration du graphe de dépendances ».
Dépendances incluses
Le graphe des dépendances comprend toutes les dépendances d’un référentiel qui sont détaillées dans les fichiers manifestes et les fichiers de verrouillage (ou leur équivalent) pour les écosystèmes pris en charge, ainsi que toutes les dépendances soumises à l’aide de API de soumission de dépendances (bêta), notamment :
- Les dépendances directes explicitement définies dans un fichier manifeste ou un fichier de verrouillage, ou soumises à l’aide de API de soumission de dépendances (bêta)
- Les dépendances indirectes de ces dépendances directes, également appelées dépendances transitives ou sous-dépendances
Le graphe des dépendances identifie les dépendances indirectes à partir des fichiers de verrouillage. Si votre écosystème ne comporte pas de fichiers de verrouillage, vous pouvez utiliser des actions prédéfinies qui résolvent les dépendances transitives pour de nombreux écosystèmes. Pour plus d’informations, consultez « Utilisation de l’API de soumission de dépendances ».
Pour plus d’informations sur la façon dont GitHub Enterprise Server vous aide à comprendre les dépendances au sein de votre environnement, consultez « À propos de la sécurité de la chaîne d’approvisionnement ».
Utilisation du graphe de dépendances
Vous pouvez utiliser le graphe de dépendances pour :
- Explorer les dépôts dont votre code dépend. Pour plus d’informations, consultez « Exploration des dépendances d’un dépôt ».
- Affichez et mettez à jour les dépendances vulnérables pour votre dépôt. Pour plus d’informations, consultez « À propos des alertes Dependabot ».
- Consultez des informations sur les dépendances vulnérables dans les demandes de tirage. Pour plus d’informations, consultez « Révision des changements de dépendances dans une demande de tirage ».
Écosystèmes de packages pris en charge
Les formats recommandés définissent explicitement les versions utilisées pour toutes les dépendances directes et indirectes. Si vous utilisez ces formats, votre graphe des dépendances est plus précis. Cela reflète également la configuration actuelle de la build et permet au graphe de dépendances de signaler les vulnérabilités dans les dépendances directes et indirectes.
Gestionnaire de package | Langages | Formats recommandés | Tous les formats pris en charge |
---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml , Cargo.lock |
Composer | PHP | composer.lock | composer.json , composer.lock |
NuGet | Langages .NET (C#, F#, VB), C++ | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj , packages.config |
Workflows GitHub Actions | YAML | .yml , .yaml | .yml , .yaml |
Modules Go | Go | go.mod | go.mod |
Maven | Java, Scala | pom.xml | pom.xml |
npm | JavaScript | package-lock.json | package-lock.json , package.json |
pip | Python | requirements.txt , pipfile.lock | requirements.txt , pipfile , pipfile.lock , setup.py |
pub | Dart | pubspec.lock | pubspec.yaml , pubspec.lock |
Python Poetry | Python | poetry.lock | poetry.lock , pyproject.toml |
RubyGems | Ruby | Gemfile.lock | Gemfile.lock , Gemfile , *.gemspec |
Yarn | JavaScript | yarn.lock | package.json , yarn.lock |
Remarques :
-
Si vous listez vos dépendances Python dans un fichier
setup.py
, il est possible que nous ne soyons pas en mesure d’analyser et de lister chaque dépendance dans votre projet. -
Les workflows GitHub Actions doivent se trouver dans le répertoire
.github/workflows/
d’un dépôt pour être reconnus en tant que manifestes. Toutes les actions ou workflows référencés avec la syntaxejobs[*].steps[*].uses
oujobs.<job_id>.uses
sont analysés en tant que dépendances. Pour plus d’informations, consultez « Workflow syntax for GitHub Actions ». -
Dependabot ne créera Dependabot alerts que pour les GitHub Actions vulnérables qui utilisent le contrôle de version sémantique. Vous ne recevrez pas d'alertes pour une action vulnérable qui utilise le contrôle de version SHA. Si vous utilisez GitHub Actions avec le contrôle de version SHA, nous vous recommandons d'activer Dependabot version updates pour votre référentiel ou votre organisation afin que les actions que vous utilisez soient mises à jour avec les dernières versions. Pour en savoir plus, reportez-vous à « À propos des alertes Dependabot » et « À propos des mises à jour de version Dependabot ».
Vous pouvez utiliser API de soumission de dépendances (bêta) pour ajouter des dépendances du gestionnaire de package ou de l’écosystème de votre choix au graphe des dépendances, même si l’écosystème ne figure pas dans la liste des écosystèmes pris en charge ci-dessus. Le graphe des dépendances affiche les dépendances envoyées regroupées par écosystème, mais séparément des dépendances analysées à partir des fichiers manifeste ou de verrouillage.
Vous ne recevrez des Dependabot alerts que pour les dépendances provenant de l’un des écosystèmes pris en charge par la GitHub Advisory Database. Pour plus d’informations sur API de soumission de dépendances, consultez « Utilisation de l’API de soumission de dépendances ».