Skip to main content

Informationen zur Abhängigkeitsüberprüfung

Mit der Abhängigkeitsüberprüfung kannst du unsichere Abhängigkeiten erfassen, bevor du sie in deine Umgebung einführst, und Informationen zu Lizenz, Abhängigkeiten und deren Alter bereitstellen.

Wer kann dieses Feature verwenden?

Abhängigkeitsreviews sind in GitHub Enterprise Cloud für öffentliche Repositorys enthalten. Um Abhängigkeitsreviews in privaten Repositorys zu verwenden, die sich im Besitz von Organisationen befinden, musst du über eine Lizenz für GitHub Advanced Security verfügen. Weitere Informationen findest du unter Informationen zu GitHub Advanced Security.

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.

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.

Weitere Informationen zum Konfigurieren der Abhängigkeitsüberprüfung findest du unter Konfigurieren der Abhängigkeitsüberprüfung.

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 findest du unter Informationen zum Abhängigkeitsdiagramm.

Weitere Informationen zu den auf GitHub Enterprise Cloud verfügbaren Lieferkettenfeatures findest du unter Informationen zur Lieferkettensicherheit.

Aktivieren der Abhängigkeitsüberprüfung

Das Abhängigkeitsüberprüfungsfeature wird verfügbar, wenn du das Abhängigkeitsdiagramm aktivierst. Weitere Informationen findest du unter Aktivieren des Abhängigkeitsdiagramms.

Erzwingung der Abhängigkeitsüberprüfung

Die Aktion ist für alle öffentlichen Repositorys sowie für private Repositorys, für die GitHub Advanced Security aktiviert ist, verfügbar.

Du kannst die dependency-review-action in deinem Repository verwenden, um Abhängigkeitsüberprüfungen für Deine Pull-Anforderungen 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.

Screenshot: Workflowausführung, die die Abhängigkeitsüberprüfungsaktion verwendet

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 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 finden Sie 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 finden Sie unter „Verwenden der Abhängigkeitsübermittlungs-API.“

Hinweis: 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. Dieses Feature ist derzeit als öffentliche Betaversion verfügbar und wird ggf. noch geändert.

Du kannst die Abhängigkeitsüberprüfungsaktion konfigurieren, sodass sie deinen 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 findest du unter Konfigurieren der Abhängigkeitsüberprüfung.

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 auf true.
    • retry-on-snapshot-warnings-timeout so einstellen, dass es die typische Laufzeit (in Sekunden) Ihrer am längsten laufenden Abhängigkeitsübermittlungsaktion leicht überschreitet.

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.