Die linked artifacts page enthält Storage- und Bereitstellungs-Datensätze für Artefakte, die Sie in Ihrer Organisation erstellen. Metadaten für jedes Artefakt werden von Ihrer Organisation mithilfe einer der folgenden Methoden bereitgestellt:
- Ein Workflow mit einer der Aktionen von GitHub für Artefaktnachweise
- Eine Integration in die JFrog Artifactory oder Microsoft Defender for Cloud
- Ein benutzerdefiniertes Skript mit der REST-API für Artefaktemetadaten
Die verfügbaren Methoden hängen davon ab, ob Sie einen Speicherdatensatz oder einen Bereitstellungsdatensatz hochladen. Weitere Informationen zu Datensatztypen finden Sie unter Informationen zu verknüpften Artefakten.
Hochladen eines Speicherdatensatzes
Sie können einen Speicherdatensatz hochladen, indem Sie einen Artefaktnachweis erstellen oder eine Integration mit JFrog Artifactory aktivieren. Wenn Sie diese Optionen nicht verwenden möchten, müssen Sie eine benutzerdefinierte Integration mit der REST-API einrichten.
Nachweis mit GitHub Actions
Sie können einen Storage-Eintrag für einen Artefakt mit GitHub's Erstpartei-Aktionen für Artefakt-Nachweise hochladen. Sie können dies im gleichen Workflow tun, den Sie zum Erstellen des Artefakts verwenden. Diese Aktionen erstellen signierte Herkunfts- und Integritätsnachweise für die von Ihnen erstellte Software und laden automatisch einen Speicherprotokolleintrag in die linked artifacts page hoch.
Die Nachweis erstellt automatisch Speicherdatensätze in der linked artifacts page, wenn beides zutrifft:
- Die
push-to-registryEinstellung ist auftrue - Der Workflow, der die Aktion enthält, verfügt über die
artifact-metadata: writeBerechtigung
Weitere Informationen zur Verwendung dieser Aktionen finden Sie unter Verwenden von Artefaktnachweisen zur Ermittlung der Herkunft von Builds.
Wenn das Artefakt keinen Nachweis erfordert oder Wenn Sie Bereitstellungseinträge oder zusätzliche Speichermetadaten hochladen möchten, lesen Sie die folgenden Abschnitte.
Verwenden der JFrog-Integration
Diese zweiseitige Integration hält Ihre Storage-Datensätze auf GitHub automatisch auf dem neuesten Stand mit dem Artefakt auf JFrog. Beispielsweise werden Bestätigungen, die Sie auf GitHub erstellen, automatisch in JFrog hochgeladen, und das Überführen eines Artefakts in die Produktion auf JFrog fügt automatisch den Produktionskontext dem Datensatz auf GitHub hinzu.
Anweisungen zur Einrichtung finden Sie unter Erste Schritte mit der JFrog Artifactory- und GitHub-Integration in der JFrog-Dokumentation.
Verwenden der REST-API
Bei Artefakten, die nicht attestiert werden müssen und nicht auf JFrog gespeichert werden, können Sie eine benutzerdefinierte Integration mithilfe des Endpunkts "Create artifact metadata storage record API" erstellen. Sie sollten ihr System so konfigurieren, dass er den Endpunkt aufruft, wenn ein Artefakt in Ihrem ausgewählten Paket-Repository veröffentlicht wird.
Hinweis
Wenn das Artefakt keinem Nachweis der Provenienz auf GitHubzugeordnet ist, ist der github_repository Parameter obligatorisch.
Hochladen eines Bereitstellungsdatensatzes
Wenn Sie Artefakte in Microsoft Defender for Cloud (MDC) speichern, können Sie eine Integration verwenden, um Daten automatisch mit dem linked artifacts page zu synchronisieren. Andernfalls müssen Sie eine benutzerdefinierte Integration mit der REST-API einrichten.
Verwenden der Microsoft Defender für Cloud-Integration
Sie können Ihre MDC Instanz mit Ihrer GitHub Organisation verbinden. MDC sendet automatisch Deployement- und Laufzeitdaten an GitHub.
Anweisungen zur Einrichtung finden Sie unter Schnellstart: Verbinden Sie Ihre GitHub-Umgebung mit Microsoft Defender for Cloud in der Dokumentation für MDC.
Hinweis
Die Integration mit Microsoft Defender for Cloud ist in öffentliche Vorschau und kann geändert werden.
Verwenden der REST-API
Der API-Endpunkt 'Erstellen eines Bereitstellungsdatensatzes für Artefakte' ermöglicht es Systemen, Bereitstellungsdaten für ein bestimmtes Artefakt an GitHub zu senden, wie z. B. Name, "Digest", Umgebungen, Cluster und Bereitstellung. Sie sollten diesen Endpunkt immer dann aufrufen, wenn ein Artefakt in einer neuen Staging- oder Produktionsumgebung bereitgestellt wird.
Hinweis
Wenn das Artefakt keinem Nachweis der Provenienz auf GitHubzugeordnet ist, ist der github_repository Parameter obligatorisch.
Überprüfen eines Uploads
Um zu überprüfen, ob ein Datensatz erfolgreich hochgeladen wurde, können Sie das aktualisierte Artefakt in den Organisationseinstellungen anzeigen. Weitere Informationen findest du unter Überprüfen der Builds Ihrer Organisation auf den linked artifacts page.
Entfernen unerwünschter Datensätze
Es ist nicht möglich, ein Artefakt aus der linked artifacts page zu löschen. Sie können jedoch einen Speicherdatensatz oder Bereitstellungsdatensatz aktualisieren, um den Status eines Artefakts widerzuspiegeln. Weitere Informationen findest du unter Entfernen von Artefakten aus dem linked artifacts page.
GitHub Actions beispiele
Sie können Daten in das linked artifacts page im gleichen Workflow hochladen, den Sie zum Veröffentlichen und Erstellen eines Artefakts verwenden.
Generieren eines Nachweises
Im folgenden Beispiel erstellen und veröffentlichen wir ein Docker-Image und verwenden dann die ${{ steps.push.outputs.digest }} Ausgabe im nächsten Schritt, um einen Provenienznachweis zu generieren.
Die attest-Aktion lädt automatisch einen Storage-Datensatz in die linked artifacts page hoch, wenn push-to-registry: true festgelegt ist und der Workflow die Berechtigung artifact-metadata: write enthält.
env:
IMAGE_NAME: my-container-image
ACR_ENDPOINT: my-registry.azurecr.io
jobs:
generate-build:
name: Build and publish Docker image
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
attestations: write
packages: write
artifact-metadata: write
steps:
- name: Build and push Docker image
id: push
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
with:
context: .
push: true
tags: |
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:latest
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
- name: Generate artifact attestation
uses: actions/attest@v4
with:
subject-name: ${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true
Verwenden der REST-API
Alternativ können Sie die Artefaktmetadaten-API direkt aufrufen, wenn Sie keinen Nachweis generieren.
env:
IMAGE_NAME: my-container-image
IMAGE_VERSION: 1.1.2
ACR_ENDPOINT: my-registry.azurecr.io
jobs:
generate-build:
name: Build and publish Docker image
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
packages: write
artifact-metadata: write
steps:
- name: Build and push Docker image
id: push
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
with:
context: .
push: true
tags: |
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:latest
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
- name: Create artifact metadata storage record
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
jq -n --arg artifactName "${{ env.IMAGE_NAME }}" --arg artifactVersion "${{ env.IMAGE_VERSION }}" --arg artifactDigest "${{ steps.push.outputs.digest }}" '{"name": $artifactName, "digest": $artifactDigest, "version": $artifactVersion, "registry_url": "https://azurecr.io", "repository": "my-repository"}' > create-record.json
gh api -X POST orgs/${{ github.repository_owner }}/artifacts/metadata/storage-record --input create-record.json
shell: bash
Nächste Schritte
Nachdem Sie Daten hochgeladen haben, können Teams in Ihrer Organisation den Kontext aus Speicher- und Bereitstellungsdaten verwenden, um Sicherheitswarnungen zu priorisieren. Weitere Informationen findest du unter Priorisieren von Dependabot- und Codeüberprüfungswarnungen mithilfe des Produktionskontexts.