Hinweis: Die Möglichkeit zur Verwendung der REST-API für die Übermittlung von Abhängigkeiten befindet sich derzeit in der öffentlichen Betaversion und kann noch geändert werden.
Informationen zu Abhängigkeitsübermittlungs-API
Du kannst die REST-API verwenden, um Abhängigkeiten für ein Projekt zu übermitteln. Dadurch kannst du Abhängigkeiten wie die, die beim Kompilieren oder Erstellen von Software aufgelöst werden, zum Abhängigkeitsdiagrammfeature von GitHub hinzufügen und ein vollständigeres Bild aller Abhängigkeiten deines Projekts bieten.
Das Abhängigkeitsdiagramm zeigt alle Abhängigkeiten, die du mithilfe der API übermittelst, zusätzlich zu allen Abhängigkeiten, die von Manifest- oder Sperrdateien im Repository aus identifiziert werden (z. B. eine package-lock.json
-Datei in einem JavaScript-Projekt). Weitere Informationen zur Anzeige des Abhängigkeitsdiagramms findest du unter Untersuchen der Abhängigkeiten eines Repositorys.
Übermittelte Abhängigkeiten erhalten Dependabot alerts und Dependabot security updates für alle bekannten Sicherheitsrisiken. Sie erhalten Dependabot alerts nur für Abhängigkeiten, die aus einem der unterstützten Ökosysteme für GitHub Advisory Database stammen. Weitere Informationen zu diesen Ökosystemen finden Sie unter „Informationen zu GitHub Advisory Database.“ Für transitive Abhängigkeiten, die über die Abhängigkeitsübermittlungs-API übermittelt werden, öffnet Dependabot automatisch Pull Requests, um die übergeordnete Abhängigkeit zu aktualisieren, wenn ein Update verfügbar ist.
Übermittelte Abhängigkeiten werden nicht in der Abhängigkeitsüberprüfung oder den Abhängigkeitserkenntnissen Ihrer Organisation angezeigt.
Abhängigkeiten werden in Form einer Momentaufnahme an die Abhängigkeitsübermittlungs-API übermittelt. Eine Momentaufnahme ist eine Reihe von Abhängigkeiten, die einem Commit-SHA und anderen Metadaten zugeordnet sind, die den aktuellen Status deines Repositorys für einen Commit widerspiegeln. Momentaufnahmen können aus deinen zur Buildzeit erkannten Abhängigkeiten oder aus einer Software-Stückliste (SBOM, Software Bill Of Materials) generiert werden. Es gibt GitHub Actions, die einen dieser Anwendungsfälle unterstützen. Weitere Informationen zu Abhängigkeitsübermittlungs-API finden Sie unter „REST-API-Endpunkte für die Abhängigkeitsübermittlung.“
Übermitteln von Abhängigkeiten zur Buildzeit
Du kannst die Abhängigkeitsübermittlungs-API in einem GitHub Actions-Workflow verwenden, um beim Erstellen deines Projekts Abhängigkeiten dafür zu übermitteln.
Verwenden vordefinierter Aktionen
Am einfachsten lässt sich die Abhängigkeitsübermittlungs-API verwenden, indem du deinem Repository eine vordefinierte Aktion hinzuzufügst, die die Liste der Abhängigkeiten erfasst, in das erforderliche Momentaufnahmeformat konvertiert und an die API übermittelt. Aktionen, die diese Schritte für verschiedene Ökosysteme ausführen, sind im GitHub Marketplace verfügbar. Einige dieser Aktionen werden von Drittanbietern bereitgestellt. Links zu den derzeit verfügbaren Aktionen findest du in der folgenden Tabelle.
Ökosystem | Aktion | Verwaltet von GitHub |
---|---|---|
Go | Go-Abhängigkeitsübermittlung | |
Gradle | Gradle Dependency Submission | |
Maven | Maven Dependency Tree Dependency Submission | |
Mühle | Mill Dependency Submission | |
Scala | Sbt Dependency Submission | |
NuGet und andere | Aktion zur Übermittlung von Abhängigkeiten bei der Komponentenerkennung |
Hinweis: Für die Aktion zur Übermittlung von Abhängigkeiten zur Komponentenerkennung werden auch andere Ökosysteme wie Vcpkg, Conan, Conda, Crates und NuGet unterstützt.
Der folgende Workflow für die Go-Abhängigkeitsübermittlung berechnet beispielsweise die Abhängigkeiten für ein Go-Buildziel (eine Go-Datei mit einer main
-Funktion) und sendet die Liste an die Abhängigkeitsübermittlungs-API.
name: Go Dependency Submission
on:
push:
branches:
- main
# The API requires write permission on the repository to submit dependencies
permissions:
contents: write
# Environment variables to configure Go and Go modules. Customize as necessary
env:
GOPROXY: '' # A Go Proxy server to be used
GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY
jobs:
go-action-detection:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- uses: actions/setup-go@v3
with:
go-version: ">=1.18.0"
- name: Run snapshot action
uses: actions/go-dependency-submission@v1
with:
# Required: Define the repo path to the go.mod file used by the
# build target
go-mod-path: go-example/go.mod
#
# Optional. Define the repo path of a build target,
# a file with a `main()` function.
# If undefined, this action will collect all dependencies
# used by all build targets for the module. This may
# include Go dependencies used by tests and tooling.
go-build-target: go-example/cmd/octocat.go
Erstellen einer eigenen Aktion
Alternativ kannst du eine eigene Aktion schreiben, um Abhängigkeiten für dein Projekt zur Buildzeit zu übermitteln. Mit deinem Workflow sollen folgende Aktionen ausgeführt werden:
- Generieren einer Liste von Abhängigkeiten für dein Projekt.
- Übersetzen der Liste der Abhängigkeiten in das Momentaufnahmeformat, das von der Abhängigkeitsübermittlungs-API akzeptiert wird. Weitere Informationen zum Format finden Sie in den Textparametern für den API-Endpunkt „Erstellen einer Repository-Momentaufnahme“ unter „REST-API-Endpunkte für die Abhängigkeitsübermittlung“.
- Übermitteln der formatierten Liste der Abhängigkeiten an die Abhängigkeitsübermittlungs-API.
GitHub Enterprise Server verwaltet das Dependency Submission Toolkit, eine TypeScript-Bibliothek, mit der du eine eigene GitHub-Aktion zum Übermitteln von Abhängigkeiten an die Abhängigkeitsübermittlungs-API erstellen kannst. Weitere Informationen zum Schreiben einer Aktion findest du unter Erstellen von Aktionen.
Generieren und Übermitteln einer Software-Stückliste (SBOM)
Eine SBOM ist ein formales, maschinenlesbares Verzeichnis der Abhängigkeiten eines Projekts und der zugehörigen Informationen (wie Versionen und Paketbezeichner). SBOMs reduzieren durch Folgendes die Lieferkettenrisiken:
- Transparenz über die von deinem Repository verwendeten Abhängigkeiten
- Frühzeitige Identifizierung von Sicherheitsrisiken
- Einblicke in die Lizenzkonformität, Sicherheit oder Qualitätsprobleme, die in deiner Codebasis bestehen können
- Einfachere Einhaltung verschiedener Datenschutzstandards
Du kannst GitHub Actions verwenden, um eine SBOM zu generieren. Die folgenden Aktionen generieren eine SBOM für dein Repository und fügen es als Workflowartefakt an, das du herunterladen und in anderen Anwendungen verwenden kannst. Weitere Informationen zum Herunterladen von Workflowartefakten findest du unter Herunterladen von Workflowartefakten.
Aktion | Details | Verwaltet von GitHub |
---|---|---|
SBOM-generator-action | Verwendet die Informationen in deinem Abhängigkeitsdiagramm, um eine SPDX SBOM zu generieren. | |
Anchore SBOM Action | Verwendet Syft, um SPDX 2.2-kompatible SBOMs mit den unterstützten Ökosystemen zu erstellen | |
sbom-tool von Microsoft | Überprüft deine Abhängigkeiten und erstellt eine SPDX-kompatible SBOM |
Anschließend kannst du die SBOM hochladen und an die Abhängigkeitsübermittlungs-API übermitteln, indem du eine der folgenden Aktionen ausführst, damit du Dependabot alerts für alle Abhängigkeiten empfangen kannst, die bekannte Sicherheitsrisiken aufweisen. Aktionen, die in beiden Tabellen angezeigt werden, können so konfiguriert werden, dass sie sowohl eine SBOM generieren als auch übermitteln.
Aktion | Details | Verwaltet von GitHub |
---|---|---|
SPDX-Abhängigkeitsübermittlungsaktion | Verwendet das SBOM-Tool von Microsoft, um SPDX 2.2-kompatible SBOMs mit den unterstützten Ökosystemen zu erstellen | |
Anchore SBOM Action | Verwendet Syft, um SPDX 2.2-kompatible SBOMs mit den unterstützten Ökosystemen zu erstellen | |
SBOM-Abhängigkeitsübermittlungsaktion | Lädt eine CycloneDX SBOM in die Abhängigkeitsübermittlungs-API hoch |
Der folgende SPDX-Workflow für die Abhängigkeitsübermittlungsaktion berechnet beispielsweise die Abhängigkeiten für ein Repository, generiert eine exportierbare SBOM im SPDX 2.2-Format und übermittelt sie an die Abhängigkeitsübermittlungs-API.
name: SBOM upload
on:
workflow_dispatch:
push:
branches: ["main"]
jobs:
SBOM-upload:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v4
- name: Generate SBOM
# generation command documentation: https://github.com/microsoft/sbom-tool#sbom-generation
run: |
curl -Lo $RUNNER_TEMP/sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
chmod +x $RUNNER_TEMP/sbom-tool
$RUNNER_TEMP/sbom-tool generate -b . -bc . -pn $ -pv 1.0.0 -ps OwnerName -nsb https://sbom.mycompany.com -V Verbose
- uses: actions/upload-artifact@v3
with:
name: sbom
path: _manifest/spdx_2.2
- name: SBOM upload
uses: advanced-security/spdx-dependency-submission-action@v0.0.1
with:
filePath: "_manifest/spdx_2.2/"