Informationen zur Abhängigkeitsüberprüfung
Die Abhängigkeitsüberprüfung hilft Dir, Abhängigkeitsänderungen und die Sicherheitswirkung dieser Änderungen bei jedem Pull Request zu verstehen. Sie bietet eine leicht verständliche Visualisierung von Abhängigkeitsänderungen mit Rich-Diff auf der Registerkarte „Geänderte Dateien“ eines Pull Requests. Die Abhängigkeitsüberprüfung informiert Dich über:
- Welche Abhängigkeiten hinzugefügt, entfernt oder aktualisiert wurden, sowie die Veröffentlichungsdaten.
- Wie viele Projekte diese Komponenten verwenden.
- Sicherheitsrisikodaten für diese Abhängigkeiten.
Bei Pull Requests, die Änderungen an Paketmanifesten oder gesperrten Dateien enthalten, können Sie eine Abhängigkeitsüberprüfung anzeigen, um zu sehen, was sich geändert hat. Die Abhängigkeitsüberprüfung enthält Details zu Änderungen an indirekten Abhängigkeiten in Sperrdateien und sagt Dir, ob eine der hinzugefügten oder aktualisierten Abhängigkeiten bekannte Sicherheitslücken enthält.
Note
Der „Abhängigkeitsüberprüfungsaktion“ bezieht sich auf die spezifische Aktion, mit der Unterschiede in einem Pull Request im GitHub Actions-Kontext berichtet werden kann, und fügt dem GitHub Actions-Workflow Erzwingungsmechanismen hinzu. Weitere Informationen findest du unter Der Abhängigkeitsüberprüfungsaktion weiter unten in diesem Artikel.
Manchmal möchtest du vielleicht nur die Version einer Abhängigkeit in einem Manifest aktualisieren und einen Pull Request erstellen. Wenn die aktualisierte Version dieser direkten Abhängigkeit jedoch auch aktualisierte Abhängigkeiten hat, kann dein Pull Request mehr Änderungen enthalten, als du erwartet hast. Die Überprüfung der Abhängigkeiten für jede Manifest- und Sperrdatei bietet eine einfache Möglichkeit zu sehen, was sich geändert hat und ob eine der neuen Abhängigkeitsversionen bekannte Systemanfälligkeiten enthält.
Indem du die Abhängigkeitsüberprüfungen in einem Pull Request überprüfst und alle Abhängigkeiten änderst, die als anfällig gekennzeichnet sind, kannst du verhindern, dass deinem Projekt Sicherheitsrisiken hinzugefügt werden. Weitere Informationen zur Funktionsweise der Abhängigkeitsüberprüfung findest du unter Überprüfen von Abhängigkeitsänderungen in einem Pull Request.
Dependabot alerts findet Sicherheitsrisiken, die sich bereits in deinen Abhängigkeiten befinden. Es ist jedoch wesentlich besser, die Einführung potenzieller Probleme zu vermeiden, als später Probleme beheben zu müssen. Weitere Informationen zu Dependabot alerts findest du unter Informationen zu Dependabot-Warnungen.
Abhängigkeitsüberprüfung unterstützt dieselben Sprachen und Paketverwaltungsökosysteme wie das Abhängigkeitsdiagramm. Weitere Informationen finden Sie unter Abhängigkeitsdiagramm unterstützte Paket-Ökosysteme.
Weitere Informationen zu den auf GitHub verfügbaren Lieferkettenfeatures findest du unter Informationen zur Lieferkettensicherheit.
Informationen zum Abhängigkeitsüberprüfungsaktion
„Abhängigkeitsüberprüfungsaktion“ bezieht sich auf die spezifische Aktion, die Unterschiede in einem Pull Request innerhalb des GitHub Actions-Kontext melden kann. Siehe dependency-review-action
. Du kannst die Abhängigkeitsüberprüfungsaktion in deinem Repository verwenden, um Abhängigkeitsüberprüfungen bei deinen Pull Requests zu erzwingen. Die Aktion sucht nach anfälligen Versionen von Abhängigkeiten, die durch Paketversionsänderungen in Pull Requests eingeführt wurden, und warnt dich vor den damit verbundenen Sicherheitsrisiken. So erhältst du einen besseren Überblick darüber, was sich in einem Pull Request ändert, und kannst verhindern, dass deinem Repository Sicherheitsrisiken hinzugefügt werden.
Standardmäßig tritt bei der Abhängigkeitsüberprüfungsaktion-Überprüfung ein Fehler auf, wenn sie anfällige Pakete erkennt. Bei einer fehlgeschlagenen Überprüfung wird das Zusammenführen eines Pull Requests blockiert, wenn der bzw. die Repositorybesitzer*in das Bestehen der Abhängigkeitsüberprüfung verlangt. Weitere Informationen findest du unter Informationen zu geschützten Branches.
Die Aktion ist für alle öffentlichen Repositorys sowie für private Repositorys, für die GitHub Advanced Security aktiviert ist, verfügbar.
Organisationsbesitzer*innen können die Abhängigkeitsüberprüfung im großen Stil einführen, indem sie die Nutzung der Abhängigkeitsüberprüfungsaktion für Repositorys in der Organisation erzwingen. Dies umfasst die Nutzung von Repository-Regelsätzen, für die Sie die Abhängigkeitsüberprüfungsaktion als erforderlichen Workflow festlegen. Das bedeutet, dass Pull Requests nur zusammengeführt werden können, nachdem der Workflow alle erforderlichen Prüfungen bestanden hat. Weitere Informationen findest du unter Erzwingen der Abhängigkeitsüberprüfung in einer Organisation.
Die Aktion nutzt die Abhängigkeitsüberprüfung der REST-API, um die Abhängigkeitsänderungen zwischen dem Basis-Commit und dem Head-Commit zu ermitteln. Mit der Abhängigkeitsüberprüfungs-API können Sie die Abhängigkeitsänderungen zwischen zwei beliebigen Commits eines Repositorys abrufen, einschließlich der Daten zu Sicherheitsrisiken. Weitere Informationen findest du unter REST-API-Endpunkte für die Abhängigkeitsüberprüfung. Die Aktion berücksichtigt auch Abhängigkeiten, die über die Abhängigkeitsübermittlungs-API übermittelt werden. Weitere Informationen zu Abhängigkeitsübermittlungs-API findest du unter Verwenden der Abhängigkeitsübermittlungs-API.
Note
Die API für die Abhängigkeitsüberprüfung und die Abhängigkeitsübermittlungs-API arbeiten zusammen. Dies bedeutet, dass die API zur Abhängigkeitsüberprüfung Abhängigkeiten enthält, die über die Abhängigkeitsübermittlungs-API übermittelt werden.
Sie können die Abhängigkeitsüberprüfungsaktion so konfigurieren, dass sie Ihren Anforderungen besser entspricht. Du kannst z. B. den Schweregrad angeben, der dazu führt, dass die Aktion fehlschlägt, oder eine Zulassungs- oder Ablehnungsliste für die zu überprüfenden Lizenzen festlegen. Weitere Informationen finden Sie unter Konfigurieren der Abhängigkeitsüberprüfungsaktion.
Bewährte Methoden für die gemeinsame Verwendung der Abhängigkeitsüberprüfungs-API und der Abhängigkeitsübermittlungs-API
Die Abhängigkeitsüberprüfungs-API und der Abhängigkeitsüberprüfungsaktion funktionieren beide, indem sie Abhängigkeitsänderungen in einer Pull-Request mit dem Status Ihrer Abhängigkeiten im Head-Commit Ihres Ziel-Branches vergleichen.
Wenn Ihr Repository nur von statisch definierten Abhängigkeiten in einem der unterstützten Ökosysteme von GitHub abhängt, funktionieren die Abhängigkeitsüberprüfungs-API und der Abhängigkeitsüberprüfungsaktion konsistent.
Möglicherweise möchten Sie jedoch, dass Ihre Abhängigkeiten während eines Builds gescannt und dann in die % data variables.dependency-submission-api.name %} hochgeladen werden. In diesem Fall gibt es einige bewährte Methoden, die Sie befolgen sollten, um sicherzustellen, dass Sie beim Ausführen der Prozesse für die Abhängigkeitsüberprüfungs-API und die Abhängigkeitsübermittlungs-API keine Racebedingung einführen, da dies zu fehlenden Daten führen könnte.
Welche bewährte Methoden Sie anwenden sollten, hängt davon ab, ob Sie GitHub Actions verwenden, um auf die Abhängigkeitsübermittlungs-API und die Abhängigkeitsüberprüfungs-API zuzugreifen, oder ob Sie den direkten API-Zugriff verwenden.
Verwenden von GitHub-Aktionen für den Zugriff auf die Abhängigkeitsübermittlungs-API und die Abhängigkeitsüberprüfungs-API
Wenn Sie GitHub Actions verwenden, um auf die Abhängigkeitsübermittlungs-API oder die Abhängigkeitsüberprüfungs-API zuzugreifen:
- Stellen Sie sicher, dass Sie alle Ihre Abhängigkeitseinreichungsaktionen im gleichen GitHub Actions-Workflow wie Ihren Abhängigkeitsüberprüfungsaktion ausführen. Dadurch können Sie die Reihenfolge der Ausführung steuern und sicherstellen, dass die Abhängigkeitsüberprüfung immer funktioniert.
- Wenn Sie sich dafür entscheiden, dieAbhängigkeitsüberprüfungsaktion separat auszuführen, sollten Sie:
- Setzen Sie
retry-on-snapshot-warnings
auftrue
. retry-on-snapshot-warnings-timeout
so einstellen, dass es die typische Laufzeit (in Sekunden) Ihrer am längsten laufenden Abhängigkeitsübermittlungsaktion leicht überschreitet.
- Setzen Sie
Verwendung des direkten API-Zugriffs auf die Abhängigkeitsübermittlungs-API und die Abhängigkeitsüberprüfungs-API
Wenn Sie GitHub Actions nicht verwenden und Ihr Code auf direkten Zugriff auf die Abhängigkeitsübermittlungs-API und die Abhängigkeitsüberprüfungs-API angewiesen ist:
- Führen Sie zuerst den Code aus, der die Abhängigkeitsübermittlungs-API aufruft, und führen Sie anschließend den Code aus, der die Abhängigkeitsüberprüfungs-API aufruft.
- Wenn Sie den Code für die Abhängigkeitsübermittlungs-API und die Abhängigkeitsüberprüfungs-API parallel ausführen, sollten Sie eine Wiederholungslogik implementieren und Folgendes beachten:
- Wenn für beide Seiten des Vergleichs Snapshots fehlen, wird eine Erklärung dafür im
x-github-dependency-graph-snapshot-warnings
Header (als base64-codierte Zeichenfolge) angezeigt. Wenn die Kopfzeile nicht leer ist, sollten Sie daher erwägen, es erneut zu versuchen. - Implementieren Sie eine Wiederholungslogik mit exponentiellen Backoff-Wiederholungen.
- Implementieren Sie eine angemessene Anzahl von Wiederholungen, um die typische Laufzeit Ihres Abhängigkeitsübermittlungscodes zu berücksichtigen.
- Wenn für beide Seiten des Vergleichs Snapshots fehlen, wird eine Erklärung dafür im