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.

Einführung

Mit Artefaktnachweisen können Sie fälschungssichere Herkunfts- und Integritätsgarantien für die von Ihnen entwickelte Software erstellen.

Denken Sie aber daran, dass Artefaktenachweise Links enthalten, wie z. B. die Buildanweisungen, mit denen ein Artefakt erstellt wurde, das SLSA v1.0 Build Level 2 erfüllt. Um eine fundierte Risikoentscheidung zu treffen, müssen Sie diesen Links folgen und diese Buildanweisungen auswerten.

Sie können noch einen Schritt weiter gehen, indem Sie verlangen, dass Builds bekannte, geprüfte Build-Anweisungen verwenden. Eine gute Möglichkeit, dies zu erreichen, ist, dass Ihr Build in einem wiederverwendbaren Workflow stattfindet, den viele Repositories in Ihrem Unternehmen gemeinsam nutzen. Wiederverwendbare Workflows können eine Isolierung zwischen dem Build-Prozess und dem aufrufenden Workflow bieten, um SLSA v1.0 Build Level 3 zu erfüllen.

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. Weitere Informationen zum Schreiben und Aufrufen eines wiederverwendbaren Workflows findest du unter Wiederverwenden von Workflows.

Erstellen mit Artefaktnachweisen

Der wiederverwendbare Workflow, den Sie zur Erstellung Ihrer Software verwenden, muss auch Artefaktnachweise erstellen, um die Herkunft des Builds zu belegen. Weitere Informationen finden Sie unter Verwenden von Artefaktnachweisen zur Ermittlung der Herkunft von Builds.

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

Zusammenfassung

Sie erstellen und signieren jetzt Ihre Artefakte in einem wiederverwendbaren Workflow, der die von SLSA v1.0 Build Level 3 erforderliche Isolation bereitstellen kann. Sie können überprüfen, ob Artefakte mit bekannten, überprüften Build-Anweisungen erstellt wurden, indem Sie verlangen, dass Ihr Artefakt mit einem bestimmten wiederverwendbaren Workflow erstellt wurde oder nicht.