Skip to main content

** Speicher- und Bereitstellungsdaten in das linked artifacts page hochladen

Ordnen Sie Pakete und Builds in Ihrer Organisation Speicher- und Bereitstellungsdaten zu.

Wer kann dieses Feature verwenden?

Anyone with write access to an organization-owned repository

Organization accounts on any plan

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-registry Einstellung ist auf true
  • Der Workflow, der die Aktion enthält, verfügt über die artifact-metadata: write Berechtigung

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.