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:
- Generieren von Artefaktnachweisen. Weitere Informationen findest du unter Verwenden von Artefaktnachweisen zur Ermittlung der Herkunft von Builds.
- Schreiben und Verwenden wiederverwendbarer Workflows. Weitere Informationen findest du unter Wiederverwenden von Workflows.
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.
permissions: attestations: write contents: read id-token: write
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 eineattest-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:
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
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:
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
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.