Skip to main content

Verwenden von Artefaktnachweisen und wiederverwendbaren Workflows zum Erreichen von SLSA v1 Build Level 3

Das Erstellen von Software mit wiederverwendbaren Workflows und Artefaktnachweisen kann Ihre Lieferkettensicherheit optimieren und Ihnen helfen, SLSA v1.0 Build Level 3 zu erreichen.

Voraussetzungen

Bevor Sie mit dieser Anleitung beginnen, sollten Sie mit den folgenden Themen vertraut sein:

Schritt 1: Konfigurieren Ihrer Builds

Zunächst müssen wir sowohl Artefaktnachweise als auch einen wiederverwendbaren Workflow erstellen.

Erstellen mit einem wiederverwendbaren Workflow

Wenn Sie für die Erstellung Ihrer Software noch keinen wiederverwendbaren Workflow verwenden, müssen Sie Ihre Erstellungsschritte in einen wiederverwendbaren Workflow übertragen.

Erstellen mit Artefaktnachweisen

Der wiederverwendbare Workflow, den Sie zur Erstellung Ihrer Software verwenden, muss auch Artefaktnachweise erstellen, um die Herkunft des Builds zu belegen.

Wenn Sie einen wiederverwendbaren Workflow verwenden, um Artefaktnachweise zu erstellen, müssen sowohl der aufrufende Workflow als auch der wiederverwendbare Workflow über die folgenden Berechtigungen verfügen.

YAML
permissions:
  attestations: write
  contents: read
  id-token: write

Wenn Sie Containerimages erstellen, müssen Sie auch die packages: write-Berechtigung einschließen.

Schritt 2: Überprüfen von Artefaktenachweisen, die mit einem wiederverwendbaren Workflow erstellt wurden

Um die mit Ihren Builds erzeugten Artefaktnachweise zu überprüfen, können Sie gh attestation verify aus der GitHub CLI verwenden.

Der gh attestation verify-Befehl erfordert entweder die Verwendung von --owner- oder --repo-Flags. Diese Flags führen zwei Dinge aus.

  • Sie teilen gh attestation verify mit, woher der Nachweis zu holen ist. Dies ist immer Ihr aufrufender Workflow.
  • Sie teilen gh attestation verify mit, woher der Workflow stammt, der die Unterschrift geleistet hat. Dies ist immer der Workflow, der eine attest-build-provenance-Aktion verwendet, was möglicherweise ein wiederverwendbarer Workflow ist.

Sie können optionale Flags mit dem Befehl gh attestation verify verwenden.

  • Wenn sich Ihr wiederverwendbarer Workflow nicht im selben Repository wie der aufrufende Workflow befindet, verwenden Sie das Flag --signer-repo, um das Repository anzugeben, das den wiederverwendbaren Workflow enthält.
  • Wenn Sie möchten, dass ein Artefaktnachweis mit einem bestimmten Workflow signiert wird, verwenden Sie das Flag --signer-workflow, um die zu verwendende Workflow-Datei anzugeben.

Wenn Ihr aufrufender Workflow ORGANIZATION_NAME/REPOSITORY_NAME/.github/workflows/calling.yml ist und REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml verwendet, könnten Sie zum Beispiel Folgendes tun:

Bash
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY

Oder wenn Sie den genauen Workflow angeben möchten:

Bash
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY