Die linked artifacts page umfasst Speicher- und Bereitstellungseinträge 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 Aktion 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.
Bestätigung mit GitHub Actions
Sie können einen Speicherdatensatz für ein Artefakt mithilfe von GitHub's First-Party-Aktionen für Artefaktnachweise 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 Aktionen attest und attest-build-provenance erstellen automatisch Speicherdatensätze auf der linked artifacts page, wenn beide:
- 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 Artefaktbestätigungen zur Bestimmung 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 bidirektionale Integration aktualisiert automatisch Ihre Speicheraufzeichnungen auf GitHub 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 befindet sich in der Phase öffentliche Vorschau und kann sich noch ändern.
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üfung der Builds Ihrer Organisation auf den linked artifacts page.
Entfernen unerwünschter Datensätze
Es ist nicht möglich, ein Artefakt aus den linked artifacts pagezu 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-build-provenance Aktion lädt automatisch ein Speicherprotokoll in die linked artifacts page hoch, wenn push-to-registry: true gesetzt ist und der Workflow die artifact-metadata: write Berechtigung umfasst.
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-build-provenance@v3
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.